一、实验任务与要求
比较采用不同的色彩空间对彩色图像处理的效果,处理包括:
a)直方图均衡化
b)图像增强
二、实验报告
(一)RGB色彩空间的直方图均衡化 / 锐化处理
1、matlab 实现代码:
%%%RGB彩色空间直方图均衡化
f_rgb=imread('lenna-RGB.tif');
subplot(131);imshow(f_rgb);title('RGB');
rgb_histeq=f_rgb;%获取红色、绿色、蓝色分量
R=f_rgb(:,:,1);
G=f_rgb(:,:,2);
B=f_rgb(:,:,3); %对各个分量进行直方图均衡化
R2=histeq(R,256);
G2=histeq(G,256);
B2=histeq(B,256); %变化后图像
rgb_histeq(:,:,1)=R2;
rgb_histeq(:,:,2)=G2;
rgb_histeq(:,:,3)=B2;
subplot(132);imshow(rgb_histeq);title('RGB直方图均衡化');%%%RGB彩色空间图像增强
rgb_2=f_rgb;
w=fspecial('laplacian',0.8); %生成拉普拉斯滤波器%对各个分量进行滤波处理
R3=imfilter(R,w);
G3=imfilter(G,w);
B3=imfilter(B,w); %变化后图像
rgb_2(:,:,1)=R-R3;
rgb_2(:,:,2)=G-G3;
rgb_2(:,:,3)=B-B3;
subplot(133);imshow(rgb_2);title('RGB图像增强-锐化');
2、处理效果
可以看出在RGB彩色空间中,对 R、G、B 三个分量全都进行直方图均衡化后图像颜色出现较严重的偏差,而锐化处理效果较好。
(二)HSI色彩空间的直方图均衡化 / 锐化处理
1、matlab 实现代码:
%%%HSI彩色空间直方图均衡化
f_hsi=rgb2hsi(f_rgb); %RGB图像转换为HSI色彩空间
subplot(131);imshow(f_hsi);title('HSI');
hsi_histeq=f_hsi;%获取色调、饱和度、亮度分量
H=f_hsi(:,:,1);
S=f_hsi(:,:,2);
I=f_hsi(:,:,3); %对色调、饱和度、亮度进行直方图均衡化
H2=histeq(H,256);
S2=histeq(S,256);
I2=histeq(I,256);%变化后图像
hsi_histeq(:,:,1)=H2;
hsi_histeq(:,:,2)=S2;
hsi_histeq(:,:,3)=I2;
hsi_histeq=hsi2rgb(hsi_histeq); %转换回RGB
subplot(132);imshow(hsi_histeq);title('HSI直方图均衡化');%%%HSI彩色空间图像增强
hsi_2=f_hsi;
w=fspecial('laplacian',0.8); %生成拉普拉斯滤波器%对色调、饱和度、亮度进行滤波处理
H3=imfilter(H,w);
S3=imfilter(S,w);
I3=imfilter(I,w);%变化后图像
hsi_2(:,:,1)=H-H3;
hsi_2(:,:,2)=S-S3;
hsi_2(:,:,3)=I-I3;
hsi_2=hsi2rgb(hsi_2); %转换回RGB
subplot(133);imshow(hsi_2);title('HSI图像增强-锐化');
2、处理效果
可看出在HSI色彩空间中,对 H、S、I 三个分量全都进行直方图均衡化后图像质量也出现严重偏差,且锐化处理的效果也没有 RGB 好。
3、改进
只对强度 I 进行直方图均衡化,图像质量得到较大提升:
(三)CMY色彩空间的直方图均衡化 / 锐化处理
1、matlab 实现代码:
%%%CMY彩色空间直方图均衡化
f_cmy=imcomplement(f_rgb); %RGB图像转换为CMY色彩空间
subplot(131);imshow(f_cmy);title('CMY');
cmy_histeq=f_cmy;%获取C、M、Y分量
C=f_cmy(:,:,1);
M=f_cmy(:,:,2);
Y=f_cmy(:,:,3);%对C、M、Y进行直方图均衡化
C2=histeq(C,256);
M2=histeq(M,256);
Y2=histeq(Y,256);%变化后图像
cmy_histeq(:,:,1)=C2;
cmy_histeq(:,:,2)=M2;
cmy_histeq(:,:,3)=Y2;
cmy_histeq=imcomplement(cmy_histeq); %转换回RGB
subplot(132);imshow(cmy_histeq);title('CMY直方图均衡化');%%%CMY彩色空间图像增强
cmy_2=f_cmy;
w=fspecial('laplacian',0.8); %生成拉普拉斯滤波器%对C、M、Y进行滤波处理
C3=imfilter(C,w);
M3=imfilter(M,w);
Y3=imfilter(Y,w);%变化后图像
cmy_2(:,:,1)=C-C3;
cmy_2(:,:,2)=M-M3;
cmy_2(:,:,3)=Y-Y3;
cmy_2=imcomplement(cmy_2); %转换回RGB
subplot(133);imshow(cmy_2);title('CMY图像增强-锐化');
2、处理效果
可以看出在CMY色彩空间中,对 C、M、Y 三个分量全都进行直方图均衡化后效果和RGB差不多,图像颜色均出现较严重偏差,且锐化处理效果也和RGB差不多。
(四)YCbCr色彩空间的直方图均衡化 / 锐化处理
1、matlab 实现代码:
%%%YCbCr彩色空间
f_ycbcr=rgb2ycbcr(f_rgb); %RGB图像转换为YCbCr色彩空间
subplot(131);imshow(f_ycbcr);title('YCbCr');
ycbcr_histeq=f_ycbcr;%获取亮度Y、蓝色色度Cb、红色色度Cr
Y=f_ycbcr(:,:,1);
Cb=f_ycbcr(:,:,2);
Cr=f_ycbcr(:,:,3);%对Y、Cb、Cr进行直方图均衡化
Y2=histeq(Y,256);
Cb2=histeq(Cb,256);
Cr2=histeq(Cr,256);%变化后图像
ycbcr_histeq(:,:,1)=Y2;
ycbcr_histeq(:,:,2)=Cb2;
ycbcr_histeq(:,:,3)=Cr2;
ycbcr_histeq=ycbcr2rgb(ycbcr_histeq); %转换回RGB
subplot(132);imshow(ycbcr_histeq);title('YCbCr直方图均衡化');%%%YCbCr彩色空间图像增强
ycbcr_2=f_ycbcr;
w=fspecial('laplacian',0.8); %生成拉普拉斯滤波器%对Y、Cb、Cr进行滤波处理
Y3=imfilter(Y,w);
Cb3=imfilter(Cb,w);
Cr3=imfilter(Cr,w);%变化后图像
ycbcr_2(:,:,1)=Y-Y3;
ycbcr_2(:,:,2)=Cb-Cb3;
ycbcr_2(:,:,3)=Cr-Cr3;
ycbcr_2=ycbcr2rgb(ycbcr_2); %转换回RGB
subplot(133);imshow(ycbcr_2);title('YCbCr图像增强-锐化');
2、处理效果
可以看出在YCbCr色彩空间中,对 Y、Cb、Cr 三个分量全都进行直方图均衡化后图像颜色出现严重偏差,锐化处理效果和RGB、CMY差不多。
3、改进
只对亮度 Y 进行直方图均衡化,图像质量得到较大提升:
(五)总结
采用不同的色彩空间对彩色图像处理的效果有所不同,对于色彩空间中每个分量都进行处理的效果可能并不好(比如在RGB彩色空间中对三个分量都进行均衡化处理后图像出现严重色偏,而在HSI空间中单独对亮度I进行均衡化后得到较好效果)。在对彩色图像进行增强处理时可以选择性地对不同分量进行相应处理,以得到较好效果。