Matlab数字图像处理学习记录【5】——彩色图像处理
彩色圖像處理
- 一.Matlab中彩色圖像的表示方法
- 1.1RGB圖像
- 1.2索引圖像
- 1.3用來(lái)處理RGB圖像或索引圖像的IPT函數(shù)
- 二.轉(zhuǎn)換值其他彩色空間
- 2.1NTSC彩色空間
- 2.2YCbCr彩色空間
- 2.3HSV色彩空間
- 2.4CMY和CMYK彩色空間
- 2.5 HSI彩色空間
- 三.彩色圖像處理基礎(chǔ)
- 四.彩色變換
- 五.彩色圖像的空間濾波
- 5.1彩色圖像平滑
- 5.2彩色圖像銳化
- 六.在RGB向量空間直接處理
- 6.1使用梯度的彩色邊緣檢測(cè)
- 6.2 RGB向量空間中的圖像分割
一.Matlab中彩色圖像的表示方法
一般來(lái)說(shuō)在IPT里,彩色圖像被當(dāng)做索引圖像和RGB圖像來(lái)處理。所以重點(diǎn)學(xué)習(xí)這兩個(gè)圖像。
1.1RGB圖像
這個(gè)沒(méi)啥說(shuō)的,就是將紅綠藍(lán)三色圖像組合起來(lái)。當(dāng)然,可以用cat將圖像組合起來(lái)。
frgb = cat(dim, fr, fg, fb) dim是將后者矩陣疊加的維度。此處寫(xiě)3即可。
當(dāng)然,也可以通過(guò)切片的方式來(lái)分割成圖像分量:
fR = frgb(:, :, 1); 、fG = frgb(:, :, 2);、fB = frgb(:, :, 3);
創(chuàng)建函數(shù),建立一個(gè)可以自定義觀測(cè)角度的RGB立方體:
傳參即可
rgbcube(0.7, 0.2, 0.3)1.2索引圖像
索引圖像有兩個(gè)分量。一個(gè)是數(shù)據(jù)矩陣X,一個(gè)是色彩映射矩陣map。
映射矩陣map存放顏色數(shù)據(jù),長(zhǎng)度由顏色的數(shù)量決定。數(shù)據(jù)矩陣則是存放指向映射矩陣的索引值。
這樣做的好處就是,假設(shè)需要更換顏色類(lèi)型。那么直接修改map即可,而不需要對(duì)數(shù)據(jù)矩陣進(jìn)行復(fù)雜的變換操作。
若需要顯示該圖像,一般使用
imshow(X, map)或者image(X)、colormap(map).
可以通過(guò)[Y, newmap] = imapprox(X, map, n)
利用該函數(shù),將X和map 變?yōu)椴怀^(guò)n中顏色的新組合Y和newmap但注意其對(duì)值矩陣的縮放。
指定色彩圖像,可以用:
map(k, :) = [r(k), g(k), b(k)]
其中[r(k), g(k), b(k)]是RGB值,指定色彩映射的一行,變化k的值,就可以填充滿(mǎn)整個(gè)圖。
修改圖像的背景色可以用
whitebg(),推薦填RGB值,當(dāng)然也可以填名字:
在顯示圖像,或者置映射map的時(shí)候,我們可以用預(yù)設(shè)的彩色映射:
1.3用來(lái)處理RGB圖像或索引圖像的IPT函數(shù)
比如dither,可以用于灰度圖和彩色圖像(但是我試了RGB不行, 只能單通道),比如在灰度圖里,使用它可以在白色背景上添加黑點(diǎn)得到灰色調(diào)。也就是用二值化的圖模擬灰度圖。
用法bw = dither(gray_image)
在處理彩色圖像的時(shí)候,抖動(dòng)函數(shù)需要和rgb2ind結(jié)合使用,這個(gè)函數(shù)后面討論。
然后就是通過(guò)一個(gè)閾值,將gray圖生成一幅索引圖像的:X = grayslice(gray_image, n)
其中閾值為:1n、2n、3n…n?1n\frac{1}{n}、\frac{2}{n}、\frac{3}{n}…\frac{n-1}{n}n1?、n2?、n3?…nn?1?
如果將標(biāo)量n改為向量v,則可以自定義映射map的大小。其中向量v的取值在[0,1]之間,函數(shù)會(huì)自己縮放。
利用[X, map] = gray2ind(gray_image, n)縮放后,會(huì)用彩色映射,也就是表6.2中的gray(n)進(jìn)行轉(zhuǎn)換。若n省略,則默認(rèn)64.
ind2gary()同理。
[X, map] = rgb2ind(rgb_image, n, dither_option) 參數(shù)同灰度圖,不過(guò)多了個(gè)參數(shù)。
若填字符串dither則執(zhí)行抖動(dòng),會(huì)提高空間分辨率達(dá)到更好的顏色分辨力。nodither則是將顏色映射到新圖上最金額近的顏色。
rgb_image = ind2rgb(X, map)和gray_image = rgb2gray(rgb_image)同理。
二.轉(zhuǎn)換值其他彩色空間
2.1NTSC彩色空間
NTSC色彩空間中,顏色由亮度Y、色調(diào)I、飽和度Q組成。
亮度描述灰度信息,色調(diào)和飽和度描述彩色信息。
轉(zhuǎn)換公式:
[YIQ]=[0.2990.5870.1140.596?.0274?0.3220.211?0.5230.12][RGB]\begin{bmatrix}Y \\ I \\Q\end{bmatrix} = \begin{bmatrix}0.299 & 0.587 & 0.114 \\ 0.596 & -.0274 & -0.322 \\0.211 & -0.523 & 0.12\end{bmatrix} \begin{bmatrix}R \\ G \\B\end{bmatrix} ???YIQ????=???0.2990.5960.211?0.587?.0274?0.523?0.114?0.3220.12???????RGB????
轉(zhuǎn)換函數(shù)為:yiq_image = rgb2ntsc(rgb_image)
輸出為double類(lèi)圖像,當(dāng)然還是可以通過(guò)切片提取Y、I、Q。
類(lèi)似:
[RGB]=[1.0000.9560.6211.000?.0272?0.6470.211?1.1061.703][YIQ]\begin{bmatrix}R \\ G \\B\end{bmatrix} = \begin{bmatrix}1.000 & 0.956 & 0.621 \\ 1.000 & -.0272 & -0.647 \\0.211 & -1.106 & 1.703\end{bmatrix} \begin{bmatrix}Y \\ I \\Q\end{bmatrix} ???RGB????=???1.0001.0000.211?0.956?.0272?1.106?0.621?0.6471.703???????YIQ????
函數(shù)rgb_image = ntsc2rgb(yiq_image)
2.2YCbCr彩色空間
[YCbCr]=[16128128]+[64.481128.55324.966?37.797?74.203112.000112.000?93.786?18.214][RGB]\begin{bmatrix}Y \\ Cb \\Cr\end{bmatrix} = \begin{bmatrix}16 \\ 128 \\128\end{bmatrix} +\begin{bmatrix}64.481& 128.553 & 24.966 \\ -37.797 & -74.203 &112.000 \\ 112.000 & -93.786 & -18.214\end{bmatrix} \begin{bmatrix}R \\ G \\B \end{bmatrix} ???YCbCr????=???16128128????+???64.481?37.797112.000?128.553?74.203?93.786?24.966112.000?18.214???????RGB????
函數(shù)ycbcr_image = rgb2ycbcr(rgb_image)和rgb_image = ycbCr2rgb(ycbcr_image)
2.3HSV色彩空間
HSV(色調(diào)、飽和度、亮度)是較常用的一種模型。
色調(diào)是圍繞彩色六邊形的角度來(lái)描述的。沿錐體的軸來(lái)測(cè)量值,也就是我這里說(shuō)的亮度。V = 0時(shí),軸的末端為黑色,V=1是,州的末端為白色。比如要制作呼吸燈,那么保持HS不變,變化V的大小,即可完成在近似相同的顏色的情況下調(diào)整亮度。RGB轉(zhuǎn)HSV的方法就是將RGB坐標(biāo)系映射指柱坐標(biāo)系,這里沒(méi)有推導(dǎo),可以去別處看。
函數(shù)是:hsv_image = rgb2hsv(rgb_image)和rgb_image = hsv2rgb(hsv_image)。
2.4CMY和CMYK彩色空間
一般用于打印機(jī)內(nèi)部的顏色。
理論上,等量的顏料原色即青色、品紅色和黃色混合會(huì)產(chǎn)生黑色。在實(shí)踐中,將這些顏色加以混合來(lái)印刷會(huì)生成一幅模糊不清的黑色圖像。所以,為了生成一種純正的黑色(打印中使用的主要顏色),便要添加第四種顏色,即黑色,從而出現(xiàn)了CMYK彩色模型。這樣,當(dāng)出版者談?wù)摗八纳∷ⅰ睍r(shí),他們其實(shí)是在說(shuō)CMY彩色模型的三種顏色加上黑色。
函數(shù):cmy_image = imcomplement(rgb_image)和rgb_image = imcomplement(cmy_image)
2.5 HSI彩色空間
HSI(hue色度;saturation飽和度,intensity亮度)彩色空間,該模型將亮度分量用途一幅彩色圖像中攜帶的彩色信息分開(kāi),是一種對(duì)于開(kāi)發(fā)基于彩色描述的圖像處理算法是個(gè)理想的工具。
其推導(dǎo)過(guò)程:
- 如在6.1.1節(jié)中討論過(guò)的那樣,RGB彩色圖像是由三幅單色的亮度圖像構(gòu)成的,所以一定可以從一幅RGB圖像中提取出亮度。若拿圖6.2所示的彩色立方體來(lái)看,一切就很清楚。假設(shè)我們站在黑色頂點(diǎn)(0,0,0)處,如圖6.6(a)所示,它的正上方是白色頂點(diǎn)(1,1,1)。再同圖6.2聯(lián)系起來(lái)看,亮度是沿著連接著兩個(gè)點(diǎn)的連線分布的。在圖6.6所示的排列中,這條連接黑色和白色頂點(diǎn)的線(亮度軸)是垂直的。因此,若想確定圖6.6中任意彩色點(diǎn)的亮度分量,我們就需要經(jīng)過(guò)一個(gè)包含該點(diǎn)且垂直于亮度軸的平面。這個(gè)平面和亮度軸的交點(diǎn)就給出了范圍在[0,1]之間的亮度值。我們也注意到飽和度是一個(gè)與亮度軸之間的距離的函數(shù)。事實(shí)上,亮度軸上的點(diǎn)的飽和度為零,亮度軸上的所有點(diǎn)都是灰色的這個(gè)事實(shí)是很顯然的。為了弄清從一個(gè)給定RGB點(diǎn)確定色調(diào)的方式,可參考圖6.6(b),它顯示了一個(gè)由三個(gè)點(diǎn)(黑色、白色和青色)所定義的平面。該平面上含有黑色和白色頂點(diǎn)的事實(shí)告訴我們亮度軸同樣在這個(gè)平面上。此外,可以看到由亮度軸和立方體邊界共同定義的平面上的所有點(diǎn)都有相同的色調(diào)(在此例中為青色)。這是因?yàn)樵谝粋€(gè)彩色三角形內(nèi),顏色是由這三個(gè)頂點(diǎn)顏色的多種多樣的組合或者混合而成的。若這些頂點(diǎn)中的兩個(gè)是黑色和白色,第三個(gè)頂點(diǎn)是-一個(gè)彩色的點(diǎn),則這個(gè)三角形中所有點(diǎn)的色調(diào)都是相同的,因?yàn)榘咨秃谏至繉?duì)于色彩的變化沒(méi)有影響(當(dāng)然,在這個(gè)三角形中,點(diǎn)的亮度和飽和度會(huì)變化)。以垂直的強(qiáng)度軸旋轉(zhuǎn)這個(gè)個(gè)陰影平面,可以獲得不同的色調(diào)。
- 圖6.7(b)顯示了六邊形和一個(gè)任意的彩色點(diǎn)(用點(diǎn)的形式顯示)。這個(gè)點(diǎn)的色調(diào)是由其與某參考點(diǎn)的夾角決定的。一般來(lái)說(shuō)(但也不總是如此),與紅色軸的夾角為0°,色調(diào)在此處按逆時(shí)針?lè)较蛟黾印o柡投?距垂直軸的距離)是從原點(diǎn)到該點(diǎn)的向量的長(zhǎng)度。注意,原點(diǎn)由該彩色平面與垂直亮度軸的交點(diǎn)定義。HSI彩色空間的重要分量包括垂直亮度軸、到彩色點(diǎn)的向量長(zhǎng)度以及該向量與紅色軸間的夾角。因此,當(dāng)用剛才討論過(guò)的六邊形甚至如圖6.7?和如圖6.7(d)所示的三角形或圓形時(shí),這些形式定義一個(gè)HSI平面是不足為奇的。選擇哪種形狀是不重要的,因?yàn)槿我庖环N形狀都可以通過(guò)幾何變換變換成另一種形狀。圖6.8顯示了基于彩色三角形和圓形的HSI模型。
那么從RGB變HSI的過(guò)程:
H分量:
H={θ,若B≤G360?θ,若>G其中θ=arccos{0.5[R?G]+R?B[(R?G)2+(R?B)(G?B)0.5]}H = \begin{cases} \theta ,& 若B≤G\\ 360- \theta,&若>G \end{cases} \\其中 \ \theta=arccos\{\frac{0.5[R-G]+R-B}{[(R-G)^2+(R-B)(G-B)^{0.5}]}\} \\ H={θ,360?θ,?若B≤G若>G?其中?θ=arccos{[(R?G)2+(R?B)(G?B)0.5]0.5[R?G]+R?B?}
S分量:
S=1?3(R+B+G)[min(R,G,B)]S= 1-\frac{3}{(R+B+G)}[min(R,G,B)] S=1?(R+B+G)3?[min(R,G,B)]
I分量:
I=13(R+B+G)I = \frac{1}{3}(R+B+G) I=31?(R+B+G)
若RGB輸入為[0,1]將H/360°,則HSI輸出也為[0,1]
若將HSI轉(zhuǎn)換為RGB則是根據(jù)H來(lái)決定:
R=I[1+ScosHcos(60°?H)]B=I(1?S)G=3I?(R+B)R = I[1+\frac{ScosH}{cos(60°-H)}] \\ B = I(1-S) \\ G = 3I-(R+B) R=I[1+cos(60°?H)ScosH?]B=I(1?S)G=3I?(R+B)
H=H?120°G=I[1+ScosHcos(60°?H)]R=I(1?S)B=3I?(R+G)H = H - 120° \\ G = I[1+\frac{ScosH}{cos(60°-H)}] \\ R =I(1-S) \\ B = 3I-(R+G) H=H?120°G=I[1+cos(60°?H)ScosH?]R=I(1?S)B=3I?(R+G)
H=H?240°B=I[1+ScosHcos(60°?H)]G=I(1?S)R=3I?(G+B)H = H - 240° \\ B = I[1+\frac{ScosH}{cos(60°-H)}] \\ G = I(1-S) \\ R = 3I-(G+B) H=H?240°B=I[1+cos(60°?H)ScosH?]G=I(1?S)R=3I?(G+B)
那么代碼為:
三.彩色圖像處理基礎(chǔ)
一般把彩色圖像處理細(xì)分為三個(gè)主要類(lèi)別:
第一類(lèi)就類(lèi)似于處理每個(gè)彩色平面的像素,以像素值為基礎(chǔ),處理方法類(lèi)似。而第二類(lèi)則對(duì)各個(gè)彩色平面空間進(jìn)行空間濾波。第三類(lèi)則是同時(shí)處理所有分量。每個(gè)像素則為一個(gè)向量:
c=[cRcGcB]=[RGB]c=\begin{bmatrix} c_R\\c_G\\c_B \end{bmatrix}=\begin{bmatrix} R \\ G \\ B \end{bmatrix} c=???cR?cG?cB?????=???RGB????
若用x,y表示則是:
c(x,y)=[cR(x,y)cG(x,y)cB(x,y)]=[R(x,y)G(x,y)B(x,y)]c(x,y)=\begin{bmatrix} c_R(x,y)\\c_G(x,y)\\c_B(x,y) \end{bmatrix}=\begin{bmatrix} R(x,y) \\ G(x,y) \\ B(x,y) \end{bmatrix} c(x,y)=???cR?(x,y)cG?(x,y)cB?(x,y)????=???R(x,y)G(x,y)B(x,y)????
為了使獨(dú)立的彩色分量和以向量為基礎(chǔ)的處理都相同,必須滿(mǎn)足兩個(gè)條件:
首先,處理要對(duì)向量和標(biāo)量都可以用。
對(duì)向量的每個(gè)分量的運(yùn)算必須獨(dú)立于其他分量。
四.彩色變換
在單個(gè)彩色模型的情況下,處理彩色圖像的彩色分量或單色圖像的亮度分量。對(duì)于彩色圖像有:si=Ti(ri),i=1,2,...,ns_i=T_i(r_i),i=1,2,...,nsi?=Ti?(ri?),i=1,2,...,n若該圖像是單色的,則方程可以改為:si=Ti(r),i=1,2,...,ns_i=T_i(r),i=1,2,...,nsi?=Ti?(r),i=1,2,...,n
其中,r表示灰度級(jí)的值,si和T 如上所示,n是si中的彩色分量數(shù)。該方程描述把灰度級(jí)轉(zhuǎn)換成任意顏色的映射,這一處理常稱(chēng)為偽彩色變換或偽彩色映射。注意,若令r1=r2= r3=r,則第一個(gè)方程可用來(lái)處理RGB中的單色圖像。
第3章已介紹過(guò)一些灰度變換:
在這些應(yīng)用中,直接產(chǎn)生候選函數(shù)的圖形表示并在被處理圖像上觀察其組合效果(實(shí)時(shí))的方法,是選擇合適的映射函數(shù)的最好方法。
使用雙插值z(mì)=interp1q(x, y, xi)可以用圖形來(lái)指定映射函數(shù)。
它返回一個(gè)列向量,該向量包括在點(diǎn)xi處使用-維函數(shù)z線性插值的值。列向量x和y指定控制點(diǎn)的水平和垂直坐標(biāo)。x的元素必須單調(diào)增長(zhǎng)。z的長(zhǎng)度等于xi的長(zhǎng)度。
例如:z = interp1q([0 255]', [0 255]', [0: 255]')則產(chǎn)生了一個(gè)產(chǎn)生一個(gè)有著256個(gè)元素的一一映射,以連接控制點(diǎn)(0,0)和(255,255),即z=[ 012…255]’。
三次樣條插值函數(shù)則是:z=interp1q(x, y, xi)
交互式產(chǎn)生變換函數(shù)可以用ice生成:
g = ice ( 'Property Name ', 'Property value', . . .)
其中,Property Name和Property value必須成對(duì)出現(xiàn),并且這些點(diǎn)表示由相應(yīng)輸入對(duì)所組成的模式的重復(fù)。表6.4列出了ice函數(shù)中的正確搭配。一些例子將在本章稍后給出。
關(guān)于wait參數(shù),當(dāng)顯式地或默認(rèn)地選擇on時(shí),輸出g是處理后的圖像。在這種情況下,ice將控制處理,包括光標(biāo),因而在命令窗口不必鍵入任何命令,直到函數(shù)關(guān)閉,這時(shí)最后的結(jié)果就是圖像g。當(dāng)選擇off時(shí),g為處理后的圖像的句柄,并且控制會(huì)立即返回到命令窗口;因此,在函數(shù)ice仍處于活動(dòng)狀態(tài)時(shí),可以鍵入新的命令。為了用句柄g獲得圖像的屬性,我們使用get函數(shù)h=get(g)
不過(guò)ice這個(gè)函數(shù)好像沒(méi)有,但是Google到了其源碼,下載地址:http://fourier.eng.hmc.edu/e161/dipum/ice.m
然后發(fā)現(xiàn)這個(gè)網(wǎng)頁(yè)基本上涵蓋了該書(shū)所有要自定義的函數(shù)。
下載ice.m和ice.fig即可運(yùn)行:
五.彩色圖像的空間濾波
5.1彩色圖像平滑
其思想還是對(duì)三個(gè)通道的顏色“求平均”,假設(shè)Sxy是彩色圖像中以(x,y)為中心的領(lǐng)域的一組坐標(biāo)。其平均值是:
cˉ(x,y)=1K∑(s,t)∈Sxyc(s,t)\bar{c}(x,y)= \frac{1}{K} \sum_{(s,t)∈S_{xy}}c(s,t) cˉ(x,y)=K1?(s,t)∈Sxy?∑?c(s,t)
將前面的平滑濾波imfilter通過(guò)對(duì)三個(gè)通道分別濾波,再疊加即可成為fc_imfilter。
當(dāng)然也可以對(duì)HSI圖像進(jìn)行濾波。
5.2彩色圖像銳化
同理,分通道銳化,疊加:
?2[c(x,y)]=[?2R(x,y)?2G(x,y)?2B(x,y)]\nabla^2[c(x,y)] = \begin{bmatrix} \nabla^2R(x,y) \\ \nabla^2G(x,y) \\ \nabla^2B(x,y) \end{bmatrix} ?2[c(x,y)]=????2R(x,y)?2G(x,y)?2B(x,y)????
六.在RGB向量空間直接處理
因?yàn)橛行r(shí)候,疊加后的信息,并不等于分離后再疊加。所以需要直接對(duì)[RGB]這向量進(jìn)行操作。
6.1使用梯度的彩色邊緣檢測(cè)
二維函數(shù)f(x,y)的梯度定義為向量:
?f=[GxGy]=[?f?x?f?y]\nabla f = \left[\frac{G_x}{G_y}\right]= \left[\frac{\frac{ \partial f}{ \partial x}}{\frac{ \partial f}{ \partial y}}\right] ?f=[Gy?Gx??]=[?y?f??x?f??]
該向量幅值為:
?f=mag(?f)=[Gx2+Gy2]1/2=[(?f/?x)2+(?f/?y)2]1/2\nabla f = mag(\nabla f) = [G_x^2 + G_y^2]^{1/2} = [(\partial f/\partial x)^2 + (\partial f/\partial y)^2]^{1/2} ?f=mag(?f)=[Gx2?+Gy2?]1/2=[(?f/?x)2+(?f/?y)2]1/2
通常,該量用絕對(duì)值代替:
?f≈∣Gx∣+∣Gy∣\partial f ≈|G_x|+|G_y| ?f≈∣Gx?∣+∣Gy?∣
梯度:
α(x,y)=arctan(GyGx)\alpha(x,y)=arctan(\frac{G_y}{G_x}) α(x,y)=arctan(Gx?Gy??)
當(dāng)然離散化的情況下,可以用卷積核代替:
將這個(gè)思維拓展到RGB上:
u=?R?xr+?G?xg+?B?xb和v=?R?yr+?G?yg+?B?ybu=\frac{\partial R}{\partial x}r+\frac{\partial G}{\partial x}g+\frac{\partial B}{\partial x}b \\ 和 \\ v=\frac{\partial R}{\partial y}r+\frac{\partial G}{\partial y}g+\frac{\partial B}{\partial y}b u=?x?R?r+?x?G?g+?x?B?b和v=?y?R?r+?y?G?g+?y?B?b
點(diǎn)積:
gxx=u?ugyy=y?ygxy=x?yg_{xx} = u \cdot u \\ g_{yy} = y \cdot y \\ g_{xy} = x \cdot y gxx?=u?ugyy?=y?ygxy?=x?y
則可以得到:
c(x,y)的最大變化率的方向由角度
θ(x,y)=12arctan[2gxy(gxx?gyy)]\theta(x,y)=\frac{1}{2}arctan[\frac{2g_{xy}}{(g_{xx}-g_{yy})}] θ(x,y)=21?arctan[(gxx??gyy?)2gxy??]
梯度值:
Fθ={12[(gxx+gyy)+(gxx?gyy)cos2θ+2gxysin2θ]}1/2F_{\theta} = \{\frac{1}{2}[(g_{xx}+g_{yy})+(g_{xx}-g_{yy})cos2\theta+2g_{xy}sin2\theta]\}^{1/2} Fθ?={21?[(gxx?+gyy?)+(gxx??gyy?)cos2θ+2gxy?sin2θ]}1/2
封裝成函數(shù):colorgrad:
寫(xiě)代碼:
f = imread('./test.jpg'); [VG, A, PPG] = colorgrad(f); subplot(2,2,1); imshow(f); subplot(2,2,2); imshow(VG); subplot(2,2,3); imshow(A); subplot(2,2,4); imshow(PPG);6.2 RGB向量空間中的圖像分割
使用RGB彩色向量進(jìn)行彩色區(qū)域分割是很簡(jiǎn)單的。假設(shè)我們的目的是在RGB圖像中分割一個(gè)特定彩色范圍的物體。給定一組感興趣的彩色(或彩色范圍)描述的彩色樣本點(diǎn),我們獲得一個(gè)“平均”的顏色估計(jì),它是我們希望分割的那種顏色。讓這種平均色用RGB列向量m來(lái)定義。分割的目的是對(duì)圖像中的每一個(gè)RGB像素進(jìn)行分類(lèi),使其在指定的范圍內(nèi)有一種顏色或沒(méi)有顏色。為執(zhí)行這一比較,我們需要一個(gè)相似性度量。最簡(jiǎn)單的度量之一是歐幾里得距離。令z表示RGB空間的任意點(diǎn)。若z和m之間的距離小于指定的閾值T,則我們說(shuō)z相似于m。z和m之間的歐幾里得距離公式得:
D(z,m)=∣∣z?m∣∣=[(z?m)T(z?m)]1/2=[(zR?mR)2+(zG?mG)2+(zB?mB)2]1/2D(z,m) = ||z-m|| \\ \ = [(z-m)^T(z-m)]^{1/2}\\ \ = [(z_R - m_R)^2+(z_G-m_G)^2+(z_B-m_B)^2]^{1/2} D(z,m)=∣∣z?m∣∣?=[(z?m)T(z?m)]1/2?=[(zR??mR?)2+(zG??mG?)2+(zB??mB?)2]1/2
其中||·||是參量的范數(shù),下標(biāo)R、G和B表示向量m和z的RGB分量。D(z,m)≤T的點(diǎn)的軌跡是一個(gè)半徑為T(mén)的實(shí)心球體。由定義可知,包含在球體內(nèi)部或表面的點(diǎn)滿(mǎn)足特定的彩色準(zhǔn)則;而球體外面的點(diǎn)則不滿(mǎn)足。在圖像中對(duì)這兩組點(diǎn)編碼,如黑的和白的,產(chǎn)生一幅二值分割圖像。
對(duì)前述方程一個(gè)有用歸納是距離:
D(z,m)=[(z?m)TC?1(z?m)]1/2D(z,m)=[(z-m)^TC^{-1}(z-m)]^{1/2} D(z,m)=[(z?m)TC?1(z?m)]1/2
其中,C是我們要分割的彩色的樣值表示的協(xié)方差矩陣。該距離稱(chēng)為Mahalanobis距離。D(z, m)≤T的點(diǎn)的軌跡描述了一個(gè)實(shí)心三維橢圓體,它的重要屬性是其主軸取在最大的數(shù)據(jù)擴(kuò)展方向上。當(dāng)C等于單位矩陣I時(shí),Mahalanobis距離約簡(jiǎn)為歐幾里得距離。除了現(xiàn)在數(shù)據(jù)包含在橢球體內(nèi)而不是包含在圓球體內(nèi)之外,分割和在前段描述過(guò)的一樣。
其函數(shù)為:S = colorseg(method, f, T, parameters)
其中,method不是euclidean就是mahalanobis,f是待分割的RGB 圖像,T是前邊描述過(guò)的閾值。若選擇euclidean,則輸入?yún)?shù)是m,若選擇mahalanobis,則輸人參數(shù)是m和c。參數(shù)m是一個(gè)在上面描述過(guò)的向量m,它的形式不是行就是列,并且c是3×3協(xié)方差矩陣C。
輸出s是一幅二值圖像(和原始圖像同樣大小),在未通過(guò)閾值測(cè)試的點(diǎn)包含0,在通過(guò)了閾值測(cè)試的點(diǎn)包含1。1表示從基于彩色內(nèi)容的f中分割的區(qū)域。
colorseg的代碼:在http://fourier.eng.hmc.edu/e161/dipum/下載:imstack2vectors.m、covmatrix.m、colorseg.m
先選中卡通人物的衣服:
然后得到圖像:
其中C的主對(duì)角線包括RGB分量的方差,所以我們必須提取這些元素并計(jì)算它們的平方根,也就是代碼中的d = diag(C); sd = sqrt(d)'
當(dāng)我們的值越大,我們圖像分割的效果越不明顯。
當(dāng)值在10的時(shí)候,對(duì)于此圖,效果是最好的:
總結(jié)
以上是生活随笔為你收集整理的Matlab数字图像处理学习记录【5】——彩色图像处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 联想微型计算机拆装图解,笔记本电脑的拆卸
- 下一篇: 步进电机、伺服电机、舵机、无刷电机、有刷