数字图像处理中的直方图均衡化
在数字图像处理中,直方图均衡化是一个增强图像对比度和提高图像视觉质量的过程。我们可以使用MATLAB等数字工具来执行直方图均衡化。本教程旨在通过使用MATLAB来解释数字图像处理中的直方图均衡化。但在讲解之前,让我们先对直方图均衡化有一个基本的了解。
什么是直方图均衡化?
如上所述,直方图均衡化是一种提高数字图像对比度和视觉质量的技术。直方图均衡化更均匀地重新分布图像中像素强度的值。总的来说,直方图均衡化是一种平衡图像像素强度的技术。
直方图是一个图表或图形,显示图像中像素强度值的频率分布。
图像的直方图均衡化涉及几个不同的过程,例如计算累积分布函数 (CDF)、变换函数,然后应用这些函数来均衡图像。
直方图均衡化广泛应用于各个领域,例如增强医学图像、卫星图像、扫描文档等等。
现在,让我们了解一些关于直方图均衡化的重要点,在将它应用于图像时这些点非常重要。
关于直方图均衡化的重要点
以下是一些我们在图像处理中使用它时应牢记的关键点
直方图均衡化是一个全局图像增强过程,因为它利用整个图像的直方图来执行增强。
直方图均衡化并非增强所有类型图像视觉质量的合适技术,因为它可能会产生不真实的增强效果。
直方图均衡化被认为是增强低对比度图像的有效方法。
现在,让我们看看使用MATLAB进行直方图均衡化所涉及的步骤。
如何使用MATLAB执行直方图均衡化?
在MATLAB中,有一个内置函数“histeq”,用于执行灰度图像的直方图均衡化。
下面解释了使用MATLAB执行直方图均衡化的分步过程
步骤 (1) - 使用“imread”函数读取输入图像。
img = imread('Image.jpg');
步骤 (2) - 将输入图像转换为灰度图像进行处理。按如下方式操作:
gray_img = rgb2gray(img);
步骤 (3) - 使用“histeq”函数执行灰度图像的直方图均衡化。按如下方式操作:
eq_img = histeq(gray_img);
步骤 (4) - 显示均衡后的图像。按如下方式操作:
imshow(eq_img);
因此,在MATLAB中,使用“histeq”函数进行直方图均衡化是一个简单的四步过程。
现在让我们举一些例子来实际理解并查看结果,看看直方图均衡化如何作用于图像。
MATLAB在数字图像处理中执行直方图均衡化的示例
如果您想了解如何在MATLAB中实现代码以在数字图像处理中执行直方图均衡化,请浏览以下示例。
示例 (1)
% MATLAB code to perform histogram equalization % Read the input image img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425236.jpg'); % Convert the input image to grayscale gray_img = rgb2gray(img); % Perform histogram equalization using the “histeq” function eq_img = histeq(gray_img); % Display the original gray image, histogram of gray image, histogram of equalized image, and equalized image subplot(2, 2, 1); imshow(gray_img); title('Original Image'); subplot(2, 2, 2); imhist(gray_img); title('Histogram of Gray Image'); subplot(2, 2, 3); imhist(eq_img); title('Histogram of Equalized Image'); subplot(2, 2, 4); imshow(eq_img); title('Equalized Image');
输出
代码说明
在这个MATLAB代码中,我们首先读取输入图像,这是一个RGB图像。因此,接下来我们将它转换为灰度图像进行处理。之后,我们对图像进行直方图均衡化以增强其视觉效果。这是通过使用“histeq”函数完成的。最后,我们显示原始灰度图像及其直方图,以及均衡后的图像及其直方图。这些输出如上图所示。
为了更好地理解,让我们再用不同的图像举个例子。
示例 (2)
% MATLAB code to perform histogram equalization % Read the input image img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425269.jpg'); % Convert the input image to grayscale gray_img = rgb2gray(img); % Perform histogram equalization using the “histeq” function eq_img = histeq(gray_img); % Display the original gray image, histogram of gray image, histogram of equalized image, and equalized image subplot(2, 2, 1); imshow(gray_img); title('Original Image'); subplot(2, 2, 2); imhist(gray_img); title('Histogram of Gray Image'); subplot(2, 2, 3); imhist(eq_img); title('Histogram of Equalized Image'); subplot(2, 2, 4); imshow(eq_img); title('Equalized Image');
输出
结论
总而言之,直方图均衡化是一种图像处理方法,用于提高图像的对比度和视觉质量。这种图像处理技术分析并重新分布图像中的像素强度值,以获得更均衡的强度级别。
在本教程中,我已经详细解释了使用MATLAB进行直方图均衡化的概念。此外,我还包含了MATLAB编程中的示例程序,以便更好地了解执行图像直方图均衡化的代码实现。您可以使用您自己的图像尝试这些代码。