直方圖均衡化的計算以及MATLAB實現


直方圖均衡,這里不寫公式,只看怎么算

一.手算直方圖均衡

例如一個矩陣

\[源矩陣= \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:(默認值);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM