熊雙輝 孫振華
(東南大學自動化學院 江蘇 南京 210000)
隨著小康社會的逐步建成,生活質量的逐年提高,人們對乳制品的需求也大大提高。總體來看,我國的奶牛養殖業中還存在很多的問題[1],主要表現在養殖管理的自動化程度不夠高。比如,作為原奶下線的第一道工序,奶量測產在養殖管理過程中扮演著重要的角色,但在實際牧場環境下,奶量測產更多地是通過人工抄錄的方式來進行。因此,原奶的測產對提高奶牛的產量及質量意義非凡。
在國外,很多發達國家很早就將計算機技術引入奶牛養殖業的現代化管理,以達到科學養殖的目的。其中,尤以以色列的阿菲金、SCR兩家公司的綜合養殖系統最為先進[2]。阿菲金和SCR管理軟件,主要通過計步器及其接收裝置來監控奶牛每天的產奶量等信息[3]。國外的養殖系統現代化程度高,技術先進、集成度高、專業性強,但是很難將其集成到我國現有的養殖管理系統之中。
然而,我國奶牛養殖業的現代化管理起步較晚,且正在從傳統的養殖管理方式向以計算機科學為主導的現代化養殖管理方式轉變。到2000年左右,我國的奶牛養殖系統仍以人工登記奶牛及奶量信息并通過手工輸入到服務器的方式為主。近年來,我國自行研發出多種奶量自動測產系統,其中熊本海等[4]開發的奶牛精細飼養綜合技術平臺中利用RFID、PDA及無線局域網等技術的配合使用對奶牛產量進行統計。余云峰、呂偉國等[5-6]提出采用RFID和總線傳輸奶量的測產系統。上述這些方法雖然達到了奶量測產的目的,但是存在奶牛與奶量無法對應、成本過高、現場環境造成總線故障率較高等問題。
基于此,本文設計了一種基于RFID[7]技術和圖像處理[8]的奶量測產系統,該系統包括奶牛占位識別和利拉伐面板識別兩個模塊。奶牛占位識別模塊:首先,通過RFID與光電傳感器獲取到奶牛身份信息以及占位信息;然后,通過兩種數據的融合,實現了奶牛身份與欄位的對應;最后,結合奶量識別結果,實現了奶牛與奶量的一一對應。利拉伐面板識別模塊:首先,提出一種軟硬件結合的濾波方法獲取到簡單背景的利拉伐面板圖像;然后,通過二值化及圖像分割等技術獲取單個數碼管圖像;最后,通過穿針法識別出單個數碼管讀數并進行組合以獲取識別結果。該系統避免了大量的總線,大大降低了傳統總線法傳輸實時奶量數據的設備故障率。
牧場采用的是利拉伐轉盤式擠奶機,該轉盤共有80個牛欄,分別對應80個利拉伐示數面板,如圖1所示。

圖1 轉盤式擠奶機
牧場原有的測產系統是采用B/S架構的MIS服務系統[9],該系統分為:供操作員操作的客戶機、提供數據操縱的Web前端服務器和提供數據存儲的數據庫服務器。牧場原測產系統架構如圖2所示。

圖2 牧場原測產系統架構
在充分分析了牧場現有的奶量測產系統的基礎上,針對現有測產系統中存在的低效、操作復雜、數據安全性差等問題設計出一套基于RFID技術和圖像處理技術的C/S架構奶量測產系統。該系統分為物理層、鏈路層和應用層。物理層中,攝像機負責采集利拉伐面板示數的圖像信息,RFID傳感器負責采集奶牛的實時站位信息以及奶牛身份信息,光電傳感器負責檢測轉盤反轉的情況,多圈光電傳感器負責檢測需要多圈擠奶的牛位,占位光電傳感器負責確定奶牛的占位信息;鏈路層中,通過USB、PCI總線、網線將物理層的數據發送到應用層;應用層中,完成RFID及光電傳感器數據的融合,得出占位信息,完成利拉伐面板的圖像處理,提取出奶量數據,將奶牛編號與產奶量對應起來,并最終通過WebService接口[10]將奶量數據傳入牧場服務器。測產系統整體架構圖如圖3所示。

