MATLAB 实现直方图均衡化:增强图像对比度
下面是使用 MATLAB 实现直方图均衡化的代码:
% 读入图像
img = imread('lena.jpg');
% 计算图像的直方图
histogram = imhist(img);
% 计算图像的累计直方图
cdf = cumsum(histogram);
% 计算直方图均衡化后的累计分布函数
cdf_equalized = cdf / numel(img);
% 将累计分布函数映射到[0, 255]范围内
cdf_equalized = uint8(255 * cdf_equalized);
% 对原始图像进行直方图均衡化
img_equalized = cdf_equalized(img+1);
% 显示原始图像和直方图均衡化后的图像
subplot(2,2,1);
imshow(img);
title('Original Image');
subplot(2,2,2);
imhist(img);
title('Histogram');
subplot(2,2,3);
imshow(img_equalized);
title('Equalized Image');
subplot(2,2,4);
imhist(img_equalized);
title('Equalized Histogram');
在这个代码中,我们首先读入一张名为'lena.jpg'的图像。然后,使用imhist函数计算图像的直方图,并使用cumsum函数计算出图像的累计直方图。接着,我们将累计直方图归一化,得到累计分布函数,并将其映射到[0, 255]范围内。最后,我们使用uint8函数将累计分布函数转换为整数类型,并将其应用到原始图像上,得到直方图均衡化后的图像。
最后,我们使用subplot函数将原始图像、直方图、直方图均衡化后的图像和直方图显示在同一个窗口中,方便比较。
原文地址: https://www.cveoy.top/t/topic/mXem 著作权归作者所有。请勿转载和采集!