显示一幅图像的 R,G,B 分量的直方图,分别进行直方图均衡处理, 并显示均衡后的直方图和直方图均衡处理后的各分量;将处理完毕的各个分 量合成彩色图像并显示其结果,然后转换成 HSI 图像后进行直方图均衡,并显示结果;观察两种处理方式的差异。
时间: 2024-03-12 07:46:40 浏览: 87
可以按照以下步骤实现:
1. 读入图像并显示原图像:
```matlab
img = imread('image.jpg');
imshow(img);
```
2. 分别提取 R,G,B 通道,对每个通道的直方图进行均衡化,并显示均衡化后的直方图和各分量:
```matlab
% 对 R 分量进行直方图均衡化
r = img(:,:,1);
req_r = histeq(r);
% 对 G 分量进行直方图均衡化
g = img(:,:,2);
req_g = histeq(g);
% 对 B 分量进行直方图均衡化
b = img(:,:,3);
req_b = histeq(b);
% 显示均衡化前后的直方图和各分量
figure;
subplot(2,2,1);
imhist(r);
title('R分量的直方图');
subplot(2,2,2);
imshow(r);
title('均衡化前的R分量');
subplot(2,2,3);
imhist(req_r);
title('R分量的均衡化后直方图');
subplot(2,2,4);
imshow(req_r);
title('R分量的均衡化后');
figure;
subplot(2,2,1);
imhist(g);
title('G分量的直方图');
subplot(2,2,2);
imshow(g);
title('均衡化前的G分量');
subplot(2,2,3);
imhist(req_g);
title('G分量的均衡化后直方图');
subplot(2,2,4);
imshow(req_g);
title('G分量的均衡化后');
figure;
subplot(2,2,1);
imhist(b);
title('B分量的直方图');
subplot(2,2,2);
imshow(b);
title('均衡化前的B分量');
subplot(2,2,3);
imhist(req_b);
title('B分量的均衡化后直方图');
subplot(2,2,4);
imshow(req_b);
title('B分量的均衡化后');
```
3. 将均衡化后的各分量合成彩色图像,并显示结果:
```matlab
req_img = cat(3, req_r, req_g, req_b);
imshow(req_img);
```
4. 将彩色图像转换成 HSI 图像,对亮度通道进行直方图均衡化,并显示结果:
```matlab
hsi_img = rgb2hsi(req_img);
I = hsi_img(:,:,3);
Ieq = histeq(I);
hsi_img(:,:,3) = Ieq;
eq_img = hsi2rgb(hsi_img);
imshow(eq_img);
```
完整代码如下:
```matlab
img = imread('image.jpg');
imshow(img);
% 对 R 分量进行直方图均衡化
r = img(:,:,1);
req_r = histeq(r);
% 对 G 分量进行直方图均衡化
g = img(:,:,2);
req_g = histeq(g);
% 对 B 分量进行直方图均衡化
b = img(:,:,3);
req_b = histeq(b);
% 显示均衡化前后的直方图和各分量
figure;
subplot(2,2,1);
imhist(r);
title('R分量的直方图');
subplot(2,2,2);
imshow(r);
title('均衡化前的R分量');
subplot(2,2,3);
imhist(req_r);
title('R分量的均衡化后直方图');
subplot(2,2,4);
imshow(req_r);
title('R分量的均衡化后');
figure;
subplot(2,2,1);
imhist(g);
title('G分量的直方图');
subplot(2,2,2);
imshow(g);
title('均衡化前的G分量');
subplot(2,2,3);
imhist(req_g);
title('G分量的均衡化后直方图');
subplot(2,2,4);
imshow(req_g);
title('G分量的均衡化后');
figure;
subplot(2,2,1);
imhist(b);
title('B分量的直方图');
subplot(2,2,2);
imshow(b);
title('均衡化前的B分量');
subplot(2,2,3);
imhist(req_b);
title('B分量的均衡化后直方图');
subplot(2,2,4);
imshow(req_b);
title('B分量的均衡化后');
% 将均衡化后的各分量合成彩色图像
req_img = cat(3, req_r, req_g, req_b);
imshow(req_img);
% 将彩色图像转换成 HSI 图像,对亮度通道进行直方图均衡化
hsi_img = rgb2hsi(req_img);
I = hsi_img(:,:,3);
Ieq = histeq(I);
hsi_img(:,:,3) = Ieq;
eq_img = hsi2rgb(hsi_img);
imshow(eq_img);
```
阅读全文