直方圖均衡,這里不寫公式,只看怎么算
一.手算直方圖均衡
例如一個矩陣
\[源矩陣= \left[ \begin{matrix} 4&4&4&4&4&4&4&0\\ 4&5&5&5&5&5&4&0\\ 4&5&6&6&6&5&4&0\\ 4&5&6&7&6&5&4&0\\ 4&5&6&6&6&5&4&0\\ 4&5&5&5&5&5&4&0\\ 4&4&4&4&4&4&4&0\\ 4&4&4&4&4&4&4&0\\ \end{matrix} \right] \]
由題意或矩陣分析,該矩陣的灰度值范圍是[0,7]
現在,統計計算各灰度值數量、概率、累計概率
映射后的灰度值計算=最大灰度值差*當前累計概率
由於灰度值為正數,所以最后要取整
| 灰度值 | 數量 | 概率 | 累計概率 | 映射后的灰度值 | 取整 |
|---|---|---|---|---|---|
| P(h=0) | 8 | 0.125 | 0.125 | 7*0.125=0.875 | 1 |
| P(h=1) | 0 | 0 | 0.125 | 7*0.125=0.875 | 1 |
| P(h=2) | 0 | 0 | 0.125 | 7*0.125=0.875 | 1 |
| P(h=3) | 0 | 0 | 0.125 | 7*0.125=0.875 | 1 |
| P(h=4) | 31 | 0.484375 | 0.609375 | 7*0.609375=0.4.265625 | 4 |
| P(h=5) | 16 | 0.25 | 0.859375 | 7*0.859375=6.015625 | 6 |
| P(h=6) | 8 | 0.125 | 0.984375 | 7*0.125=6.890625 | 7 |
| P(h=7) | 1 | 0.015625 | 1 | 7*1=7 | 7 |
\[直方圖均衡化后= \left[ \begin{matrix} 4&4&4&4&4&4&4&1\\ 4&6&6&6&6&6&4&1\\ 4&6&7&7&7&6&4&1\\ 4&6&7&7&7&6&4&1\\ 4&6&7&7&7&6&4&1\\ 4&6&6&6&6&6&4&1\\ 4&4&4&4&4&4&4&1\\ 4&4&4&4&4&4&4&1\\ \end{matrix} \right] \]
二.matlab直方圖均衡
方法一
- histeq(mat):對矩陣進行直方圖均衡化
- hist(mat):對矩陣進行直方圖顯示
- imhist(mat):對矩陣進行直方圖顯示
對於hist和imhist區別目前不知道,只是當自定義小矩陣用imhist顯示直方圖不成功,用hist能夠顯示成功
方法二
- imadjust(img,[low_in,high_in],[low_out,high_out],gamma)
- -[low_in,high_in]:需要擴展的范圍,歸一化值,即[0,1]
- -[low_out,high_out]:擴展到這個范圍,同上
- -gamma:映射方式(系數)
<1變亮;
1:變暗;
=1:(默認值);
