MATLAB 中的平衡对比度增强技术

matlabdata analysisprogramming

在数字图像处理中,对比度增强是用于改善图像视觉质量的重要技术。对比度增强技术调整像素的强度以增加亮度范围并突出显示图像明暗区域之间的差异。

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

什么是平衡对比度增强?

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

平衡对比度增强技术基于下面给出的抛物线函数:

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

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

以下 MATLAB 程序展示了 MATLAB 中"平衡对比度增强"技术的实现。

示例

% MATLAB 程序演示平衡对比度增强技术。
% 读取需要增强的输入图像
img = imread('https://www.tutorialspoint.com/assets/questions/media/14304-1687425236.jpg');
% 显示原始输入图像
figure, subplot(1, 2, 1), imshow(img); title('Original Image');
% 将输入图像从 8 位无符号整数格式转换为双精度格式以进行处理
img1 = double(img);
% 计算输入图像的不同统计数据
Imin = min(img1(:)); % 输入图像的最小强度值
Imax = max(img1(:)); % 输入图像的最大强度值
Imean = mean(img1(:)); % 输入图像的平均强度值
Imssum = mean(img1(:).^2); % 输入图像强度值的平均平方和
% 定义输出图像的所需特性
Omin = 0; % 输出图像的最小强度值
Omax = 255; % 输出图像的最大强度值
Omean = 120; % 输出图像的平均强度值
% 计算分子和分母以计算系数"b"
bnum = Imax.^2 * (Omean - Omin) - Imssum * (Omax - Omin) + Imin.^2 * (Omax - Omean);
bden = 2 * (Imax * (Omean - Omin) - Imean * (Omax - Omin) + Imin * (Omax - Omean));
% 计算系数"b"的值
b = bnum/bden;
% 计算抛物线函数的系数"a"
a = (Omax - Omin)/((Imax - Imin) * (Imax + Imin - 2 * b));
% 计算抛物线函数的系数"c"
c = Omin - a * (Imin - b).^2;
% 将抛物线函数应用于输入图像"img1",得到输出图像"img2"
img2 = a * (img1 - b).^2 + c;
% 将输出图像转换回 8 位无符号整数格式
img2 = uint8(img2);
% 显示带有标题增强图像的增强图像
subplot(1,2, 2), imshow(img2); title('增强图像');

输出

结论

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

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

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

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

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

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


相关文章