直方图均衡化的计算以及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实现的主要内容,如果未能解决你的问题,请参考以下文章

数字图像处理直方图均衡化与规定化

直方图均衡化及matlab实现

matlab全局直方图均衡化和局部直方图均衡化的优缺点

matlab histeq函数如何做成直方图规定化?

一文搞懂直方图均衡

MATLAB与图像处理的那点小事儿~