數字影象處理:Color Image Processing
摘
要:偽彩色影象處理是基於一種指定的規則對灰度值賦予顏色的處理,主要用於人目視觀察和解釋單幅影象或序列影象中的灰度級事件。灰度分層是偽彩色影象處理的一個簡單例子,就是將影象中的黑白灰度級變成不同的彩色,如果分層越多,人眼所能提取的資訊也多,從而達到影象增強的效果。本實驗編寫相應影象變換的程式產生一幅合成影象,實現影象的偽彩色處理和直方圖均衡化變換,觀察對比實驗結果。
一、實驗目的
(1。a) 編寫程式實現圖6。23,程式的輸入為影象中指定的兩個灰度級範圍。程式的輸出為 RGB 格式影象,其中,一個灰度級範圍顯示為指定的彩色,其餘的畫素以 RGB 形式顯示為與輸入影象對應畫素相同的灰度色。
(1。b) 用上述程式對圖1。10(4)進行處理,要求使河流呈現為黃色,其餘區域畫素與原輸入影象灰度保持一致。在結果影象中一些孤立區域一般也會呈現黃色,因此需要選取合適的灰度級範圍,使這樣的區域儘可能少。
(2。a) 將 dark-stream 圖 6。35 (該圖即圖 6。35(05))轉換為 RGB 分量圖。用直方圖均衡化程式對 R, G 和 B分量圖分別進行直方圖均衡化,然後將結結果圖轉換回 jpg 格式。
(2。b) 用(2。a)中的三個直方圖構成一個平均直方圖,以此直方圖為基礎得到單一的直方圖均衡化強度變換函式。將該函式分別單獨作用到R、G 和 B 分量圖上,將結果圖轉換為 jpg 格式。比較並解釋(2。a)和(2。b)中影象的差異。
二、技術論述
1 偽彩色影象處理
偽彩色影象處理(也稱假彩色)是根據特定的準則對灰度值賦以彩色的處理。偽彩色的主要應用是為了人目視觀察和解釋一幅影象或序列影象中的灰度級事件,人眼只能辨別幾十種灰度色調,辨別非常有限,但對色彩的辨別卻有幾千種的彩色色調和亮度,辨別能力很強。偽彩色處理思路是將影象中感興趣的灰度級區域用特定的顏色顯示出來,如圖2。1所示是對任意畫素的灰度執行三個獨立變換,也就是將灰度影象分成R、G、B三個分量圖,對各個分量的強度進行變換,使之合成的新影象顯示特定的顏色。
圖2。1 單色影象可用時的偽彩色編碼框圖
2 彩色影象直方圖處理
直方圖均衡是自動地確定一種變換,這種變換試圖產生具有均勻灰度值的直方圖。但由於彩色影象是由多個分量組成的,所以要考慮適應多個分量和/或直方圖的灰度級技術,所以一般合乎邏輯的處理方法是均勻地展開各分量的彩色灰度,保持影象色調不變。
直方圖處理中採用一定的變換方式使影象中較少的灰度級壓縮,較多的灰度級拉伸。一般的彩色變換模型表示式可以表示為:
是彩色輸入影象,是變換或處理後的的彩色輸出影象,T是在的空間鄰域上對f的一個運算元。經過這種強度變換後,雖然不能改變影象的色調和飽和度,但影象各分量中的畫素點被均勻分佈到整個灰度級上,增強了影象的彩色感官。
三、實驗結果討論
用實驗要求(1。a)編寫的程式對圖1。10(4)進行處理,使河流呈現為黃色,其餘區域畫素與原輸入影象灰度保持一致,得到如圖3。1所示結果。將素材中的圖6。35(05)轉換為RGB分量圖。用直方圖均衡化程式對 R, G 和 B分量圖分別進行直方圖均衡化,得到如圖3。2所示的R、G和B分量影象及直方圖均衡化後的影象,圖3。3是彩色影象R、G和B分量直方圖及均衡化後的直方圖,將均衡化後各分量影象合成直方圖均衡化後的彩色影象如圖3。4所示。將實驗要求(2。a)中的三個直方圖構成一個平均直方圖,以此直方圖為基礎得到單一的直方圖均衡化強度變換函式並作用到R、G 和 B 分量圖上,生成如圖3。5所示的RGB各分量規定化的影象(程式見附錄)
圖3。1 將圖中河流顯示為黃色的偽彩色處理結果圖
圖3。2 R、G和B分量影象及直方圖均衡化後的影象
圖3。3 彩色影象R、G和B分量直方圖及均衡化後的直方圖
圖3。4 合成直方圖均衡化後的彩色影象
圖3。5 RGB各分量規定化的影象
四、實驗結論
將影象中某個特地區域用特定顏色來顯示,就是要把該區域的灰度值用特定顏色來顯示。為了做相應的影象變換必須先得出該區域的灰度級範圍,如圖3。1顯示了處理後的結果,圖中的河流有部分沒有被標識出來,而其他區域有小部分卻被標識出來。是因為影象中可能也有其他區域有同樣的灰度級,這就會帶來錯誤的標識,所以要選取最佳的灰度範圍來減少這樣的區域。
彩色影象各分量的均衡化後的影象及直方圖分別見圖3。2、圖3。3,可見圖各分量的亮度都有所提升,對比度增加。圖3。4是對彩色影象各分量分別做直方圖均勻化後的結果圖,與原圖相比變換後的影象明顯變亮,各顏色的對比也更加清晰。
圖3。5是採用統一的均衡化直方圖對彩色影象各分進行變換後合成的影象,也可以觀察到圖片變亮、對比度增加,但比圖3。4中的直方圖均衡化後的彩色影象更加接近原圖,實驗要求(2。a)是對各個分量分別處理,這就導致RGB各分量的變換不是統一的,合成後便有可能產生與原圖不一致的顏色,而本題中各分量採用的是相同的變換,便可以保證與原圖的色度最為接近。
歡迎前來交流學習
附錄:程式清單
%1 將Fig1。10(4)中河流顯示為黃色的偽彩色處理
function
color_image_process
im
=
imread
(
‘Fig1。10(4)。jpg’
);
im
=
imresize
(
im
,[
512
,
512
]);
subplot
(
121
);
imshow
(
im
);
title
(
‘原影象’
);
gray1
=
0
;
gray2
=
30
;
im
=
colorProcess
(
im
,
gray1
,
gray2
);
subplot
(
122
);
imshow
(
im
);
title
(
‘偽彩色處理後的影象’
);
function
im
=
colorProcess
(
im,gray1,gray2
)
[
M
,
N
]=
size
(
im
);
for
i
=
1
:
M
for
j
=
1
:
N
if
(
im
(
i
,
j
)
>
=
gray1
)
&
(
im
(
i
,
j
)
<
gray2
)
R
(
i
,
j
)=
255
;
G
(
i
,
j
)=
255
;
B
(
i
,
j
)=
0
;
else
R
(
i
,
j
)=
im
(
i
,
j
);
G
(
i
,
j
)=
im
(
i
,
j
);
B
(
i
,
j
)=
im
(
i
,
j
);
end
end
end
for
i
=
1
:
M
for
j
=
1
:
N
im_c
(
i
,
j
,
1
)=
R
(
i
,
j
);
im_c
(
i
,
j
,
2
)=
G
(
i
,
j
);
im_c
(
i
,
j
,
3
)=
B
(
i
,
j
);
end
end
im
=
im_c
;
%2 彩色影象直方圖均衡化處理程式
%histeq()是影象直方圖均衡化處理,用以增強對比度,imhist()是計算強度影象的直方圖並顯示直方圖的圖形。
RGB
=
imread
(
‘Fig6。35(5)。jpg’
);
R
=
RGB
(:,:,
1
);
%提取彩色影象的紅色分量
G
=
RGB
(:,:,
2
);
%提取彩色影象的綠色分量
B
=
RGB
(:,:,
3
);
%提取彩色影象的藍色分量
r
=
histeq
(
R
);
%紅色分量均衡化後的影象
g
=
histeq
(
G
);
%綠色分量均衡化後的影象
b
=
histeq
(
B
);
%藍色分量均衡化後的影象
subplot
(
321
),
imshow
(
R
);
title
(
‘提取彩色影象的R分量’
);
subplot
(
322
),
imshow
(
r
);
title
(
‘R分量均衡化後的影象’
);
subplot
(
323
),
imshow
(
G
);
title
(
‘提取彩色影象的G分量’
);
subplot
(
324
),
imshow
(
g
);
title
(
‘G分量均衡化後的影象’
);
subplot
(
325
),
imshow
(
B
);
title
(
‘提取彩色影象的B分量’
);
subplot
(
326
),
imshow
(
b
);
title
(
‘B分量均衡化後的影象’
);
figure
subplot
(
321
);
imhist
(
R
);
title
(
‘R分量直方圖’
);
subplot
(
322
),
imhist
(
r
);
title
(
‘R分量均衡化後圖像直方圖’
);
subplot
(
323
),
imhist
(
G
);
title
(
‘G分量直方圖’
);
subplot
(
324
),
imhist
(
g
);
title
(
‘G分量均衡化後圖像直方圖’
);
subplot
(
325
),
imhist
(
B
);
title
(
‘B分量直方圖’
);
subplot
(
326
),
imhist
(
b
);
title
(
‘B分量均衡化後圖像直方圖’
);
figure
subplot
(
121
),
imshow
(
RGB
);
title
(
‘原彩色影象’
);
newimg
=
cat
(
3
,
r
,
g
,
b
);
subplot
(
122
),
imshow
(
newimg
,[]);
title
(
‘直方圖均衡化後圖像’
);
imwrite
(
newimg
,
‘junhenghua。jpg’
)
rgb1
=
rgb2gray
(
newimg
);
%RGB影象轉換為灰度
[
count
,
x
]=
imhist
(
rgb1
);
%提取直方圖資訊
r1
=
histeq
(
R
,
count
);
%作用於紅色分量
g1
=
histeq
(
G
,
count
);
b1
=
histeq
(
B
,
count
);
newRGB
=
cat
(
3
,
r1
,
g1
,
b1
);
%將r1 g1 b1三個分量合成
figure
;
subplot
(
121
),
imshow
(
newimg
,[]);
title
(
‘直方圖均衡化後圖像’
);
subplot
(
122
),
imshow
(
newRGB
);
title
(
‘RGB各分量規定化’
);
imwrite
(
newRGB
,
‘regluation。jpg’
);
下一篇:何為正確?