使用直方图均衡化调整图像对比度
此示例说明如何使用直方图均衡化来调整灰度图像的对比度。
直方图均衡化包括变换强度值,以使输出图像的直方图近似匹配指定的直方图。默认情况下,直方图均衡化函数 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)