圖3 測產系統架構圖
本系統在物理層采用RFID進行奶牛身份標識與奶牛占位識別。經過對比選擇,本測產系統選用耳掛式RFID標簽標識奶牛身份,選用腳環式RFID標簽標識牛欄信息。同時,考慮到標簽的位置不斷變化和識別的速度和距離等因素,最終決定采用圓極化的高頻RFID天線[11]。此外,為識別轉盤反轉,增加六個光電感器組合進行判斷;為識別奶牛一次擠奶多圈,增加一個光電傳感器識別多圈擠奶奶位;為確保奶牛確實進入牛欄,增加一個紅外傳感器判斷奶牛確實進入牛欄。基于RFID奶牛占位識別硬件結構如圖4所示。

圖4 占位硬件結構
綜合牧場現場情況,針對奶牛身份及占位識別,設計了多傳感器輔助檢測,多信息融合的解決方案。具體流程圖如圖5所示。
1) 奶牛身份及入欄檢測:在轉盤入口的正中央安裝一個RFID天線(圖中RFID2)用于檢測奶牛編號Ci,當RFID2感知到Ci說明奶牛Ci經過入口。為確保Ci確實進入欄位,在轉盤入口的轉盤內側欄位旋轉方向2/3位寬處安裝天線RFID3,當RFID3也檢測到Ci,則說明Ci確實進入欄位。最后為防止空欄時發生誤檢,在RFID3處又增加一個光電傳感器Red3,以確保有奶牛入位。
2) 欄位編號檢測:考慮到轉盤入口處已安裝RFID2和RFID3,因此,在轉盤旋轉方向隔兩個欄位處安裝RFID1以識別欄位標簽m,此時奶牛Ci對應的欄位為m+2。如此便保證了奶牛編號、欄位號以及產奶量的對應關系。
3) 轉盤反轉檢測:由于奶牛入欄情況復雜,經常會出現轉盤反轉的情況,因此在RFID1處增加六個光電傳感器Red1,編號1~6。如果擠奶轉盤正傳,則Red1光電傳感器組的觸發順序為1-2-3-4-5-6-1,反之則為6-5-4-3-2-1-6。可以據此檢測擠奶轉盤反轉,發生反轉時應舍棄此時各傳感器采集到的數據。
4) 多圈擠奶檢測:對于奶水豐富的奶牛可能需要多圈完成擠奶,因此不會從出口退出。但是,按照上述檢測方案,該奶牛就不會出現在入口處,這樣就會造成漏檢。在逆旋轉方向,入口下一欄位處安裝一個光電傳感器Red2,檢測多圈擠奶。Red2光電傳感器檢測到欄位m+3中有奶牛占位,則說明該奶牛在出口沒有出轉盤,需要多圈擠奶,此時軟件無需RFID2和RFID3以及Red3的信號,直接將奶牛編號寫入對應的欄位,防止多圈擠奶奶牛的漏檢。
傳統的奶量示數面板主要通過自帶的485總線提交采集到的奶量數據,該數據采集方法不能與奶牛身份信息相對應并且在奶廳惡劣的環境中485總線的故障率較高。基于此,通過在轉盤式擠奶機的內側安裝一臺工業相機作為圖像采集設備并通過圖像處理技術提取奶量。相機安裝如圖6所示。
在完成相機部署之后,通過軟件觸發方式采集的一天中不同時刻利拉伐面板的圖像如圖7所示。圖7中顯示的是不同時刻圖像識別區域的背景情況,可以看到,圖像中夾雜著來自燈光反射、太陽光直射等造成的噪聲,使得利拉伐示數面板的的背景變得尤其復雜,這對下一步提取示數所在的區域造成巨大的困難。

