一、實驗任務與要求
比較采用不同的色彩空間對彩色圖像處理的效果,處理包括:
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進行均衡化后得到較好效果)。在對彩色圖像進行增強處理時可以選擇性地對不同分量進行相應處理,以得到較好效果。