matlab 直方图规定化,直方图规定化

直方图

直方图的观看规则就是“左黑右白”,左边代表暗部,右边代表亮部,而中间则代表中间调。

纵向上的高度代表像素密集程度,越高,代表的就是分布在这个亮度上的像素很多。

对于一张“正常”的照片来说,直方图应该是中间高两边低。

96ef2167aa1742fb72ed9f61c96e5d49.png

这张照片就是如此。

153b52b15ad3e2fbc3baa972655d1ff9.png

这张照片的直方图显示的信息可以这样分析:照片的最左侧有高度,但是很少。这说明这张照片有阴影,但不多。最右边也有高度,说明有高光,同样很少。这就是一张最正常不过的照片了,它的直方图就是这样的,可以称之为“对比度正常的中间调”。

直方图规定化

515c57811ffb25e6c4b58fea569c74e3.png

直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。

这时可以采用比较灵活的直方图规定化。一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果.

所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。所以,直方图修正的关键就是灰度映像函数。

例如:Pr (r)为原图像的灰度密度函数, Pz (z)为希望得到的增强图像的灰度密度函数,二者的直方图如下:

0_1276762369VD0K.gif

直方图规定化增强处理的步骤如下:

其增强原理是先对原始的直方图均衡化:S = T(r)

同时对规定的直方图均衡化:v = G(z)

由于都是均衡化,故令 S = v,则:z = G-1(v) = G-1[T(r)]

原理:

4e287864eda4ee978af56aadcc281d8c.png

b532b419ef1b77b42b6e1f067e45593b.png

e4e94ecdb3bcd2c6b65b23653fc985a9.png

30e7362e7d5e21e97df22051b89bc7b1.png

ab57e06ae2415c9c85ce8f4b78a0248e.png

de1695443a692be647ed7f7165a7fb3b.png

在Matlab中没有直接实现灰度规定化的函数。

但是我们可以通过imhist和histeq两个函数的结合使用来实现。

直方图规定化首先也得求灰度图像的灰度级数的概率密度和累计分布函数,得到原始图像和模板图像的灰度累计分布函数直方图后(这里的模板的灰度级数N和原始图像的灰度级数M我们只讨论M>=N的情况),有两种方式将模板灰度分布特征映射到原始图像中。一是单映射规则(SML),二是组映射规则(GML)。

单映射规则(SML)

单映射规则具体操作步骤如下:对一原始图像的每个灰度级数i的灰度累计分布函数(nor_I_hist(i))与模板图像灰度级数灰度累计分布函数值(nor_M_hist(i))作差值后取绝对值运算,比较运算得到的结果,差值绝对值的最小值对应的最小位置便是原始图像映射到模板图像的灰度值。

2.组映射规则(GML)

组映射也是先求出原始图像和模板图像的累计分布函数直方图。在此基础上,与单映射相反,组映射是用模板图像中每个灰度级的累计分布函数(灰度直方图概率密度为0的灰度级除外)依次与原始图像的所有累计分布函数值作差,在所有差值中找出绝对值最小值所对应的原始图像灰度级,将该灰度级与上一次映射灰度级之间的原始图像灰度级都映射为模板图像中与之差值绝对值最小的灰度级。

阐述完上述原理后,我们通过基于Matlab的编程来进一步验证我们方法的正确性。

SML结果:

c95d9315c0c958e9e50aafc7b5505f1d.png

GML结果:

a513f921038e6ea8b968fb67f31e9a92.png

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值