利用Matlab编程软件,自己编写直方图均衡代码,分别实现 一幅灰度图像和一幅彩色图像的直方图均衡化。
时间: 2024-09-25 15:09:11 浏览: 64
直方图均衡_RGB图像直方图均衡_matlab_直方图_直方图均衡_图像matlab_
在MATLAB中,直方图均衡化是一种常用的图像增强技术,它通过调整像素值的概率分布来提高图像对比度。以下是使用MATLAB分别对灰度图像和彩色图像进行直方图均衡化的简单步骤:
对于灰度图像:
```matlab
% 加载灰度图像
img_gray = imread('your_grayscale_image.jpg', 'gray'); % 替换为你需要的图片路径
% 计算原图像的直方图
histogram_eq = imhist(img_gray);
% 定义新的累积分布函数(CDF),并计算每个像素的新值
new_cdf_values = linspace(0, max(histogram_eq), length(histogram_eq));
new_pixel_values = accumarray(histc(img_gray(:), 1:length(histogram_eq)), 1, [size(img_gray) 1], @cumsum);
% 实现直方图均衡化
eq_img_gray = uint8(new_pixel_values ./ new_cdf_values);
% 显示原图和直方图均衡化的结果
subplot(1, 2, 1); imshow(img_gray);
title('Original Gray Image');
subplot(1, 2, 2); imshow(eq_img_gray);
title('Histogram Equalized Gray Image');
```
对于彩色图像(如RGB):
```matlab
% 加载彩色图像
img_color = imread('your_color_image.jpg'); % 替换为你需要的图片路径
% 分离RGB三个通道
[~, ~, R] = rgb2gray(img_color);
[~, ~, G] = rgb2gray(img_color);
B = img_color(:,:,3);
% 对每个通道分别进行直方图均衡化
eq_R = histeq(R);
eq_G = histeq(G);
eq_B = histeq(B);
% 合成均衡后的彩色图像
eq_img_color = cat(3, eq_R, eq_G, eq_B);
% 显示原图和直方图均衡化的结果
subplot(1, 2, 1); imshow(img_color);
title('Original Color Image');
subplot(1, 2, 2); imshow(eq_img_color);
title('Histogram Equalized Color Image');
```
阅读全文