matlab直⽅图规定化,直⽅图规定化
直⽅图
直⽅图的观看规则就是“左⿊右⽩”,左边代表暗部,右边代表亮部,⽽中间则代表中间调。
纵向上的⾼度代表像素密集程度,越⾼,代表的就是分布在这个亮度上的像素很多。
对于⼀张“正常”的照⽚来说,直⽅图应该是中间⾼两边低。
这张照⽚就是如此。
这张照⽚的直⽅图显⽰的信息可以这样分析:照⽚的最左侧有⾼度,但是很少。这说明这张照⽚有阴影,但不多。最右边也有⾼度,说明有⾼光,同样很少。这就是⼀张最正常不过的照⽚了,它的直⽅图就是这样的,可以称之为“对⽐度正常的中间调”。
直⽅图规定化
直⽅图均衡化能够⾃动增强整个图像的对⽐度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直⽅图。实际上有时需要变换直⽅图,使之成为某个特定的形状,从⽽有选择地增强某个灰度值范围内的对⽐度。
这时可以采⽤⽐较灵活的直⽅图规定化。⼀般来说正确地选择规定化的函数可以获得⽐直⽅图均衡化更好的效果.
所谓直⽅图规定化,就是通过⼀个灰度映像函数,将原灰度直⽅图改造成所希望的直⽅图。所以,直
⽅图修正的关键就是灰度映像函数。
例如:Pr (r)为原图像的灰度密度函数, Pz (z)为希望得到的增强图像的灰度密度函数,⼆者的直⽅图如下:
直⽅图规定化增强处理的步骤如下:
其增强原理是先对原始的直⽅图均衡化:S = T(r)
同时对规定的直⽅图均衡化:v = G(z)
由于都是均衡化,故令 S = v,则:z = G-1(v) = G-1[T(r)]原理:
在Matlab中没有直接实现灰度规定化的函数。
但是我们可以通过imhist和histeq两个函数的结合使⽤来实现。
直⽅图规定化⾸先也得求灰度图像的灰度级数的概率密度和累计分布函数,得到原始图像和模板图像的灰度累计分布函数直⽅图后(这⾥的模板的灰度级数N和原始图像的灰度级数M我们只讨论M>=N的情况),有两种⽅式将模板灰度分布特征映射到原始图像中。⼀是单映射规则(SML),⼆是组映射规则(GML)。
单映射规则(SML)
matlab直方图
单映射规则具体操作步骤如下:对⼀原始图像的每个灰度级数i的灰度累计分布函数(nor_I_hist(i))与模板图像灰度级数灰度累计分布函数值(nor_M_hist(i))作差值后取绝对值运算,⽐较运算得到的结果,差值绝对值的最⼩值对应的最⼩位置便是原始图像映射到模板图像的灰度值。
2.组映射规则(GML)
组映射也是先求出原始图像和模板图像的累计分布函数直⽅图。在此基础上,与单映射相反,组映射是⽤模板图像中每个灰度级的累计分布函数(灰度直⽅图概率密度为0的灰度级除外)依次与原始图像的所有累计分布函数值作差,在所有差值中出绝对值最⼩值所对应的原始图像灰度级,将该灰度级与
上⼀次映射灰度级之间的原始图像灰度级都映射为模板图像中与之差值绝对值最⼩的灰度级。
阐述完上述原理后,我们通过基于Matlab的编程来进⼀步验证我们⽅法的正确性。
SML结果:
GML结果: