如何在 MATLAB 中执行彩色图像的对比度增强?


众所周知,MATLAB 是一款功能强大的图像处理和信号处理工具。我们可以用它来改变图像的不同参数,例如亮度、对比度、饱和度等等。在这篇文章中,我将解释如何使用 MATLAB 执行彩色图像的对比度增强。

什么是对比度增强?

在数字图像处理中,提高图像颜色和视觉质量的过程称为对比度增强。此技术通过改变图像不同区域的亮度和颜色浓度来提高图像质量。

  • 对比度增强用于使图像更具视觉吸引力,以便人眼能够轻松区分图像中的不同物体。

  • 彩色图像通常在 RGB 色彩空间中呈现。因此,彩色图像的对比度增强是通过分别改变每个颜色通道(即 RGB(红、绿和蓝))的对比度来完成的。

  • 在 MATLAB 中,我们可以使用多种技术来增强图像的对比度。其中一些技术包括直方图均衡化、对比度受限自适应直方图均衡化、直方图拉伸、增强滤波器、伽马校正等。

  • 彩色图像的对比度增强广泛应用于各种应用中,例如图像处理、摄影、遥感成像、医学成像等。

现在让我们学习如何使用 MATLAB 增强彩色图像的对比度。

MATLAB 中的彩色图像对比度增强

在 MATLAB 中,有多种可用的技术可以改善彩色图像的对比度。但在这里,我们将介绍三种常用的对比度增强技术,即“朴素算法”、“标准算法”和“使用 HSV 色彩空间”。

  • 在朴素算法中,彩色图像的对比度增强是通过直接调整 RGB 颜色通道的像素值来改变其强度来实现的。

  • 在标准算法中,对比度增强是通过使用直方图均衡化技术来执行的。

  • 在 HSV 色彩空间的情况下,彩色图像的对比度增强是通过调整强度值同时保持饱和度和色调分量不变来执行的。HSV 色彩空间方法增强了彩色图像的对比度,而不会改变其颜色。

现在让我们借助示例详细了解所有这些对比度增强方法。

使用朴素算法增强彩色图像的对比度

在朴素算法中,图像的对比度增强是通过直接更改图像颜色通道的像素值来执行的。

以下是使用 MATLAB 中的朴素算法增强彩色图像对比度的分步过程。

  • 步骤 (1) - 使用“imread”函数读取输入彩色图像。

  • 步骤 (2) - 从图像中分离 RGB 颜色通道。

  • 步骤 (3) - 指定一个因子来增强图像每个通道的对比度。

  • 步骤 (4) - 使用增强因子执行图像的对比度增强。

  • 步骤 (5) - 调整每个通道的像素值,以确保它们必须在颜色的有效范围内,即 [0, 255]。

  • 步骤 (6) - 通过组合所有增强的颜色通道获得增强的彩色图像。

  • 步骤 (7) - 显示结果。

我们可以按照这七个步骤使用 MATLAB 中的朴素算法增强彩色图像的对比度。

示例

以下是一个示例,演示了在 MATLAB 中使用朴素算法执行彩色图像对比度增强代码的实现。

% MATLAB code for contrast enhancement using Naïve algorithm
% Read the input color image
img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425269.jpg');

% Separate the RGB color channels of the image
r_channel = img(:, :, 1);
g_channel = img(:, :, 2);
b_channel = img(:, :, 3);

% Specify the enhancement factors for each color channel
r_factor = 1.25;
g_factor = 1.25;
b_factor = 1.25;

% Multiply pixel values with enhancement factors to perform contrast enhancement
enhanced_r_channel = r_channel * r_factor;
enhanced_g_channel = g_channel * g_factor;
enhanced_b_channel = b_channel * b_factor;

% Adjust pixel values to make them within the valid range
enhanced_r_channel = min(max(enhanced_r_channel, 0), 255);
enhanced_g_channel = min(max(enhanced_g_channel, 0), 255);
enhanced_b_channel = min(max(enhanced_b_channel, 0), 255);

% Obtain enhanced color image by combining all the enhanced channels
enhanced_color_img = cat(3, uint8(enhanced_r_channel), uint8(enhanced_g_channel), uint8(enhanced_b_channel));

