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 中实现图像平衡对比度增强技术的方法。