MATLAB实现图像直方图均衡化与双方法比较

需积分: 15 1 下载量 192 浏览量 更新于2024-09-15 收藏 18KB DOCX 举报
直方图均衡化是一种常见的图像增强技术,用于改善图像的对比度和视觉效果。在MATLAB中,我们可以使用内置的`histeq`函数或者根据直方图均衡化的原理自定义函数来实现这一过程。以下是两种方法的详细解释: 方法一:利用MATLAB内置函数 1. 首先,通过`imread`函数读取图像文件,例如`'f:\xx.jpg'`,并将其转换为灰度图像,如果原图已经是黑白的则跳过此步骤。 2. 使用`histeq`函数对图像进行直方图均衡化,它会自动调整像素的灰度分布,使整个图像的亮度更加均匀。 3. 使用`imshow`函数分别显示原图像和处理后的图像,并添加相应的标题以区分。 4. 使用`imhist`函数分别展示原图像和均衡化后的图像的直方图,直观地展示灰度级像素分布的变化。 方法二:自定义函数实现直方图均衡化 1. 读入图片,如`tuu`,并将其转换为灰度图像。 2. 创建四个大小为256的矩阵(`graydis`、`graydispro`、`new_graydis`和`new_graydispro`)来存储原始直方图、概率密度、累计直方图以及新的灰度映射关系。 3. 遍历图像的每个像素,计算原始直方图(灰度级像素计数)和概率密度。 4. 计算累计直方图,以便于找到新的灰度值与原始灰度之间的映射关系。 5. 根据累计直方图计算新的灰度值,创建一个新的灰度图像`new_tu`,这一步相当于调整了像素的灰度值分布。 6. 最后,绘制原始灰度直方图和新图像的直方图,以便比较前后变化。 直方图均衡化的核心思想是改变图像的灰度分布,使得图像的暗部和亮部都有更多的像素,从而提高对比度,使图像细节更易于观察。无论哪种方法,直方图均衡化都能有效地增强图像的视觉效果,尤其在低对比度或偏暗的图像处理中。通过上述两种方式,学习者可以深入理解直方图均衡化的过程,并掌握如何在MATLAB环境中进行实际操作。