% Display the original and enhanced color images
subplot(1, 2, 1);
imshow(img);
title('Original Color Image');

subplot(1, 2, 2);
imshow(enhanced_color_img);
title('Enhanced Color Image');

输出

运行此代码时,它将生成以下输出 -

使用标准算法增强彩色图像的对比度

我们还可以使用 MATLAB 中的标准算法执行彩色图像的对比度增强。在 MATLAB 中,标准算法使用直方图均衡化方法来改善彩色图像中的对比度级别。

下面解释了使用标准算法执行对比度增强的分步过程。

  • 步骤 (1) - 使用“imread”函数读取输入彩色图像。

  • 步骤 (2) - 从图像中分离 RGB 颜色通道。

  • 步骤 (3) - 使用直方图均衡化技术获得增强的颜色通道。

  • 步骤 (4) - 通过组合所有增强的通道获得增强的彩色图像。

  • 步骤 (5) - 显示结果。

示例

现在让我们看一个示例,了解使用 MATLAB 中的标准算法进行对比度增强代码的实现。

% MATLAB code to perform contrast enhancement using standard algorithm
% Read the input color image
img = imread('your_image.jpg');

% Separate RGB color channels from the image
r_channel = img(:, :, 1);
g_channel = img(:, :, 2);
b_channel = img(:, :, 3);

% Enhance each channel using the histogram equalization
enhanced_r_channel = histeq(r_channel);
enhanced_g_channel = histeq(g_channel);
enhanced_b_channel = histeq(b_channel);

% Obtain the enhanced color image by combining all the enhanced channels
enhanced_color_img = cat(3, enhanced_r_channel, enhanced_g_channel, enhanced_b_channel);

% Display the original and enhanced color images
subplot(1, 2, 1);
imshow(img);
title('Original Color Image');

subplot(1, 2, 2);
imshow(enhanced_color_img);
title('Enhanced Color Image');

输出

运行此代码时,它将生成以下输出 -

使用 HSV 色彩空间方法增强彩色图像的对比度

在 MATLAB 中,我们还可以使用 HSV 色彩空间增强彩色图像的对比度。在这种方法中,图像的对比度得到增强,而不会改变图像的色调和饱和度分量。

下面解释了使用 HSV 色彩空间方法执行对比度增强所涉及的步骤。

  • 步骤 (1) - 使用“imread”函数读取输入图像。

  • 步骤 (2) - 将图像从 RGB 色彩空间转换为 HSV 色彩空间。

  • 步骤 (3) - 从图像中分离 V(值)分量以执行对比度增强。

  • 步骤 (4) - 对 V 分量应用直方图均衡化以改善图像的对比度。

  • 步骤 (5) - 用增强的 V 分量替换原始 V 分量。

  • 步骤 (6) - 将图像从 HSV 色彩空间转换为 RGB 色彩空间。

  • 步骤 (7) - 显示增强的彩色图像。

示例

以下示例演示了如何使用 HSV 色彩空间方法在彩色图像中执行对比度增强。

% MATLAB code to perform contrast enhancement using HSV color space
% Read the input color image
img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425269.jpg');

% Convert the RGB image to HSV image
hsv_img = rgb2hsv(img);

% Separate the V component from the image
V = hsv_img(:, :, 3);

% Use histogram equalization to perform contrast enhancement
enhanced_V = histeq(V);

% Replace the original V component with the enhanced V component in the image
hsv_img(:, :, 3) = enhanced_V;

% Convert the enhanced image from HSV to RGB color space
enhanced_color_img = hsv2rgb(hsv_img);

% Display the original and enhanced color images
subplot(1, 2, 1);
imshow(img);
title('Original Color Image');

subplot(1, 2, 2);
imshow(enhanced_color_img);
title('Enhanced Color Image');

输出

运行此代码时,它将生成以下输出 -

结论

总之,我们可以使用 MATLAB 执行彩色图像的对比度增强。MATLAB 提供了多种方法来增强图像的对比度级别。在本教程中,我借助示例程序解释了对比度增强的分步过程。在所有这些示例中,我都使用了不需要对比度增强的示例图像。为了获得更好的结果,请将此图像替换为您自己的图像。

更新于: 2023 年 10 月 6 日

251 次查看

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告