数字图像处理之直方图均衡化与匹配算法

来源:互联网 发布:mac os 10.13什么时候 编辑:程序博客网 时间:2024/06/13 08:00

本文为原创,有很多不足之处望斧正!

实验内容一

实现river.jpg 图像的直方图均衡,不能直接使用Matlab的histeq( )函数。将有关均衡图像和调用histeq( )函数的结果作比较。

实验原理及算法描述

直方图均衡化是通过把原图像的直方图经过变换函数修正为分布比较均匀的直方图,从而改变图像整体偏亮或偏暗,提高细节的对比度和辨识力,改善灰度层次不丰富的情况的技术。直方图均衡化过程解析:设r和s分别表示原图灰度级和均衡化后图像灰度级,对r和s进行归一化使。对于[0,1]区间的任一个r值进行如下变换,变换函数满足三个条件 在0<=r<=1的区间内T(r)单值增加,保证图像灰度级从白到黑的次序不变; 对于0<=r<=1,有0<=T(r)<=1,保证映射变换后的像素灰度值在允许范围;变换后的直方图均匀分布。

算法步骤:

1.统计原图像每个灰度级像素的个数
2.统计原图像小于每个灰度级的像素的累积个数
3.根据直方图均衡化的原理,建立灰度级映射规则
4.将原图每个像素点的灰度映射到新图

实验核心代码截图

这里写图片描述

实验结果截图

这里写图片描述

实验内容二

将图像 EightAM.png 的直方图匹配为图像 LENA.png 的直方图,显示EightAM.png在直方图匹配前后的图像,并绘制LENA.png的直方图、直方图匹配前后EightAM.png的直方图,检查直方图匹配的效果。

实验原理及算法描述

直方图匹配或直方图规定化,是把原图像的直方图按照给定的直方图加以映射,使新图像的直方图的分布类似于给定的函数的技术。直方图匹配属于非线性点运算,其原理为:对两个直方图都做均衡化,变成相同的归一化的均匀直方图,以此均匀直方图为媒介,再对参考图像做均衡化的逆运算。

算法实现如下:

1.求得灰度图像的灰度级数的概率密度和累计分布函数,得到原始图像和模板图像的灰度累计分布函数直方图
2.采用单映射规则将模板灰度分布特征映射到原始图像中。
单映射规则的操作步骤:对一原始图像的每个灰度级数的灰度累计分布函数与模板图像灰度级数灰度累计分布函数值作差值后取绝对值运算,比较运算得到的结果,差值绝对值的最小值对应的最小位置便是原始图像映射到模板图像的灰度值。

实验核心代码截图

这里写图片描述

实验结果截图

这里写图片描述

实验中遇到的问题、心得体会及总结

遇到最多的问题是matlab语法问题,比如数组下标从1开始,数据类型转换中zeros、ones默认类型为double表示范围[0,1],而uint8表示范围为[0,255],灰度图要用uint8类型否则显示不出图片。实验一利用histeq( )函数均衡化时要设定灰度级为256,否则显示的直方图与实现的差别较大。实验二中因映射方式的不同因此与histeq( )函数得到的图像相比有点差别。还有一点就是要注意变量的命名,像实验二中引用图片时区分谁匹配谁,提取图像中的直方图信息时的图片名称是否正确等。注意小细节,学好语法,打好基础,遇到问题多Google多尝试多思考。