金一初,馬 燕
(上海師范大學(xué) 上海 200234)
將圖像識(shí)別技術(shù)引入奶牛養(yǎng)殖,能加強(qiáng)奶牛管理和提高科學(xué)飼養(yǎng)作用。生物識(shí)別技術(shù)已較成熟,基于臉部、膚色、虹膜等的識(shí)別算法已被應(yīng)用于眾多領(lǐng)域。一般情況下,由于攝入的奶牛圖像背景雜亂,光照條件各異,故在識(shí)別前,須將奶牛從復(fù)雜的背景中分割出來。本文主要采用顏色聚類和區(qū)域生長的方法分割奶牛圖像,并根據(jù)奶牛特征進(jìn)行修正,從而實(shí)現(xiàn)奶牛與背景的有效分離。
區(qū)域生長算法是圖像分割的基本算法之一[1],但若將此算法用于整幅圖像,會(huì)由于遞歸層數(shù)太深而造成算法耗時(shí)。采用基于子塊的區(qū)域生長的算法能有效控制遞歸深度[2],從而提高分割性能,本文將采用類似算法結(jié)構(gòu)。
本文在子塊處理中采用聚類的方法,基于人類視覺特性提取代表子塊的顏色特征和紋理特征,通過將顏色聚類方法與基于子塊的區(qū)域生長算法的融合提高了奶牛圖像分割效果。
本算法的基本流程如圖1所示。
原圖像所采用的RGB色彩空間是一種被廣泛應(yīng)用的色彩空間,但對(duì)于一般情況下采集的奶牛圖像,由于光照等因素,視覺上相似的區(qū)域所代表的RGB值卻有較大差異。故本文采用CIE Luv空間來保證視覺一致性。在Luv空間中,L分量代表亮度,u和v分量代表色調(diào),利用u、v分量能有效排除光照對(duì)圖像分割的影響。
圖1 算法流程圖Fig.1 Flow chart of algorithm
1.2.1 子塊內(nèi)顏色聚類
首先將圖像進(jìn)行4×4大小子塊劃分,隨后確定視覺一致性距離dist,該距離是用于聚類的閾值,由實(shí)驗(yàn)確定其數(shù)值,根據(jù)已轉(zhuǎn)換為Luv空間的圖像,可將dist設(shè)為0.000 2。
1)以子塊的第一個(gè)像素點(diǎn) p1(L1,u1,v1)為聚類中心 C1,建立類別class1,且該類別的像素?cái)?shù)目N1為1。
2)對(duì) 子 塊 內(nèi) 的 每 一 個(gè) 像 素 pi(Li,ui,vi),計(jì) 算 其 到 class1的歐氏距離若 Di小于 dist,則將pi歸入class1,將class1的像素?cái)?shù)目N1增加1。同時(shí)修改class1的聚類中心其中若Di大于等于dist,則以該像素點(diǎn)位聚類中心C2,建立類別class2。若子塊中出現(xiàn)兩個(gè)及以上的聚類中心,則要分別計(jì)算每個(gè)點(diǎn)到各聚類中心的歐式距離,并對(duì)距離值進(jìn)行排序。若最小值小于dist,則將該像素歸入與之距離最小的那一類。
3)重復(fù)1)、2),將子塊內(nèi)所有像素遍歷一次。
4)為進(jìn)一步克服子塊內(nèi)顏色類別過多的現(xiàn)象,要對(duì)子塊內(nèi)部各類別進(jìn)行合并。分別計(jì)算各類別間的歐式距離Dc=若Dc小于dist, 則classj并入
5)經(jīng)塊內(nèi)類別合并后,塊內(nèi)的顏色類別已經(jīng)很少,實(shí)驗(yàn)表明塊內(nèi)類別已降至3~5種。隨后將采用符合人類觀察奶牛的視覺特性提取出代表子塊的顏色特征和紋理特征。具體提取算法見2.2節(jié)描述。
6)重復(fù)1)~5)將所有子塊遍歷一次。即完成子塊內(nèi)顏色聚類。
1.2.2 子塊內(nèi)顏色及紋理特征的提取
由于奶牛顏色相對(duì)單一,為提取顏色特征提供了便利。人類對(duì)景物進(jìn)行分割的時(shí)候一般是采用主色調(diào)原則,即在一個(gè)顏色相對(duì)一致的區(qū)域中盡管還存在一些與其余區(qū)域相比梯度較大的小面積區(qū)域,人眼會(huì)自動(dòng)將其過濾掉,并將其視為與區(qū)域其他的顏色一致。本文利用人眼的這一特點(diǎn)提取每個(gè)子塊的顏色特征。
對(duì)子塊內(nèi)各類別的class根據(jù)其所含的像素?cái)?shù)目進(jìn)行降序排列,提取所含像素?cái)?shù)目最多的class的L、u、v值作為主顏色值,提取位列第二的class的L、u、v值作為次顏色值。這樣每個(gè)子塊的顏色類別分別由主顏色和次顏色代表,忽略其他顏色類別,從而模擬人眼的顏色過濾功能。
僅提取子塊的顏色特征不足以反映子塊內(nèi)顏色的空間分布,因此要進(jìn)一步提取子塊的紋理特征,紋理的提取是基于L分量的。
其中,若 m=n,T(m-n)=0,若 m≠n,T(m-n)=1。 Tx反映的是子塊中水平方向的顏色變化程度,Tx=0代表水平方向上只有1種顏色,Tx=n則代表水平方向上有n+1個(gè)顏色區(qū)域。同理Ty反映的是子塊中垂直方向的顏色變化程度。
區(qū)域生長算法的基本思想是以圖像中任意像素點(diǎn)為中心,以一定的標(biāo)準(zhǔn)與其領(lǐng)域像素對(duì)比,若符合標(biāo)準(zhǔn)則將該領(lǐng)域像素記為與中心像素相同的標(biāo)記,并以該像素為中心再與其領(lǐng)域像素對(duì)比,以此類推[3-4]。區(qū)域生長法的優(yōu)點(diǎn)是算法簡單,易于編程實(shí)現(xiàn),但是遞歸深度較深,計(jì)算量較大,不使用于分辨率較大的圖像。在實(shí)際應(yīng)用中有很多針對(duì)區(qū)域生長的改進(jìn)算法。如對(duì)已標(biāo)記過的像素做記錄,保證在之后的過程中不會(huì)重復(fù)比較[5];或規(guī)定以順時(shí)針方向?yàn)楸容^8領(lǐng)域像素的方向,起始的領(lǐng)域像素位置為上一次比較末尾像素位置逆時(shí)針旋轉(zhuǎn)90°,依次比較5次,從而減少37.5%的計(jì)算量[6]。本文采用基于子塊的區(qū)域生長法算法?;谧訅K的區(qū)域生長和基于像素的區(qū)域生長的原理一樣。在提取代表子塊的顏色和紋理特征后可以視為在一幅縮小16倍的圖像上進(jìn)行基于像素的區(qū)域生長,這樣可減少遞歸深度,提高計(jì)算效率。具體算法如下:
1)新建一矩陣,其大小與經(jīng)塊內(nèi)聚類后的圖像一致,且每個(gè)像素與原圖像的像素一一對(duì)應(yīng)。矩陣元素初始化為0。
2)根據(jù)每個(gè)子塊的顏色和紋理特征,用不同的生長標(biāo)準(zhǔn)進(jìn)行區(qū)域生長。
Case1:若對(duì)應(yīng)子塊只有一類顏色,則用該子塊的顏色標(biāo)注矩陣的對(duì)應(yīng)區(qū)域。
Case2:若對(duì)應(yīng)子塊有兩類及以上顏色,則以該子塊為種子點(diǎn)進(jìn)行八鄰域區(qū)域生長。生長條件如下:
①相鄰塊顏色類別相同;
②相鄰塊的主顏色歐氏距離小于閾值1;
③相鄰塊的次顏色歐氏距離小于閾值2;
④相鄰塊的水平紋理參數(shù)的歐氏距離小于閾值3;
⑤相鄰塊的垂直紋理參數(shù)的歐氏距離小于閾值4。
其中閾值①②③④由實(shí)驗(yàn)確定。閾值1、閾值2與dist的值相同,閾值3和閾值4取0.25。如果同時(shí)滿足上述5個(gè)條件,則將相鄰子塊合并,并用種子塊的顏色標(biāo)注矩陣的對(duì)應(yīng)區(qū)域。
3)重復(fù)(1)、(2)將所有子塊遍歷一次。若矩陣的對(duì)應(yīng)區(qū)域未被標(biāo)注,即對(duì)應(yīng)區(qū)域的值為0,則進(jìn)行區(qū)域生長,否則檢測(cè)下一個(gè)矩陣區(qū)域。
經(jīng)區(qū)域生長后,奶牛圖像分割已基本完畢,但是分割后的圖像尚存在多種顏色,需進(jìn)一步提取目標(biāo)。待分割的圖片將分成3類,一類是黑色區(qū)域,對(duì)應(yīng)奶牛的黑色斑紋;一類是白色區(qū)域,對(duì)應(yīng)奶牛的白色斑紋;最后一類是灰色區(qū)域,對(duì)應(yīng)背景。據(jù)此,要確定2個(gè)閾值,將圖片分割成3類。
在閾值的確定上,本文采用Otsu法的多閾值分割技術(shù)。Otsu法的基本原理為以最佳閾值將圖像的灰度直方圖分割成兩部分,使兩部分的方差取最大值,即分離性最大,使兩部分有最佳的分離性[7]。
二維圖像的灰度直方圖可以用各灰度級(jí)的出現(xiàn)概率Pi,(i=1,2,…,L)來表示,其中L為直方圖邊界。圖像灰度的均值、方差分別用 μ,σ2表示,有:
對(duì)于n類分割,各類的概率、均值、方差分別標(biāo)記為ωk,μk,σ2k(k=0,1,2,…,n-1),各分割閾值的組合標(biāo)記為 t={tk|k=1,2,……,n-1}。 有:
由于σ2作為圖像總方差是固定的,所以求類間方差的最大值和求類內(nèi)方差的最小值的等價(jià)的。如果能找出一組閾值t={tk|k=1,2,…,n-1},使類內(nèi)方差最小,則這組閾值即為最佳閾值。具體算法如下描述:
1)對(duì)于n類分割(分割類數(shù)由人工確定或其他分割算法給出),有n-1個(gè)待定閾值,其特定組合標(biāo)記為t={tk|k=1,2,…,n-1}。 可令 t0=0,使 t1在 t0+1~L-n+2 之間變化,t2在 t1+1~L-n+3 之間變化,…,tk在 tk-1+1~L-n+k+1 之間變化,…,tn-1在tn-2+1~L 之間變化,由 t0到 tn-1依次形成 n 重嵌套的搜索循環(huán);對(duì)于n為任意數(shù)的情況,嵌套搜索循環(huán)可以采用函數(shù)遞歸來實(shí)現(xiàn)。
i.由于待分割的圖片只需分成3類,遞歸深度只有3層,其效率可以滿足應(yīng)用要求。
由于圖像采集一般在牧場(chǎng)中完成,故背景比較雜亂,經(jīng)分割后背景部分仍會(huì)出現(xiàn)顏色與奶牛顏色相同的區(qū)域,一般以小洞或裂縫等連通區(qū)域的形式存在。本文采用快速八連通域標(biāo)記算法對(duì)這些連通區(qū)域進(jìn)行標(biāo)注,隨后將這些標(biāo)注過的連通區(qū)域覆蓋為背景色即可。
本文采用快速八連通域標(biāo)記算法對(duì)二值圖像進(jìn)行標(biāo)記。快速八連通域標(biāo)記算法是一種基于二值圖像的連通區(qū)域標(biāo)記算法[8],與傳統(tǒng)的像素標(biāo)記法和游程標(biāo)記法[9]相比,快速八連通域標(biāo)記算法可以邊掃描圖片邊標(biāo)記連通域;與基于區(qū)域生長法的標(biāo)記算法相比,快速八連通域標(biāo)記算法無需遞歸,大大減少了計(jì)算復(fù)雜度。
之前得到的奶牛圖片并非二值圖片,若想對(duì)該圖片中的背景部分進(jìn)行區(qū)域標(biāo)記,必須將已經(jīng)標(biāo)記為灰色的背景像素區(qū)域予以保護(hù),并將余下部分的像素進(jìn)行二值化。本文采用迭代法求出分割閾值。
分割閾值計(jì)算方法:
1)求出背景部分的最小灰度值z(mì)1和最大灰度值z(mì)2,其中z1>0,z2<1。 T0=(z1+z2)/2。
2)計(jì)算目標(biāo)與背景的平均灰度值:
②其中 z(x,y)是像素的灰度值,N(x,y)是權(quán)重系數(shù),這里取1,代表小于或大于閾值Tk的像素的數(shù)目。
3)迭代:Tk+1=(z0+zB)/2
i.如果 Tk+1=Tk,即 Tk收斂,則 Tk即為所求,否則重復(fù)2)、3)。
快速八連通域標(biāo)記算法的描述如下:
1)初始化。新建一矩陣,其尺寸與上一步得到的圖片矩陣相同,且每個(gè)像素與上一步得到的圖像的像素一一對(duì)應(yīng)。由于奶牛對(duì)象由數(shù)字0,1表示,所以連通區(qū)域初始化標(biāo)記i=2,以便將背景上的連通區(qū)域與奶牛對(duì)象區(qū)別開。num(i)表示第i個(gè)連通區(qū)域的像素?cái)?shù)目,初始化num(i)=1。從左到右,從上到下以此掃描圖像中的每一個(gè)像素,若遇到像素值不為1,則繼續(xù)掃描;否則對(duì)該像素八領(lǐng)域內(nèi)其中四個(gè)像素依次進(jìn)行判別。
2)判別與標(biāo)記標(biāo)準(zhǔn)如下:
以左上角像素,正上方像素,右上角像素和左邊像素的順序依次判別。
Case1:先判別左上角像素,若左上角像素值也為1,則用左上角像素的區(qū)域標(biāo)記i標(biāo)記該領(lǐng)域。同時(shí) num(i)=num(i)+1。
Case2:若左上角像素值不為 1,則判別正上方像素,若正上方像素值也為1,則用正上方像素的區(qū)域標(biāo)記i標(biāo)記該領(lǐng)域。同時(shí)num(i)=num(i)+1。
Case3:若正上方像素值不為 1,則判別右上角像素,若右上角像素值也為1,則用右上角像素的區(qū)域標(biāo)記i標(biāo)記該領(lǐng)域。同時(shí)num(i)=num(i)+1。
Case4:若右上角像素值不為 1,則判別左邊像素,若左邊像素值也為1,則用左邊像素的區(qū)域標(biāo)記 i標(biāo)記該領(lǐng)域。 同時(shí) num(i)=num(i)+1。
Case5:若左上角像素,正上方像素,右上角像素和左邊像素均不為1,則i=i+1,用新的連通區(qū)域標(biāo)記i標(biāo)記該領(lǐng)域。 同時(shí) num(i)=num(i)+1。
3)糾正標(biāo)記。掃描完整圖像后,仍會(huì)出現(xiàn)同一區(qū)域各部分標(biāo)記不一致的情況。在同一區(qū)域標(biāo)記變化的地方即相鄰像素點(diǎn)不同處會(huì)有以下4種情況:①當(dāng)前像素標(biāo)記與左邊像素標(biāo)記不同;②當(dāng)前像素標(biāo)記與右邊像素標(biāo)記不同;③當(dāng)前像素標(biāo)記與左下角像素標(biāo)記不同;④當(dāng)前像素與正下方像素標(biāo)記不同。針對(duì)以上情況可采取再度掃描圖像來對(duì)不一致的標(biāo)記進(jìn)行處理,從而將同一區(qū)域中不一致的標(biāo)記進(jìn)行更正。若當(dāng)前像素與左邊像素標(biāo)記不同,則用左邊像素標(biāo)記來更正所有與當(dāng)前標(biāo)記值相同的像素。同理更正其他3種情況。
4)將值大于1的像素設(shè)為0.5(灰色),這樣就彌補(bǔ)了背景中的小洞和裂縫。
下圖例能反映原始圖像通過本文提出的分割算法得出的分割效果。原圖1和原圖2分別反映了在低照度和高照度條件下的原始圖像采集場(chǎng)景。分割效果1和分割效果2分別對(duì)應(yīng)圖1和原圖2的分割結(jié)果。通過對(duì)4副圖像對(duì)比可以發(fā)現(xiàn)分割效果能較好地表達(dá)奶牛的基本輪廓和基本顏色特征,并且高照度條件下的分割效果要比低照度條件下的分割效果好。
本文使用Matlab實(shí)現(xiàn)算法對(duì)50幅奶牛圖像進(jìn)行分割,分割準(zhǔn)確率達(dá)到80%以上。實(shí)驗(yàn)表明分割效果符合人的視覺感知結(jié)果,基本滿足奶牛識(shí)別等后續(xù)工作。實(shí)地采集的圖片經(jīng)過本文提出的算法處理后將雜亂無章的背景基本去除,突出奶牛的基本輪廓和身體花紋,為后續(xù)的識(shí)別工作提供了識(shí)別的幾何范圍和特征參數(shù),從而減少了識(shí)別過程的計(jì)算量。在進(jìn)行分割的過程中,由于奶牛的顏色與背景顏色比較接近,往往奶牛的輪廓并非是一個(gè)相對(duì)封閉的邊界,從而導(dǎo)致了背景和奶牛的部分區(qū)域是連通的,對(duì)后續(xù)的識(shí)別造成了不便。在以后的研究中將著重改進(jìn)對(duì)奶牛輪廓部分的分割,以進(jìn)一步縮小識(shí)別的范圍。
圖2 分割前后效果對(duì)比Fig.2 Comparison between pre segmentation and after segmentation
[1] 章毓晉.圖像工程(中冊(cè)):圖像分析[M].2版.北京:清華大學(xué)出版社,2005.
[2] 李慶忠,石巍,褚東升.一種融合聚類與區(qū)域生長的彩色圖像分割方法[J].計(jì)算機(jī)工程與應(yīng)用,2006,42(14):76-78.LI Qing-zhong, SHI Wei, CHU Dong-sheng.A color image segmentation method by fusion of clustering and region growing [J].Computer Engineering and Applications,2006,42(14):76-78.
[3] TIE Qi-chen,YI Lu.Color image segmentation-an innovative approach[J].Pattern Recognition,2002 (35):395-405.
[4] Tremeau A,Borel N.A region growing and merging algorithm to color segmentation[J].Pattern Regcognition,1997,30(7):1191-1203.
[5] 陳方昕.基于區(qū)域生長法的圖像分割技術(shù)[J].科技信息,2008(15):58-59.CHEN Fang-xin.The segmentation algorithm based on the region growing algorithm [J].Science & Technology Information,2008(15):58-59.
[6] 鄒耀斌,高輝.區(qū)域生長算法進(jìn)行肺的CT圖像分割[J].電腦編程技巧與維護(hù),2009 (3):66-68,79.ZOUYao-bin,GAOHui.ThesegmentationofCTimageprocessed by region growing algorithm[J].Computer Programming Skills&Maintenance,2009(3):66-68,79.
[7]殷蔚明,王典洪.Otsu法的多閾值推廣及其快速實(shí)現(xiàn)[J].中國體視學(xué)與圖像分析,2004,9(4):219-223.YING Wei-ming,WANG Dian-hong.Generalization and quick approach of Otsu S method for multi-threshold image segmentation[J].Chinese Journal of Stereology and Image Analysis,2004,9(4):219-223.
[8] 李芳,吳斌,張紅英.基于快速8一連通域標(biāo)記的視頻字幕提取新算法[J].視頻應(yīng)用與工程,2009,33(2):69-71.LI Fang, WU Bing, ZHANG Hong-ying.New algorithm for video caption extraction based on 8-connected components labeling[J].Video Application&Project,2009,33(2):69-71.
[9] 蔡世界,于 強(qiáng).基于游程編碼的連通區(qū)域標(biāo)記算法優(yōu)化及應(yīng)用[J].計(jì)算機(jī)應(yīng)用,2008,28(12):3150-3153.CAI Shi-jie,YU Qiang.Optimization and application of connected component labeling algorithm based on run_length encoding[J].Computer Applications, 2008,28 (12):3150-3153.