将图像转换成 HSI 图像后进行直方图均衡,并显示结果matlab实现
时间: 2023-12-31 15:03:39 浏览: 155
可以按照以下步骤实现:
1. 读入图像并将其转换成 HSI 彩色空间:
```matlab
img = imread('image.jpg');
hsi_img = rgb2hsi(img);
```
2. 提取 HSI 图像的亮度通道,对其进行直方图均衡:
```matlab
I = hsi_img(:,:,3);
Ieq = histeq(I);
hsi_img(:,:,3) = Ieq;
```
3. 将均衡化后的 HSI 图像转换回 RGB 彩色空间,并显示结果:
```matlab
rgb_img = hsi2rgb(hsi_img);
imshow(rgb_img);
```
完整代码如下:
```matlab
img = imread('image.jpg');
hsi_img = rgb2hsi(img);
I = hsi_img(:,:,3);
Ieq = histeq(I);
hsi_img(:,:,3) = Ieq;
rgb_img = hsi2rgb(hsi_img);
imshow(rgb_img);
```
相关问题
显示一幅图像的 R,G,B 分量的直方图,分别进行直方图均衡处理, 并显示均衡后的直方图和直方图均衡处理后的各分量;将处理完毕的各个分 量合成彩色图像并显示其结果; 然后转换成 HSI 图像后进行直方图均衡,并显示结果; 观察两种处理方式的差异。matlab实现
好的,以下是使用MATLAB进行处理的代码示例:
```matlab
% 读入一副彩色图像,显示R、G、B三个通道的直方图
img = imread('lena.jpg');
R = img(:,:,1);
G = img(:,:,2);
B = img(:,:,3);
figure;
subplot(2,3,1);imshow(img);title('Original Image');
subplot(2,3,2);imhist(R);title('R Histogram');
subplot(2,3,3);imhist(G);title('G Histogram');
subplot(2,3,4);imhist(B);title('B Histogram');
% 对每个通道的图像进行直方图均衡处理
R_eq = histeq(R);
G_eq = histeq(G);
B_eq = histeq(B);
% 显示均衡后的直方图和直方图均衡处理后的各分量
subplot(2,3,5);imhist(R_eq);title('R Equalized Histogram');
subplot(2,3,6);imshow(cat(3,R_eq,G_eq,B_eq));title('Equalized Image');
% 把三个通道的均衡后的图像合成彩色图像,并显示结果
img_eq = cat(3,R_eq,G_eq,B_eq);
figure;imshow(img_eq);title('Equalized Image');
% 把彩色图像转换成HSI图像
hsi_img = rgb2hsi(img);
% 对HSI图像的亮度分量进行直方图均衡处理
I = hsi_img(:,:,3);
I_eq = histeq(I);
hsi_img_eq = hsi_img;
hsi_img_eq(:,:,3) = I_eq;
% 把均衡后的HSI图像转换回彩色图像,并显示结果
img_hsi_eq = hsi2rgb(hsi_img_eq);
figure;imshow(img_hsi_eq);title('HSI Equalized Image');
% 比较两种处理方式的差异
figure;
subplot(2,2,1);imshow(img);title('Original Image');
subplot(2,2,2);imshow(img_eq);title('RGB Equalized Image');
subplot(2,2,3);imshow(img);title('Original Image');
subplot(2,2,4);imshow(img_hsi_eq);title('HSI Equalized Image');
```
需要注意的是,在进行RGB直方图均衡处理时,要分别对每个通道进行处理;在进行HSI直方图均衡处理时,要确保只对亮度分量进行处理。另外,在比较两种处理方式的差异时,要注意观察图像的细节和色彩变化,以及饱和度和色调等方面的差异。
显示一幅图像的 R,G,B 分量的直方图,分别进行直方图均衡处理, 并显示均衡后的直方图和直方图均衡处理后的各分量;将处理完毕的各个分 量合成彩色图像并显示其结果,然后转换成 HSI 图像后进行直方图均衡,并显示结果;观察两种处理方式的差异。
可以按照以下步骤实现:
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);
```
阅读全文