武堯,劉振宇,張宏嬌
(山西農(nóng)業(yè)大學 信息科學與工程學院,山西 太谷 030801)
豬的體重是評價其飼養(yǎng)過程生產(chǎn)水平多項指標的依據(jù)。傳統(tǒng)的測量方法為人工接觸測量,如采用體重箱和電子稱等不僅費時費力而且會給豬造成應(yīng)激反應(yīng)導致其生產(chǎn)性能下降、發(fā)病甚至死亡。因此在生產(chǎn)實踐中,豬的生長期大多只能測量1次體重。利用計算機和視頻技術(shù)通過實時拍攝,計算機獲取和分析處理視頻圖像來評估種豬的體尺,估算其體重,可以監(jiān)測種豬生長,也有助于研究豬生長情況。與傳統(tǒng)方法相比,種豬不會受到驚擾,減少了應(yīng)激和物理傷害,這對于母豬尤其妊娠母豬格為重要。
基于機器視覺的豬個體的研究在諸多方面已取得較多成績。國內(nèi)學者楊艷等人通過圖像提取用圖像投影面積與豬體重相關(guān)性來估算體重。英國學者Schofield等人利用圖像處理技術(shù)分析了3種豬的投影面積和體重的關(guān)系,研究得出隨日齡的增加體重和相關(guān)形態(tài)參數(shù)的變化趨勢。日本學者H.Minggawa利用投影在豬身上的網(wǎng)格線的視差與豬體高的非線性關(guān)系近似估計其體高,并利用經(jīng)驗公式計算豬的體重。國內(nèi)對于同類無應(yīng)激的豬個體識別還處于研究階段,僅是在利用計算機視覺技術(shù)識對圖像投影進行分析估算體重。尚未見利用圖像處理方法結(jié)合算法估算模型對豬個體體長、體重、腱圍等要素全方面評估。為此,本文設(shè)計利用OpenCV計算機視覺技術(shù)結(jié)合豬畜體積評估算法建立評估模型,通過2臺網(wǎng)絡(luò)攝像機獲取豬畜活動圖像流經(jīng)過圖像分析得到母豬體尺參數(shù)。結(jié)合評估模型最終估算母豬其體重。
選用運城某豬場60頭處于生長不同階段的母豬作為試驗對象,利用2臺高清廣角攝像機對母豬進行實時圖像采集,通過局域網(wǎng)在電腦上顯示采集圖像并進行相應(yīng)處理。試驗基本裝置見圖1。
將待測豬畜置于檢測范圍內(nèi),并在其背部,側(cè)面黏貼20cm×40cm的紅色標簽卡作為標定參考,在豬畜處于站立姿勢的情況下從其上方、側(cè)臉兩個方位進行拍攝。
在豬畜沿著身長的背部和側(cè)方向上粘貼矩形的紅色標簽,通過OpenCV庫中的函數(shù)colorMarkDet檢測顏色標記塊,若檢測出的顏色標記塊在RGB顏色空間中的值近似于紅色,且顏色標記塊的四個角近似與90°,則認為找到了預(yù)設(shè)的貼有標簽的目標,通過在函數(shù)中預(yù)設(shè)的標簽大小,對圖像中紅色標簽面積投影進行比例換算,根據(jù)比例值計算豬畜外接框大小,并在圖像中繪畫外接框。垂直畫面的外接框長、寬數(shù)值反映豬畜體長、體寬。側(cè)面畫面的外接框反映豬畜體長、體高。通過兩幅畫面的體長數(shù)據(jù)進行校驗。當兩個體長數(shù)據(jù)誤差大于±5cm時,則進行重新采集圖像。
在空間上,豬畜腱圍可以近似的看作是求一個以豬畜背寬最大值為短半徑的橢圓周長,考慮到?jīng)]有精確的求橢圓周長的初等數(shù)學公式,我們假設(shè)使用一個以短邊長(豬背寬最大值)為半徑的圓周長乘以腱圍擬合系數(shù)等于近似橢圓的周長,通過數(shù)學推導得出腱圍擬合系數(shù)L,這樣,就可以只通過背寬最大值來計算豬的近似腱圍了。經(jīng)計算腱圍擬合系數(shù)L=0.727腱圍計算公式為
腱圍=2×π×體寬×L
根據(jù)國內(nèi)學者肖丑的牲畜體重評估測法,建立豬畜體重評估模型,計算公式如下:
體重=腱圍×體長/X
注:X肥胖豬為142,精瘦豬為162,體脂均勻為156。
2.1.1 前景學習
針對豬場特殊環(huán)境,前景檢測部分主要使用PBAS檢測算法,PBAS算法具有建立背景模型更簡便、自適應(yīng)判斷閾值和學習率、適應(yīng)光照變化等優(yōu)點,在判定閾值和背景更新率等方面可根據(jù)背景復(fù)雜度而控制充分針對豬舍陰暗、潮濕等特點進行背景檢測。PBAS算法針對單個像素進行的統(tǒng)計背景建模,在此基礎(chǔ)上進行前景檢測。但當目標面積大或者運動緩慢是會得到一個不完整的前景,降低了算法的檢測率。根據(jù)實際情況分析,豬舍窄小并且同一豬舍飼養(yǎng)多只豬畜,豬畜活動較為緩慢。因此針對這種情況,我們提出改進的背景復(fù)雜度通過前景計數(shù)機制來防止目標物因靜止而被更新為背景。
(1)背景復(fù)雜度
結(jié)合區(qū)域復(fù)雜度信息,通過水平方向和垂直方向的Sobel算子對圖像進行邊緣檢測。
用fv和fh分別與圖像進行卷積,得到圖像Ev和Eh。取梯度值G(xi)來衡量區(qū)域結(jié)構(gòu)背景復(fù)雜度。
梯度計算公式:
取以像素點xi為中心的5×5窗口Z(xi),定義該點與窗口內(nèi)其他點的顏色差值的平均和為區(qū)域顏色背景復(fù)雜度C(xi):
其中,Ic為該點各通道的像素值,如在RGB圖像中Ic表示Ir,Ig和Ib。結(jié)合區(qū)域信息的背景復(fù)雜度COM(xi)為:
背景復(fù)雜度控制判斷閾值和學習率更新公式為:
因?qū)W習率T(xi)與背景更新的概率成反比,所以背景越復(fù)雜時,就應(yīng)該以越小的概率去更新背景,即背景的復(fù)雜度增大,T(xi)也增大。這樣,就在原像素級背景復(fù)雜度的基礎(chǔ)上以加權(quán)的形式融入了區(qū)域信息。
(2)前景計數(shù)機制
在PBAS算法中,一個運動的前景目標如果停下來,就會迅速被更新為背景。
在實情況中,豬畜的活動較為安靜。PBAS算法會將待測豬畜更新為背景,通過前景計數(shù)器TOM(xi)來檢測靜止的前景,只有當一個點被判定為前景若干次以后,才會將其逐漸跟新為背景。TOM(xi)計數(shù)規(guī)則為:
TOMmax為對靜止前景的最長生命周期,根據(jù)經(jīng)驗可以設(shè)置為幀率的5倍。
(3)鬼影消除方法
采用原始PBAS算法進行的背景模型初始化過程時,如果有前景目標,會出現(xiàn)鬼影現(xiàn)象。針對鬼影現(xiàn)象,提出鬼影消除方法。取以像素點xi為中心的l*l大小的串口W(xi),對被判定為前景的像素點xi,取W(xi)窗口內(nèi)被判定為背景的點xn(n=1,2,…),將xi與xn的背景模型按照前景分割判定公式測試,如果xi能與某個背景點的模型匹配,則xi被認為是一個鬼影點。區(qū)域?qū)拥呐卸ü綖椋?/p>
PF(xi,xn)表示在像素層用xi取匹配xn的背景模型。若一個像素點在像素層被檢測為前景點,而RF(xi)的值為0,則說明這個像素點為鬼影點,具體規(guī)則如下:
F(xi)=0,RF(xi)=0,該點為背景點;
F(xi)=1,RF(xi)=1,該點為前景點;
F(xi)=1,RF(xi)=0,該點為鬼影點;
(4)評估系統(tǒng)PBAS算法改進流程圖
應(yīng)用在豬畜體積評估系統(tǒng)的改進算法核心圖如下所示:
采用梯度信息和顏色信息衡量區(qū)域背景復(fù)雜度,以加權(quán)的形式融合像素背景的復(fù)雜度,從而得到最終的背景復(fù)雜度,然后使用改進的背景復(fù)雜度控制判斷閾值和學習率的更新,在像素層分割完畢后,使用區(qū)域窗口進行鬼影消除,得到最終的分割結(jié)果,最終將檢測結(jié)果送入前景計數(shù)器,保證靜止前景檢測,如圖為算法改進前后靜止豬模型檢測效果圖。
當在攝像頭后置入靜止豬畜模型后,待測豬畜在背景更新后將被視為背景因而不能被檢測出。通過前景計算器等機制,改進后的PBAS算法背景模型更新慢,檢測的準確率大幅提高,改進后的算法消除了大部分噪聲點。這種改進后的算法更符合豬舍真實背景復(fù)雜等情況。
2.1.2 邊緣值檢測
豬畜體積評估系統(tǒng)采用求導算子技術(shù)來實現(xiàn)邊緣值檢測,基于最優(yōu)化算法的Canny算子具有信噪比大和檢測精度高等優(yōu)點。通過對傳統(tǒng)的Canny算子進行適應(yīng)性優(yōu)化來滿足對豬舍實際復(fù)雜的環(huán)境進行檢測。
(1)平滑圖像優(yōu)化
采用非線性帶權(quán)中值濾波來進行平滑圖像,首先按灰度值大小將領(lǐng)域內(nèi)的像素進行排序,將排序好的序列中間像素作為中間值輸出。其次,將中間輸出值和周圍像素灰度值作比較,將差值較大的像素值改為與周圍像素接近的值,來實現(xiàn)消除噪聲點。通過為濾波區(qū)域每個位置分配的權(quán)值來實現(xiàn)每個像素對結(jié)果的合理影響。
(2)梯度幅值計算
將傳統(tǒng)的Canny算子采用的2×2的模板改為3×3來防止檢測出假邊緣值因而丟失真實邊緣。通過8個領(lǐng)域像素計算x、y、45°、135°方向的梯度后,即可進行像素灰度梯度G(i,j)的計算,計算公式如下:
其中Gx(i,j)為x方向的梯度,Gy(i,j)為y方向的梯度,G45(i,j)為45°方向的梯度,G135(i,j)為135°方向的梯度。
(3)優(yōu)化閾值
根據(jù)梯度幅值反映出的周圍像素灰度變化情況,通過梯度幅值矩陣計算其平均梯度幅值。根據(jù)區(qū)域平均梯度幅值判斷周圍邊緣信息強弱,由于Canny算子中高閾值對最終邊緣的影響因素最大,因此主要對高閾值進行優(yōu)化。將整幅影像劃分為若干個3*3模板,并分別計算各模板當前像素平均梯度幅值,用平均幅度值代替原有梯度幅度值。找到平均梯度幅度值得最大值Gmax(i,j),獲取某個像素平均梯度幅度值GE(i,j),計算兩值的比值,與Canny方法中的高閾值THH相乘得到該像素新閾值。通過以上方法計算出所有像素新閾值。采用新的高閾值和低閾值進行邊緣提取,流程如下圖所示。
選定60頭成年母豬試驗驗證,去除一些非標準樣本,從中選取了21頭母豬作為實驗對象,測定數(shù)據(jù)如下表所示。
評估體重(KG) 實際體重(KG) 誤差(%)178.42 172.31 3.55 189.61 185.15 2.41 170.92 178.27 -4.12 181.29 179.11 1.22 192.34 186.15 3.33 159.53 163.14 -2.21 169.21 171.32 -1.23 204.34 200.14 2.1 206.13 205.11 0.5 211.20 211.25 -0.02 216.57 214.20 1.11 190.17 187.46 1.45 202.01 199.56 1.23 186.00 192.17 -3.21 204.16 201.94 1.10 192.59 197.15 -2.31 212.45 212.14 0.15 204.03 205.00 -0.47 198.27 195.33 1.51 196.50 199.40 -1.45 194.54 189.80 2.50
可以看出,改進后的算法提取的邊緣定位更加準確,輪廓更加清晰,連續(xù)性更好。測試結(jié)果與實際結(jié)果誤差保持在10%以內(nèi)。
本文依據(jù)待測豬畜活動量以及豬舍環(huán)境的復(fù)雜度,基于傳統(tǒng)的前景學習PBAS算法和Canny邊緣值檢測算法進行優(yōu)化,通過計算背景復(fù)雜度、增加前景計算機制、鬼影消除法來提高檢測率降低噪點。通過對圖像進行平滑優(yōu)化、改進梯度幅值、優(yōu)化閾值等方法,降低待測物體邊緣誤檢率,使邊緣圖像輪廓更加清楚,連續(xù)性更好。試驗結(jié)果表明,豬體積評估系統(tǒng)檢測準確率達95.7%,能較好的對豬畜進行體積、重量、腱圍等相關(guān)生長數(shù)據(jù)進行評估。