圖7 不同時刻相機采集的圖像(未加遮光罩)
針對上述圖像背景復雜的問題,設計出一種與利拉伐面板大小相適宜的遮光罩,如圖8所示。將遮光罩安裝在利拉伐面板的外圍,這樣就可以屏蔽掉來自燈光、太陽光等非人為因素的噪聲,現場試驗證明,設計出的遮光罩的效果比較理想,基本可以達到工程要求,進一步簡化利拉伐示數面板的背景,如圖9所示。

圖8 遮光罩設計圖(左)和實物圖(右)

圖9 相機采集的圖像(加遮光罩)
利拉伐奶量計數面板中由LED數碼管所顯示出的奶量的識別是本系統設計的核心環節,直接關乎本測產系統的正確率。通過圖像處理技術來獲取利拉伐面板示數,基本算法流程包括選取ROI、通道過濾、圖像二值化、圖像分割和數碼管數字識別等流程。基于圖像處理的利拉伐面板讀數識別算法流程圖如圖10所示。

圖10 利拉伐面板示數識別算法流程圖
3.2.1 選取ROI
由于利拉伐面板的安裝高度固定,面板間的間距近似相等,所以采集到的利拉伐面板圖像中數碼管的示數會出現在圖像中一個大致的區域。通過實際測量選定范圍為(200~1 000,300~450)的800×150大小的圖像作為ROI以降低后期圖像處理的復雜度。
3.2.2 圖像通道過濾及灰度化
由圖7可知,在加了遮光罩后,圖像的噪聲大大降低,避免了一些強噪聲的干擾,但是由于環境復雜,圖像中仍然會有很多其他的干擾噪聲,為了降低后期分割的復雜度,需要進一步提高圖像的信噪比。
仔細分析ROI圖像發現,圖像中的LED數碼管為綠色高亮,即圖像中數碼管上的每個像素點mi,j的mi,j(G)相對于mi,j(R)和mi,j(B)很大,根據這個特點,設計出以下通道過濾算法:
讀取ROI中沒一個像素點mi,j的RGB值,分別為三個通道設置閾值TR、TG和TB,當滿足:
mi,j(R)
(1)
時,設置mi,j(R)=0,mi,j(G)=0。
圖像ROI通道過濾后的圖像及進一步灰度化后的圖像如圖11所示。

圖11 濾色后圖像(左)及灰度化圖像(右)
3.2.3 圖像二值化
數碼管圖像的二值化是后續數碼管識別的基礎,好的二值化算法將對后續識別率的提高有一定的幫助。經過對比,本系統采用自適應閾值確定方法OTSU[12]算法進行圖像的二值化。該算法將圖像分為背景和前景兩個部分,前景和背景的類間方差越大則前景背景差別就越大,進而前景背景被錯誤區分的概率就越小。
對于圖像f(x,y),前景與背景的分割閾值記為T,前景像素點個數占比為ω0,且其平均灰度記為μ0;背景像素點個數占比為ω1,且其平均灰度記為μ1。圖像的平均灰度記為μ,類間方差記為g。
現有圖像大小為M×N,其中灰度值小于T的像素點個數為N0,大于T的像素點個數為N1,則:
(2)
μ=ω0×μ0+ω1×μ1
(3)
g=ω0×(μ0-μ)2+ω1×(μ1-μ)2
(4)
遍歷得到類間方差最大的T,即為二值化的分割閾值。圖像二值化后的圖像如圖12所示。

圖12 二值化后圖像
3.2.4 圖像形態學濾波
觀察圖12中圖像二值化后的結果,發現數碼管圖像中會有很多的空隙,為了不影響數碼管識別時白色像素點個數的統計,需要將二值化后的圖像進行形態學濾波以獲得較為飽滿的圖像。
膨脹[13]作為一種常見的形態學濾波算法,是通過求局部最大值來濾波。從數學角度來講,膨脹是將圖像A與B進行卷積操作,即將核覆蓋范圍內的最大像素值賦值給參考點。數學表達式如下:

