直方图均衡化的计算以及MATLAB实现
Posted thgpddl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直方图均衡化的计算以及MATLAB实现相关的知识,希望对你有一定的参考价值。
直方图均衡,这里不写公式,只看怎么算
一.手算直方图均衡
例如一个矩阵
[源矩阵=
left[
egin{matrix}
4&4&4&4&4&4&4&04&5&5&5&5&5&4&04&5&6&6&6&5&4&04&5&6&7&6&5&4&04&5&6&6&6&5&4&04&5&5&5&5&5&4&04&4&4&4&4&4&4&04&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&14&6&6&6&6&6&4&14&6&7&7&7&6&4&14&6&7&7&7&6&4&14&6&7&7&7&6&4&14&6&6&6&6&6&4&14&4&4&4&4&4&4&14&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:(默认值);
以上是关于直方图均衡化的计算以及MATLAB实现的主要内容,如果未能解决你的问题,请参考以下文章