直方图均衡化的计算以及MATLAB实现

直方图均衡,这里不写公式,只看怎么算

一.手算直方图均衡

例如一个矩阵

[源矩阵= left[ egin{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} ight] ]

由题意或矩阵分析,该矩阵的灰度值范围是[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[ egin{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} ight] ]

二.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:(默认值);

原文地址:https://www.cnblogs.com/thgpddl/p/12523173.html