(5)
形態學濾波后的圖像如圖13所示。

圖13 形態學濾波后圖像
3.2.5 圖像分割
在做完圖像的前期處理工作之后,對數碼管進行識別之前,需要首先鎖定示數所在圖像區域,然后再將示數區域的數碼管分割成單個數碼管進行識別。
現有圖像f(x,y),字符區域邊界:
xmin=minxxmax=maxxymin=minyymax=maxys.t.f(x,y)=1
(6)
進而可以通過橫軸方向的直方圖[14]將示數區數碼管分割成單個數碼管。字符區域定位及單個數碼管分割結果如圖14所示。

圖14 字符區域定位圖(左)及單個數字分割結果(右)
3.2.6 穿針法識別數碼管讀數
在了解七段數碼管的顯示原理之后,采用穿針法[15]進行數碼管識別,該算法的核心思想是先找出被點亮的數碼管,進而組合成一個數字。穿針法數碼管識別如圖15所示。并且本文根據工程需求,提出了適合本系統的數碼管識別編碼表,如表1所示。

圖15 穿針法數碼管識別示意圖

數碼管數字 0123456789F●AT-TTFTTTTTT-BT-TTTFFTTTF-CT-FTTTTTTTF-DT-TTFTTFTTF-ET-TFFFTFTFT-FT-FFTTTFTTT-GF-TFTTTFFTT-h/w>2h/w≈1
針對每一段數碼管,人為設定固定的坐標區域,并根據固定坐標區域的直方圖判定該段數碼管是否點亮。各段數碼管的判定區間如表2所示,其中x代表水平方向,y代表垂直方向,w代表單個數碼管圖像的寬度(像素),h代表單個數碼管圖像的高度(像素)。

表2 各段數碼管判定區間
3.2.7 數字重組
在完成圖像中所有數碼管數字的識別之后,需要進一步對之前的識別結果進行組合處理以得到最終結果。由于利拉伐示數板固定一位小數且最大整數部分一般不超過三位,重組算法即為:
(7)
式中:Ni為從左往右第i個數碼管識別結果;R為最終識別結果。res為最終識別結果,若第一個數碼管的識別結果為表示狀態的C或F字符需要自動忽略。
本套測產系統最終被部署到牧場提供的Windows XP系統上。在系統測試階段,先后解決了軟件自身設計不當造成的內存泄漏、并發處理不當等一系列問題,最終軟件可以穩定的運行在當前系統環境下。軟件運行主界面如圖16所示。

圖16 測產系統運行主界面
為檢驗本系統的可靠性,隨機采集了兩個牧場共計六個奶廳不同班次的奶量識別情況(如圖17所示)以及奶牛占位與奶牛身份的對應情況(如圖18所示)。

圖17 利拉伐面板示數識別率

圖18 奶牛占位識別率
從圖17可以看出在加遮光罩后奶量識別率受外界噪聲的干擾大大降低,最終識別準確率基本在99%左右,達到牧場要求。
從圖18可以看出,奶牛占位與奶牛身份對應的準確率基本穩定在99%左右,如此奶牛編號與產奶量可以很好地對應起來,用于牧場管理者的決策,基本滿足牧場的要求。
本文在深入了解牧場需求,認真勘查牧場現場情況的基礎上,研究了RFID技術在標識方面的應用以及圖像處理技術。并且在此基礎上設計并實現了基于RFID技術的奶牛身份及占位識別算法和基于圖像處理的利拉伐面板示數提取算法。基于上述兩個算法而設計的測產系統在保證識別正確率的同時,提高了系統的穩定性,降低了牧場的生產成本,將產奶量與具體的奶牛對應起來,這將具有很好的實用價值。