实现直方图均衡化子程序function i=myhisteq(img),且对它进行调用与对比实验
时间: 2023-10-02 11:02:12 浏览: 53
直方图均衡化是一种用来增强图像对比度的方法,通过图像像素的灰度分布特征进行调整,使得图像的灰度值分布更加均匀。下面给出实现直方图均衡化的子程序function i=myhisteq(img)的详细步骤,并对其进行调用与对比实验。
1. 首先,读取图像img,并获得图像的宽度W和高度H。
2. 创建一个长度为256的数组hist,用于存储图像的灰度值分布。
3. 遍历图像的每个像素,统计每个灰度值出现的次数,并将结果保存在hist数组中。
4. 创建一个长度为256的累积分布数组cdf,用于存储hist数组的累积分布。
5. 对数组cdf进行归一化处理,即将数组元素除以总像素数W*H,得到归一化的累积分布。
6. 创建一个长度为256的映射数组map,用于存储每个灰度值在均衡化后的映射灰度值。
7. 遍历累积分布数组cdf,将每个累积分布乘以255,并对结果进行四舍五入操作,得到对应的映射灰度值,保存在map数组中。
8. 创建一个与原始图像大小相同的新图像new_img,用于存储均衡化后的图像。
9. 遍历原始图像的每个像素,将每个像素的灰度值替换为map数组中对应的映射灰度值,并将结果保存在new_img中。
10. 返回新图像new_img。
调用对比实验:
我们可以选择两种不同的图像进行直方图均衡化的对比实验,例如一张对比度较低的暗淡图像和一张对比度较高的明亮图像。
1. 首先,读取暗淡图像并调用myhisteq(img)函数获取均衡化后的图像new_img1。
2. 同样,读取明亮图像并调用myhisteq(img)函数获取均衡化后的图像new_img2。
3. 分别显示原始图像、均衡化后的图像new_img1和new_img2,并进行对比。
4. 观察图像对比度的明显变化,判断直方图均衡化是否有效。
5. 可以尝试使用不同的图像进行实验,对比不同的参数设置,观察对比度变化情况。