Main Content

使用直方图均衡化调整图像对比度

此示例说明如何使用直方图均衡化来调整灰度图像的对比度。

直方图均衡化包括变换强度值,以使输出图像的直方图近似匹配指定的直方图。默认情况下,直方图均衡化函数 histeq 会尝试匹配一个包含 64 个 bin 的平坦直方图,以使输出图像的像素值在整个范围内均匀分布。您也可以指定不同的目标直方图来匹配自定义对比度。

原始图像直方图

将灰度图像读入工作区。

I = imread("pout.tif");

显示图像及其直方图。原始图像的对比度低,大多数像素值在强度范围的中间位置。

figure
subplot(1,3,1)
imshow(I)
subplot(1,3,2:3)
imhist(I)

使用默认均衡化调整对比度

使用直方图均衡化调整对比度。使用直方图均衡化函数 histeq 的默认行为。默认目标直方图是一个包含 64 个 bin 的平坦直方图。

J = histeq(I);

显示调整对比度后的图像及其新直方图。

figure
subplot(1,3,1)
imshow(J)
subplot(1,3,2:3)
imhist(J)

调整对比度,指定 bin 的个数

调整对比度,指定不同的 bin 个数。使用较少数量的 bin 时,调整对比度后的图像中的灰度级会明显减少。

nbins = 10;
K = histeq(I,nbins);

显示调整对比度后的图像及其新直方图。

figure
subplot(1,3,1)
imshow(K)
subplot(1,3,2:3)
imhist(K)

调整对比度,指定目标分布

调整对比度,指定非平坦的目标分布。此示例展示一个线性递减的目标直方图,它强调小像素值并使阴影看起来更暗。显示目标直方图。

target = 256:-4:4;
figure
bar(4:4:256,target)

调整图像的直方图以近似匹配目标直方图。

L = histeq(I,target);

显示调整对比度后的图像及其新直方图。

figure
subplot(1,3,1)
imshow(L)
subplot(1,3,2:3)
imhist(L)

另请参阅

|

相关主题