MATLAB实现图像直方图均衡化

需积分: 12 8 下载量 70 浏览量 更新于2024-09-16 1 收藏 412KB DOC 举报
"这篇文章提供了一个基于MATLAB的直方图均衡化代码示例,用于处理灰度图像,实现图像增强。" 直方图均衡化是一种常见的图像处理技术,主要用于改善图像的对比度,特别是在图像中大部分像素集中在少数灰度级的情况。在MATLAB中,通过分析图像的灰度直方图并进行相应的转换,可以实现这一过程。 1. 图像预处理 在代码开始部分,首先读取一个彩色图像,并使用`rgb2gray`函数将其转化为灰度图像。`imread`用于读取图像,`imshow`用于显示图像,`imwrite`用于保存灰度图像。这一步骤是将复杂的彩色信息简化为单一的灰度值,便于后续处理。 2. 绘制直方图 `size`函数用于获取图像的尺寸,`find`函数用于找出图像中特定灰度值的像素数量,然后计算每级灰度值出现的概率。这个概率被存储在一个名为`GP`的向量中。接着,用`bar`函数绘制原始图像的直方图,直观展示灰度值与出现概率的关系。 3. 直方图均衡化 这是关键步骤,首先创建一个新的向量`S1`来存储累积概率分布,然后通过遍历`GP`并计算累积概率,得到`S2`。`S2`表示每个灰度级对应的新灰度值。接下来,计算新的灰度概率分布`GPeq`,它表示均衡化后每个灰度值出现的概率。 4. 图像均衡化 最后,遍历原始图像的每一个像素,根据`S2`将每个像素的灰度值映射到新的灰度值,完成图像的均衡化。使用`imshow`显示均衡化后的图像,并再次使用`imwrite`保存结果。 直方图均衡化的核心在于,它通过重新分配灰度级,使得图像的灰度分布更均匀,从而提高了图像的局部对比度,使细节更加明显。这种技术在医学成像、遥感图像处理等领域有着广泛应用。在MATLAB中,通过以上代码,用户可以方便地对灰度图像进行直方图均衡化处理,提升图像质量。