直方图均衡化matlab代码
时间: 2023-07-03 21:27:33 浏览: 104
直方图均衡化 matlab 代码
5星 · 资源好评率100%
以下是 MATLAB 中实现直方图均衡化的代码示例:
```matlab
% 读取图像
img = imread('lena.jpg');
% 将图像转换为灰度图像
gray_img = rgb2gray(img);
% 计算灰度图像的直方图
histogram = imhist(gray_img);
% 计算累积分布函数
cdf = cumsum(histogram) / numel(gray_img);
% 计算直方图均衡化后的像素值
equalized_gray_img = uint8(255 * cdf(double(gray_img) + 1));
% 显示图像及其直方图
figure;
subplot(2,2,1);
imshow(gray_img);
title('原始图像');
subplot(2,2,2);
imhist(gray_img);
title('原始图像直方图');
subplot(2,2,3);
imshow(equalized_gray_img);
title('直方图均衡化后的图像');
subplot(2,2,4);
imhist(equalized_gray_img);
title('直方图均衡化后的图像直方图');
```
以上代码中,我们首先读取一张彩色图像并将其转换为灰度图像。然后,我们使用 `imhist` 函数计算灰度图像的直方图,并使用 `cumsum` 函数计算其累积分布函数。接下来,我们将累积分布函数应用于原始灰度图像,并将其转换为整数类型,以获得直方图均衡化后的像素值。最后,我们使用 `subplot` 函数将原始图像、原始图像的直方图、直方图均衡化后的图像和直方图均衡化后的图像的直方图显示在同一张图中。
阅读全文