彩色图像处理
彩色基礎(chǔ)
什么是彩色
彩色是物體的一種屬性,就像紋理、形狀、重量一樣. 通常, 它依賴于3個(gè)方面的因素:
- 光源一一照射光的譜性質(zhì)或譜能量分布.
- 物體-一被照射物體的反射性質(zhì).
- 成像接收器(眼睛或成像傳感器)一一光譜能量吸收性質(zhì)
其中,光特性是顏色科學(xué)的核心。假如光沒有顏色(捎色的,如觀察者看到的黑白電視的光),那么它的屬性僅僅是亮度或者數(shù)值。可以用灰度值來描述亮度, 光的范圍從黑到灰.最后到白。
而對(duì)于彩色光,我們通常用3個(gè)基本量來描述其光源的質(zhì)量: 輻射率、光強(qiáng)和亮度。
(1)輻射率是從光源流出能量的總量, 通常用瓦特(W)度量;
(2)光強(qiáng)用流明度量,它給出了觀察者從光源接收的能量總和的度量:
(3)亮度是彩色強(qiáng)度概念的具體化。它實(shí)際上是一個(gè)難以度量的主關(guān)描繪子.
同樣作為能量的度盤,輻射率與光強(qiáng)卻往往沒有必然的聯(lián)系.例如,在進(jìn)行X光檢查時(shí),光從X射線源中發(fā)出,它是具有實(shí)際意義上的能量的。但由于其處于可見光范圍以外,觀察者很難感覺到。因此對(duì)我們來說,它的光強(qiáng)幾乎為o.
我們眼中的彩色
人類能夠感受到的物體的顏色是由物體反射光的性質(zhì)決定的,. 如圖7.2所示,可見光是由電磁波譜中較窄的液段組成。如果物體反射的光在所有可見光披長范圍內(nèi)是平衡的, 則站在觀察者的角度它就是白色的:如果物體僅對(duì)有限的可見光譜范圍反射,則物體表現(xiàn)為某種特定顏色。例如,反射披長范圍在450~500nm 之間的物體呈現(xiàn)藍(lán)色, 它吸收了其他被長光的多數(shù)能量: 而如果物體吸收了所有的入射光,則將呈現(xiàn)為黑色。
三原色
據(jù)詳細(xì)的實(shí)驗(yàn)結(jié)果可知,人眼中負(fù)責(zé)彩色感知的細(xì)胞中約有65%對(duì)紅光敏感, 33%對(duì)綠光敏感,而只有2%對(duì)藍(lán)光敏感。正是人眼的這些極收特性決定了被看到的彩色是通常所謂的原色紅(R )、綠(G )、藍(lán)(B)的各種組合。國際照明委員會(huì)(CIE )規(guī)定以藍(lán)=435.8nm、綠=546.lnm、紅=700nm 作為主原色, 紅CR )、綠(G )、藍(lán)( B )也因此被稱為3 原色。
在圖7.3所示的CIE色度圖中,最外圍的輪廓對(duì)應(yīng)所有的可見光譜色,在其邊緣上標(biāo)出了對(duì)應(yīng)的波長值(以m為單位〉,該輪廓之內(nèi)的區(qū)域包含了所有的可見顏色.如果將色度圈中的三色點(diǎn)兩兩連接成一個(gè)三角形, 則該三角形內(nèi)的任何顏色都可以自這3種原色的不同混合產(chǎn)生。
我們看到, 圖7.3中由R、G、B三種標(biāo)準(zhǔn)原色所連成的三角形并不能涵蓋整個(gè)可見顏色區(qū)域, 這說明僅使用三原色并不能得到所有的可見顏色。事實(shí)上, 圖7.3中的三角形區(qū)域?qū)?yīng)著典型的RGB監(jiān)視器所能夠產(chǎn)生的顏色范圍, 稱為彩色全域:而在三角形內(nèi)不規(guī)則的區(qū)域表示高質(zhì)量的彩色打印設(shè)備的彩色域.
計(jì)算機(jī)中的顏色表示
在計(jì)算機(jī)中,顯示器的任何顏色〈色彩全域〉都可以自紅、綠、藍(lán)3種顏色組成,稱為三基色.每種基色的取值范圍是0~255.任何顏色都可以用這3種顏色按不同的比例混合而成, 這就是三原色原理. 在計(jì)算機(jī)中, 三原色的原理可以這樣解釋:
- 計(jì)算機(jī)中的任何顏色都可以由3種顏色按不同比例混合而成;而每種顏色也都可以分解成三種基本顏色.
- 三原色之間相互獨(dú)立,任何一種顏色都不能由其余兩種顏色組成.
- 混合色的飽和度由3種顏色的比例來決定 混合色的亮度為3種顏色的亮度之和.
彩色模型
彩色模型也稱彩色空間或彩色系統(tǒng), 是用來精確標(biāo)定和生成各種顏色的一套規(guī)則和定義, 它的用途是在某些標(biāo)準(zhǔn)下用通常可接受的方式簡化彩色規(guī)范. 彩色模型通常可以采用坐標(biāo)系統(tǒng)來描述, 而位于系統(tǒng)中的每種顏色都由坐標(biāo)空間中的單個(gè)點(diǎn)來表示。
如今使用的大部分彩色模型都是面向應(yīng)用或是面向硬件, 比如眾所周知的針對(duì)彩色電視器的RGB( 紅、綠、藍(lán)〉模型, 以及面向彩色打印機(jī)的CMY(青、深紅、黃〉和CMYK(青、深紅、黃、黑〉模型。而HSI(色調(diào)、飽和度、亮度〉模型非常符合人眼描述和解釋顏色的
方式。此外, 目前廣泛使用的彩色模型還有如:HSV模型、YUV 模型、YIQ模型、Lab模型等。下面將分別介紹這些彩色模型并給出它們與最為常用的RGB模型之間的轉(zhuǎn)換方式。
RGB模型
RGB模型是工業(yè)界的一種顏色標(biāo)準(zhǔn). 是通過對(duì)紅(Red)、綠(Green)、藍(lán)(Blue)3種顏色亮度的變化以及它們相互之間的疊加來得到各種各樣的顏色的。該標(biāo)準(zhǔn)兒乎包括了人類視覺所能感知的所有顏色,是目前運(yùn)用最廣的顏色模型之一。
理論基礎(chǔ)
RGB彩色空間對(duì)應(yīng)的坐標(biāo)系統(tǒng)是如圖7.4所示的立方體. 紅、綠和藍(lán)位手立方體的3個(gè)頂點(diǎn)上:青、深紅和黃位于另外3個(gè)頂點(diǎn)上:黑色在原點(diǎn)處, 而白色位于距離原點(diǎn)最遠(yuǎn)的頂點(diǎn)處, 灰度等級(jí)就沿這兩點(diǎn)連線分布: 不同的顏色處于立方體外部和內(nèi)部, 因此可以用一個(gè)3維向量來表示。例如,在所有顏色均己歸一化到(O, 1)的情況下,藍(lán)色可表示為(O, 0, 1),而灰色可由向量(0.5, 0.5, 0.5)來表示。
在RGB模型中,3個(gè)圖像分量組成了所要表示的圖像,而每一個(gè)分量圖像都是其原色圖像,如圖7.5所示。當(dāng)送入RGB監(jiān)視器時(shí),這3個(gè)分量圖像便在屏上混合產(chǎn)生一幅合成彩色圖像:
在RGB空間中,用以表示每一像素的比特?cái)?shù)叫做像素深度。RGB圖像的3個(gè)紅、綠、 藍(lán)分量圖像都是一幅8比特圖像,每一個(gè)彩色像素有24比特深度。因此,全彩色圖像常用來定義24比特的彩色圖像,顏色總數(shù)是(28)3=16777216
matlab實(shí)現(xiàn)
CMY、CMYK模型
CMY模型(Cyan、Magenta、Yellow)是采用青、品紅、黃色3種基本原色按一定比例合成顏色的方法。由于色彩的顯示不是直接來自于光線的色彩,而是由光線被物體吸收掉一部分之后反射回來的剩余光線產(chǎn)生,因此CMY模型又稱為減色法混色模型。當(dāng)光線都被吸收時(shí)成為黑色,都被反射時(shí)成為白色.
像CMY 模型這樣的減色混合模型正好適用于彩色打印機(jī)和復(fù)印機(jī)這類需要在紙上沉積彩色顏料的設(shè)備, 因?yàn)轭伭喜皇窍耧@示器那樣發(fā)出顏色, 而是反射顏色。例如,當(dāng)青色顏料涂覆的表面用。白光照射時(shí), 從該表面反射的不是紅光, 而是從反射的白光中減去紅色得到的青色(白光本身是等量的紅、綠、藍(lán)光的組合). CMY模型的顏料混合效果如圖7.6所示, 注意這里的混合是原色的相減, 與
RGB模型的混合正好相反。
CMYK模型
由圖7.6可見, 等量的顏料原色(青、品紅和黃)可以混合產(chǎn)生黑色。然而在實(shí)際運(yùn)用
中, 通過這些顏色混合產(chǎn)生的黑色是不純的。因此, 為產(chǎn)生真正的黑色〈黑色在打印中起主
要作用〉, 專門在CMY模型中加入了第4種顏色一一黑色, 從而得到CMYK影色模型. 這
樣當(dāng)出版商說到“ 四色打印” 時(shí), 即指CMY彩色模型的3種原色再加上黑色。
HSI模型
HSI模型是從人的視覺系統(tǒng)出發(fā),直接使用顏色三要素色調(diào)(Hue)、飽和度(Saturation) 和亮度(intensity,有時(shí)也翻譯作密度或灰度〉來描述顏色.
- 亮度是指人眼感覺光的明暗程度.光的能量越大,亮度越大.
- 色調(diào)是彩色最重要的屬性,決定顏色的本質(zhì),由物體反射光線中占優(yōu)勢(shì)的波長來決定. 不同的波長產(chǎn)生不同的顏色感覺,我們叫來一種顏色為紅、橙、黃,這就是說我們?cè)谝?guī)定一種色調(diào).
- 飽和度是指顏色的深淺和濃淡程度,飽和度越高,顏色越深.飽和度的深淺和白色的 比例有關(guān),白色所占比例越高,飽和度越低.
HSI彩色空間可以用一個(gè)圓錐空間模型來描述, 如圖7.8所示。我們通常把色調(diào)和飽和度統(tǒng)稱為色度, 用來表示顏色的類別與深淺程度。在圖中
四錐中間的橫截面圓就是色度圓, 而圓錐向上或向下延伸的便是亮度分量的表示.
由于人的視覺對(duì)亮度的敏感程度遠(yuǎn)強(qiáng)于對(duì)顏色濃淡的敏感程度, 為了便于顏色處理和識(shí)別, 人的視覺系統(tǒng)經(jīng)常采用HSI彩色空間, 它比RGB彩色空間更符合人的視覺特性。此外, 由于HSl空間中亮度和色度具有可分離特性, 使得圖像處理和機(jī)器視覺中大量灰度處理算法都可在
HSI彩色空間中方便地使用。
HSI彩色空間和RGB 彩色空間只是同一物理量的不同表示法, 它們之間存在著轉(zhuǎn)換關(guān)系. 下面將介紹RGB到到HSI的彩色轉(zhuǎn)換和HSI到RGB的彩色轉(zhuǎn)換
從RGB到HSI的彩色轉(zhuǎn)換及其實(shí)現(xiàn)
給定一幅RGB格式的圖像, 每一個(gè)RGB像素和H分量可用下面的公式得到:
matlab實(shí)現(xiàn)
function hsi = rgb2hsi(rgb) % hsi = rgb2hsi(rgb)把一幅RGB圖像轉(zhuǎn)換為HSI圖像, % 輸入圖像是一個(gè)彩色像素的M×N×3的數(shù)組, % 其中每一個(gè)彩色像素都在特定空間位置的彩色圖像中對(duì)應(yīng)紅、綠、藍(lán)三個(gè)分量。 % 假如所有的RGB分量是均衡的,那么HSI轉(zhuǎn)換就是未定義的。 % 輸入圖像可能是double(取值范圍是[0, 1]),uint8或 uint16。 % % 輸出HSI圖像是double, % 其中hsi(:, :, 1)是色度分量,它的范圍是除以2*pi后的[0, 1]; % hsi(:, :, 2)是飽和度分量,范圍是[0, 1]; % hsi(:, :, 3)是亮度分量,范圍是[0, 1]。% 抽取圖像分量 rgb = im2double(rgb); r = rgb(:, :, 1); g = rgb(:, :, 2); b = rgb(:, :, 3);% 執(zhí)行轉(zhuǎn)換方程 num = 0.5*((r - g) + (r - b)); den = sqrt((r - g).^2 + (r - b).*(g - b)); theta = acos(num./(den + eps)); %防止除數(shù)為0H = theta; H(b > g) = 2*pi - H(b > g); H = H/(2*pi);num = min(min(r, g), b); den = r + g + b; den(den == 0) = eps; %防止除數(shù)為0 S = 1 - 3.* num./den;H(S == 0) = 0;I = (r + g + b)/3;% 將3個(gè)分量聯(lián)合成為一個(gè)HSI圖像 hsi = cat(3, H, S, I);
從HSI到RGB的彩色轉(zhuǎn)換及其實(shí)現(xiàn)
在[O, 1]內(nèi)給出HSI值, 現(xiàn)在要在相同的值域找到RGB值, 可利用H值公式。在原始色分割中有3個(gè)相隔120· 的扇形, 如圖7.10所示。從H乘以360" 開始, 這時(shí)色調(diào)值返回原來的[0,360]的范圍.
matlab實(shí)現(xiàn)
function rgb = hsi2rgb(hsi) % rgb = hsi2rgb(hsi)把一幅HSI圖像轉(zhuǎn)換為RGB圖像, % 其中hsi(:, :, 1)是色度分量,它的范圍是除以2*pi后的[0, 1]; % hsi(:, :, 2)是飽和度分量,范圍是[0, 1]; % hsi(:, :, 3)是亮度分量,范圍是[0, 1]。 % % 輸出圖像分量: % rgb(:, :, 1)為紅; % rgb(:, :, 2)為綠; % rgb(:, :, 3)為藍(lán)。% 抽取圖像分量 hsi = im2double(hsi); H = hsi(:, :, 1) * 2 * pi; S = hsi(:, :, 2); I = hsi(:, :, 3);% 執(zhí)行轉(zhuǎn)換方程 R = zeros(size(hsi, 1), size(hsi, 2)); G = zeros(size(hsi, 1), size(hsi, 2)); B = zeros(size(hsi, 1), size(hsi, 2));% RG扇形(0 <= H < 2*pi/3) idx = find( (0 <= H) & (H < 2*pi/3)); B(idx) = I(idx) .* (1 - S(idx)); R(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx)) ./ ... cos(pi/3 - H(idx))); G(idx) = 3*I(idx) - (R(idx) + B(idx));% BG扇形(2*pi/3 <= H < 4*pi/3) idx = find( (2*pi/3 <= H) & (H < 4*pi/3) ); R(idx) = I(idx) .* (1 - S(idx)); G(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 2*pi/3) ./ ... cos(pi - H(idx))); B(idx) = 3*I(idx) - (R(idx) + G(idx));% BR扇形 idx = find( (4*pi/3 <= H) & (H <= 2*pi)); G(idx) = I(idx) .* (1 - S(idx)); B(idx) = I(idx) .* (1 + S(idx) .* cos(H(idx) - 4*pi/3) ./ ... cos(5*pi/3 - H(idx))); R(idx) = 3*I(idx) - (G(idx) + B(idx));% 將3個(gè)分量聯(lián)合成為一個(gè)RGB圖像 rgb = cat(3, R, G, B); rgb = max(min(rgb, 1), 0);全彩色圖像處理基礎(chǔ)
本節(jié)主要介紹全彩色圖像處理技術(shù),以及面對(duì)不同的圖像處理任務(wù)怎樣處理全彩色圖像.通常,全彩色圖像處理技術(shù)總的可以分為以下兩大類。
(1)對(duì)3個(gè)平面分量單獨(dú)處理,然后將分別處理過的3個(gè)分量合成彩色圖像。對(duì)每個(gè)分量的處理技術(shù)可以應(yīng)用到對(duì)灰度圖像處理的技術(shù)上。但是這種通道式的獨(dú)立處理技術(shù)忽略了通道間的相互影響。
(2)直接對(duì)彩色像素進(jìn)行處理。因?yàn)槿噬珗D像至少有3個(gè)分量,彩色像素實(shí)際上是一個(gè)向量。直接處理就是同時(shí)對(duì)所有分量進(jìn)行無差別的處理.這時(shí)彩色圖像的 3個(gè)分量用向量形式表示,即對(duì)彩色圖像上任一點(diǎn)的像素 c(x,y),有:
c(x,y)= [R(x,y);G(x,y);B(x,y)]
那么對(duì)像素點(diǎn)(x,y)處理的操作實(shí)際上是同時(shí)對(duì) R、G、 B這3個(gè)分量操作.不過通常大多數(shù)圖像處理技術(shù)都是指對(duì)每個(gè)分量的單獨(dú)處理。接下來將講述全彩色圖像處理的兩個(gè)常用技術(shù):彩色補(bǔ)償和彩色平衡。
彩色補(bǔ)償及其Matlab實(shí)現(xiàn)
有些圖像處理任務(wù)的目標(biāo)是根據(jù)顏色分離出不同類型的物體。但由于常用的彩色成像設(shè)備具有較寬且相互覆蓋的光譜敏感區(qū),加之待拍攝圖像的染色是變化的,所以很難在3 個(gè)分量圖中將物體分離出來,這種現(xiàn)象稱為顏色擴(kuò)散。彩色補(bǔ)償?shù)淖饔镁褪峭ㄟ^不同的顏色通道提取不同的目標(biāo)物。
matlab實(shí)現(xiàn)
% compensate.m % 彩色補(bǔ)償 im=double(imread('plane.bmp')); subplot(1,2,1); imshow(uint8(im)); title('原始圖'); [m,n,p]=size(im); [h1,k1]=min(255-im(:,:,1)+im(:,:,2)+im(:,:,3)); [j1,minx]=min(h1);i1=k1(j1);%提取圖像中最接近紅色的點(diǎn),其在im中的坐標(biāo)為i1,j1r1=im(i1,j1,1);g1=im(i1,j1,2);b1=im(i1,j1,3); R=0.30*r1+0.59*g1+0.11*b1;[h2,k2]=min(255-im(:,:,2)+im(:,:,1)+im(:,:,3)); [j2,minx]=min(h2);i2=k2(j2);%提取圖像中最接近綠色的點(diǎn),其在im中的坐標(biāo)為i2,j2r2=im(i2,j2,1);g2=im(i2,j2,2);b2=im(i2,j2,3); G=0.30*r2+0.59*g2+0.11*b2;[h3,k3]=min(255-im(:,:,3)+im(:,:,1)+im(:,:,2)); [j3,minx]=min(h3);i3=k3(j3);%提取圖像中最接近藍(lán)色的點(diǎn),其在im中的坐標(biāo)為i3,j3r3=im(i3,j3,1);g3=im(i3,j3,2);b3=im(i3,j3,3); B=0.30*r3+0.59*g3+0.11*b3;A1=[r1 r2 r3g1 g2 g3b1 b2 b3]; A2=[R 0 00 G 00 0 B]; C=A1*inv(A2);for i=1:mfor j=1:nimR=im(i,j,1);imG=im(i,j,2);imB=im(i,j,3);temp=inv(C)*[imR;imG;imB];S(i,j,1)=temp(1);S(i,j,2)=temp(2);S(i,j,3)=temp(3);end end S=uint8(S); subplot(1,2,2); imshow(S); title('補(bǔ)償后');
彩色平衡及其Matlab實(shí)現(xiàn)
一幅彩色圖像數(shù)字化后, 在顯示時(shí)顏色經(jīng)常看起來有些不正常。 這是色通道的不同敏感度、增光因子和偏移量等原因?qū)е碌?#xff0c;稱其為三基色不平衡。將之校正的過程就是彩色平衡
matlab實(shí)現(xiàn)
% balance.m % 彩色平衡im=double(imread('plane.bmp')); [m,n,p]=size(im); F1=im(1,1,:); F2=im(1,2,:); F1_(1,1,1)=F1(:,:,2); F1_(1,1,2)=F1(:,:,2); F1_(1,1,3)=F1(:,:,2); F2_(1,1,1)=F2(:,:,2); F2_(1,1,2)=F2(:,:,2); F2_(1,1,3)=F2(:,:,2); K1=(F1_(1,1,1)-F2_(1,1,1))/(F1(1,1,1)-F2(1,1,1)); K2=F1_(1,1,1)-K1*F1(1,1,1); L1=(F1_(1,1,3)-F2_(1,1,3))/(F1(1,1,3)-F2(1,1,3)); L2=F1_(1,1,3)-L1*F1(1,1,3); for i=1:mfor j=1:nnew(i,j,1)=K1*im(i,j,1)+K2;new(i,j,2)=im(i,j,2);new(i,j,3)=L1*im(i,j,3)+L2;end end im=uint8(im); new=uint8(new); subplot(1,2,1); imshow(im); title('原始圖'); subplot(1,2,2); imshow(new); title('平衡后');
總結(jié)
- 上一篇: 三个数据集与deploy.prototx
- 下一篇: 自定义viewgroup实现ArcMen