MATLAB中的平衡对比增强技术


在数字图像处理中,对比度增强是一种用于提高图像视觉质量的关键技术。对比度增强技术调整像素的强度,以增加亮度级别的范围,并突出图像中明亮和黑暗区域之间的差异。

MATLAB 提供多种对比度增强技术,但在本文中,我们将重点关注平衡对比度增强技术,并了解其在 MATLAB 编程中的实现。

什么是平衡对比度增强?

在 MATLAB 中,平衡对比度增强技术是一种改进数字图像对比度比的现代方法。此技术同时增强局部和全局对比度,从而达到平衡。因此,此技术可提供高视觉质量和改进的可解释性。

平衡对比度增强技术基于以下所示的抛物线函数

y = a * (x - b).^2 + c

其中,y 是输出图像,x 是输入图像,a、b 和 c 是三个系数,分别由“输出图像的最小强度值”、“输出图像的最大强度值”和“输出图像的平均值”导出。

下面的 MATLAB 程序展示了在 MATLAB 中实现“平衡对比度增强”技术。

示例

% MATLAB program to demonstrate the balance contrast enhancement technique.
% Read the input image that has to be enhanced
img = imread('https://tutorialspoint.com/assets/questions/media/14304-1687425236.jpg');
% Display the original input image
figure, subplot(1, 2, 1), imshow(img); title('Original Image');
% Convert the input image from 8-bit unsigned integer format to double format for processing
img1 = double(img);
% Calculate different statistics of the input image
Imin = min(img1(:)); 		% Minimum intensity value of input image
Imax = max(img1(:));		% Maximum intensity value of input image
Imean = mean(img1(:));		% Mean intensity value of input image
Imssum = mean(img1(:).^2);	% Mean square sum of intensity value of input image
% Define the desired characteristics of the output image
Omin = 0; % Minimum intensity value of output image
Omax = 255; % Maximum intensity value of output image
Omean = 120; % Mean intensity value of output image
% Calculate the numerator and denominator to compute the coefficient “b”
bnum = Imax.^2 * (Omean - Omin) - Imssum * (Omax - Omin) + Imin.^2 * (Omax - Omean);
bden = 2 * (Imax * (Omean - Omin) - Imean * (Omax - Omin) + Imin * (Omax - Omean));
% Compute the value of the coefficient “b”
b = bnum/bden;
% Calculate the coefficient “a” of the parabolic function
a = (Omax - Omin)/((Imax - Imin) * (Imax + Imin - 2 * b));
% Calculate the coefficient “c” of the parabolic function
c = Omin - a * (Imin - b).^2;
% Apply the parabolic function to the input image “img1” to obtain the output image “img2”
img2 = a * (img1 - b).^2 + c;
% convert the output image back to the 8-bit unsigned integer format
img2 = uint8(img2);
% Display the enhanced image with a title Enhanced Image
subplot(1,2, 2), imshow(img2); title('Enhanced Image');

输出

结论

在这个 MATLAB 程序中,我们首先使用“imread”函数输入图像并将其存储在变量“img”中。接下来,我们调用“figure”、“subplot”和“imshow”函数以显示标题为“原始图像”的原始输入图像。

之后,我们将输入图像从 8 位无符号整数格式转换为浮点格式以允许分数计算,并将此转换后的图像存储在新变量“img1”中。然后,我们计算输入图像的不同特征,例如最小强度 (Imin)、最大强度 (Imax)、平均强度 (Imean) 和强度的均方和 (Imssum)。

接下来,我们指定输出图像的不同特征,例如最小强度 (Omin)、最大强度 (Omax) 和平均强度 (Omean)。然后,我们计算抛物线函数的分子 (bnum)、分母 (bden) 和系数 b。

之后,我们计算抛物线函数的系数“a”和“c”的值。然后,我们将参数“a”、“b”、“c”、“img1”的值代入抛物线函数,以从输入图像“img1”获得输出图像“img2”。

最后,我们使用“subplot”、“imshow”函数显示增强的输出图像,标题为“增强图像”。

这就是我们在 MATLAB 中实现图像平衡对比度增强技术的方法。

更新于:2023年7月18日

浏览量:137

开启您的职业生涯

完成课程获得认证

开始学习
广告