使用 MATLAB 在图像处理中进行自适应直方图均衡化
直方图均衡化是一种在图像处理中用于改善直方图动态范围的方法。这种数学技术广泛用于在数字图像处理中增强图像的对比度。该技术提供了图像中像素值的更广泛和均衡的分布。直方图均衡技术的基本工作原理是增强图像中亮度值的范围,使其更具视觉吸引力。
自适应直方图均衡化 (AHE) 简介
在数字图像处理中,自适应直方图均衡化 (AHE)是一种用于增强图像对比度的方法。自适应直方图均衡技术不同于传统的直方图均衡,它首先将图像划分为较小的子区域,然后通过对每个子区域分别应用直方图均衡技术来增强图像的对比度。
因此,自适应直方图均衡技术可在图像中提供局部对比度增强。因此,在图像具有变化的照明条件的情况下,这成为一种更有效的技术。
自适应直方图均衡的优势
自适应直方图均衡在数字图像处理中具有多种优势。这里列出了其中的一些:
自适应直方图均衡化通过改善更大范围内的亮度水平来增强图像的对比度。
自适应直方图均衡化在图像中提供局部对比度增强,这在亮度水平变化的图像中非常有用。
自适应直方图均衡化可以提高在低光照条件、亮度水平变化等环境中捕获的图像的整体可见性。
用于自适应直方图均衡化的 MATLAB 函数
以下 MATLAB 函数用于编写 MATLAB 代码,以通过使用自适应直方图均衡化来增强图像的对比度:
imread():这是一个用于读取图像的内置 MATLAB 函数。
size():这是一个用于确定图像大小的 MATLAB 函数。
rgb2gray():这也是一个内置的 MATLAB 函数,用于将 RGB 图像转换为灰度图像。
adapthisteq():这是 MATLAB 中用于对图像执行自适应直方图均衡化的内置函数。
imshow():这是一个用于显示图像的 MATLAB 函数。
MATLAB 程序示例
以下是一个 MATLAB 程序示例,用于说明如何在图像处理中执行自适应直方图均衡化:%MATLAB 代码用于在图像处理中执行自适应直方图均衡化 % 调用imread() 函数读取需要增强的图像 img = imread('https://www.tutorialspoint.com/assets/questions/media/14304-1687425236.jpg'); % 调用 size() 和 rgb2gray() 函数获取大小并在必要时将图像转换为灰度 if size(img, 3) == 3 img = rgb2gray(img); end % 调用 adapthisteq() 函数执行自适应直方图均衡化 enhanced_img = adapthisteq(img); % 调用 imshow() 函数显示原始图像和增强图像 figure; subplot(1, 2, 1); imshow(img); title('原始图像'); subplot(1, 2, 2); imshow(enhanced_img); title('增强图像');
输出
结论
在此 MATLAB 程序中,我们首先调用"imread()"函数读取输入图像。然后,我们调用"size() 和 rgb2gray()"函数获取大小并将彩色图像转换为灰度。之后,我们调用"adapthisteq()"函数对图像执行自适应直方图均衡化。此函数自动将整个图像划分为较小的区域,然后分别对每个区域应用直方图均衡化。最后,我们调用"imshow()"函数显示原始图像和增强图像。