鞠喜鵬,田富洋,李法德,王中華,朱 宏
(1.山東農業大學機械與電子工程學院,山東 泰安271018;2.山東園藝機械與裝備重點實驗室,山東農業裝備智能化工程實驗室,山東 泰安271018;3.山東農業大學動物科技學院,山東 泰安271018; 4.山東泰開箱變有限公司,山東 泰安271018)
在奶牛的養殖過程中,奶牛的表型特征是評價奶牛成長狀況的一項重要參數,包含奶牛的體尺、體重和體況等參數,體尺包括體高、體長、胸寬和腰角寬等,不僅能夠表達奶牛的生長發育狀況,反映奶牛的體態特征,還與奶牛的繁殖能力、產奶能力等性能有一定的相關性[1]。近年來,國內大規模的養殖場越來越重視牧場的機械化水平,但對于體尺測量仍采用人工測量方法[2]。人工測量不僅費時費力,還易受主觀影響,這種接觸式測量還會對奶牛產生應激性[3]。采用機器視覺的技術,可以實現無接觸測量,避免應激行為,提高工作效率。
運用機器視覺技術測量家畜體尺,國內外已有較多的研究,并取得了一定成果。王可等[4]和郭浩等[5]對生豬進行點云采集,實現了交互式體尺的測量。BEWLEY J M等[6]選擇奶牛在經過體重秤時采集牛體圖像,并對圖像進行人工手動添加測量點分析奶牛體況,進行奶牛的體況評分。可以發現,現階段機器視覺測量技術仍在試驗階段,測量的參數相對較少。為此,本文利用2臺Kinect獲取頂面和側面的深度圖像和點云數據,利用深度圖像識別奶牛表型特征,并結合點云數據讀取尺寸參數,搭建系統軟硬件平臺,利用該系統平臺對奶牛表型進行測量試驗,試驗結果表明該系統能夠較準確地測量出奶牛的體重、體高、體長和體寬等表型參數。
硬件系統主要由攔截裝置、體重采集裝置、圖像采集裝置和圍欄4大部分組成,如圖1所示。
其中攔截裝置包括前攔截裝置和后攔截裝置兩部分,由一臺電機帶動攔桿的起落實現對奶牛的攔截作用。該系統安裝在奶牛擠奶廳后的回欄通道中,奶牛在擠奶完成后回欄的過程中經過該系統,行走至前攔截裝置,安裝在一側攔桿上的RFID無線射頻讀卡器讀取到奶牛耳標信息數據,記錄奶牛編號。等到奶牛完全進入采集區域后,前攔截裝置攔桿降下,同時計算機管理控制中心完成對奶牛的信息采集,采集完成后,后攔截裝置攔桿升起,奶牛自行離去,待奶牛完全離開后攔截裝置后,后攔截裝置攔截降下,前攔截裝置攔桿升起,開始對下一頭奶牛的采集過程。奶牛在采集區域時計算機管理控制中心記錄保存該只牛的圖像、點云和體重等數據,以供體尺獲取、數據查詢和打印報表等使用。
系統算法分為信息采集過程和信息處理過程兩部分。信息采集過程是計算機管理控制中心通過串口接收無線射頻讀卡器讀到的奶牛編號和XK3190-A9稱量顯示控制器的體重數據,控制Kinect攝像頭拍攝深度圖像和點云數據,并完成3者的匹配。待采集完成后進入信息處理過程,通過數字提取算法對串口接收的數據提取有效數據,獲取奶牛體重。圖像處理算法對獲得的深度圖像先進行降噪預處理,利用背景減去法去除地面和圍欄等影響,然后對其閾值分割二值化圖像,并進行濾波、去除小塊區域、開閉運算和空洞填充等獲取完整的奶牛目標區域,對目標采用邊緣檢測、角點檢測及凸包運算等檢測特征點獲得奶牛特征點,獲取特征尺寸[7]。
1.2.1信息采集過程
無線射頻讀卡器、稱量顯示控制器及Kinect攝像頭通過USB串口連接到計算機,通過MATLAB中的serial函數創建串口并實現與無線射頻讀卡器跟稱量顯示控制器的通信。利用Kin2工具箱控制Kinect攝像頭,2臺Kinect分別連接到2臺計算機,通過TCPIP協議完成2臺計算機之間的通訊,通訊過程如圖2所示。
1.2.2信息處理過程
奶牛的體重在采集過程中容易受到奶牛的動態干擾,出現體重數值的跳動,造成數據讀取困難,對奶牛采集到的多組數據進行回歸分析及平滑處理,去除離散較大的數值,留下穩定時刻的平滑數據,并計算平均值,作為奶牛的體重。
Kinect v2.0輸出的深度圖像中每個點的像素值均代表此點位置物體到攝像頭的距離,距離越遠像素值越大。在實際的測量中,Kinect v2.0攝像頭發射的紅外光線的高度相干性,不可避免地會出現“散斑噪聲”,這樣就會造成物體的邊緣信息在深度圖像中出現嚴重的缺失。所以在處理深度圖像提取奶牛目標時,首先運用背景減去法消除來自地面及圍欄設備的干擾,其次利用閾值分割、濾波等算法去除細小噪聲的影響,最后對特征點提取與匹配獲得奶牛體尺[8]。
(1)背景減去法。背景減去法基本思想是將事先采集的背景圖像序列對每個像素進行統計,作為背景模型,把包含有目標的圖像與背景模型相減;其次將計算結果在一定閾值限制下進行二值化,判斷出當前圖像中出現的偏離背景模型值較大的那些像素,就是目標物體的像素。由于目標物體和背景在灰度或色彩上存在差別相減,閾值操作后得到的結果直接給出了目標的位置、大小和形狀等,從而得到較完整的信息。
采用MATLAB中abs()函數對圖像像素進行統計,比較無牛背景圖像跟有牛圖像中每個像素點的差值。由于在采集過程中攝像頭位置固定,所以無牛背景圖像和有牛圖像中的地面跟圍欄在兩幅圖像中的位置是大體不變的,故兩幅圖像中像素值變化最大的就是奶牛所在的位置。該方法得到的目標完整明顯,背景也被很好地去除,只留下了一部分細小噪聲。背景減去前后變化如圖3所示。
(2)閾值分割圖像。閾值分割方法有很多種,最常見的全局閾值分割有迭代閾值分割、基于灰度直方圖的閾值分割和最大類間方差閾值分割。該系統在反復調試和比較后選定迭代閾值分割法為奶牛圖像處理的閾值分割方法。
在迭代閾值分割中,假設有一副圖像f(x,y),Z(x,y)是圖像上(i,j)點灰度的概率。迭代法采用趨于逼近的思想,則通過迭代求圖像最佳分割閾值的方法如下,閾值分割的效果如圖4所示。
步驟一:求出圖像中的最小和最大灰度值Z0和Zk的閾值初值T0=(Z0+Zk)2。
步驟二:根據閾值Tk將圖像分割成目標和背景兩個部分,求兩個部分的平均灰度Z0和ZB。
(1)
(2)
步驟三:求出新閾值Tk+1。
(3)
步驟四:若Tk=Tk+1,則結束,否則,k+1趨向于k,轉到步驟二。
步驟五:步驟四結束后,Tk即為最佳閾值。
閾值分割后圖像含有大量的細小噪聲,去除細小噪聲將圖像二值化處理后對其通過濾波、開閉運算、空洞填充和連通區域面積檢測等算法刪除目標區域后的噪聲區域,使圖像只顯示目標區域[9]。該方法屬于比較有針對性的除噪方法之一。
(3)特征點提取與匹配。對只含有目標的圖像進行邊緣檢測、角點檢測和凸包檢測等。
圖像的邊緣是指其周圍像素灰度急劇變化的那些像素的集合,是像素最基本的特征[10]。邊緣存在于目標、背景和區域之間,它是圖像分割最重要的依據。邊緣是位置的標志,對灰度變化不敏感,因此,邊緣也是圖像匹配對的重要特征。
角點是二維圖像上鄰近圖像亮度變化劇烈或者圖像邊緣上面的極值點,沒有明顯的數學定義。為了提高處理實時性降低計算復雜性,需要減小數據量,但是需要保留這些圖像中信息豐富、具有描述圖像信息重要特征的點[11]。
根據角點利用凸包Convex hull運算,如圖5所示,經過大量試驗后,發現凸包檢測后凸包線的轉折點為奶牛的坐骨、腰角和胸寬等特征位置。
對圖像處理后得到奶牛的特征點,記錄特征點的位置,讀取該頭奶牛采集到的點云數據,通過特征點在圖像中的位置坐標提取到該點在點云數據中的坐標,該坐標即為該點在空間中相對于攝像頭的位置,讀取的點云之間的距離就是奶牛的體尺數據。
設計了一種奶牛幾何表型特征獲取系統,首先在奶牛場擠奶廳回欄通道中選取合適位置安裝系統硬件,進而可以獲取一個穩定可靠的背景。當有奶牛移動通過設備采集區域時,Kinect攝像頭捕捉奶牛的圖像并上傳至計算機進行程序處理。經過圖像預處理、特征點提取與匹配和奶牛輪廓匹配算法等步驟的處理,實現奶牛表型數據的獲取工作。表1為奶牛體高數據對比。

表1 奶牛體高數據對比
試驗圖像采集于山東省泰安市金蘭乳業,采集對象為現階段具有高效產奶量的荷斯坦奶牛,樣機現場試驗情況如圖6所示。
奶牛幾何表型特征獲取系統安裝在奶牛擠奶完成后的回欄通道中,充分利用了場地,每頭牛的采集時間較短,不會造成堵塞。利用角點檢測和凸包檢測結合的圖像處理方法,能夠有效獲取奶牛的特征位置,減少處理的復雜性。利用2臺Kinect攝像頭分別對側面和頂面進行采集,獲取到的數據更加全面。將該奶牛幾何表型特征獲取系統獲取的奶牛體尺數據與人工測量的數據進行比較,其準確率高達96.1%,能較準確地獲取奶牛體尺數據。系統工作穩定、測量精度高,為實現數字化養殖打下了基礎,具有很好的應用前景。