張寶全,陸輝山,王福杰,李明明,王馨宇
(1. 中北大學機械工程學院,太原市,030051; 2. 中北大學儀器與電子學院,太原市,030051)
隨著現(xiàn)代化技術的不斷提高,蛋雞福利化養(yǎng)殖的呼聲日益高漲,而散養(yǎng)模式給蛋雞提供較大的活動空間,蛋雞可以自由覓食、奔跑、展翅等,是未來福利化養(yǎng)殖的一種趨勢[1-3]。近年來,機器視覺技術在家禽智能化養(yǎng)殖中得到了廣泛應用[4-7],由于養(yǎng)殖環(huán)境的多樣性以及多只雞聚集粘連的情況,如何從復雜背景中將粘連個體準確分割,仍然是目前個體識別與計數(shù)的難點。
針對粘連個體的分割方法,國內(nèi)外學者進行了相關研究,柳冠伊等[8]對粘連二值圖使用歐氏距離變化,在距離圖的基礎上進行分水嶺分割,實現(xiàn)了玉米果穗粘連籽粒的分割。張建華等[9]在分水嶺分割方法的基礎上,結(jié)合最小二乘圓誤差理論,根據(jù)不同極小值閾值實現(xiàn)棉花葉部粘連病斑的分水嶺分割,但對大小不一的粘連病斑會造成欠分割。韓書慶等[10]先使用決策樹模型(Decision Tree Based Segmentation Model, DTSM)分割方法得到群養(yǎng)豬的二值圖,利用標記符控制的分水嶺算法分割粘連豬體,該方法僅限于淺色豬只的分割。Farhan等[11]針對二值圖像凸塊分割問題,提出了利用變尺度矩形窗口求凹點對的一種方法,結(jié)果表明該方法具有較高的準確性,對細胞團塊的分割效果較好。Wang等[12]針對圓形顆粒粘連,提出了一種基于形態(tài)學和人眼視覺認知機制的附著粒子分析系統(tǒng),該系統(tǒng)對非圓形顆粒的分割有待考驗。Ulle等[13]提出了一種基于曲率和凸殼相結(jié)合的組織病理學圖像凹點檢測方法,該方法可以同時識別深凹點和淺凹點,但該方法僅識別凹點,對凹點的匹配沒有繼續(xù)研究。孫衛(wèi)紅等[14]針對粘連蠶繭難以分割定位的問題,提出了一種基于凹點定向腐蝕的圖像分割方法,該方法對圖像邊界的粘連蠶繭也能實現(xiàn)較好的分割。Baek等[15]利用凹點和邊緣信息對群養(yǎng)豬進行分割,在真實的養(yǎng)殖環(huán)境下測試,該方法可以較好的將粘連豬只分割。Miso等[16]針對粘連豬體分割問題,提出了基于卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)與圖像處理技術相結(jié)合的方法,該方法可以實現(xiàn)兩只粘連個體的分割,對多只豬體的粘連分割仍需要檢驗。高云等[17]提出了基于實例分割框架的粘連豬體圖像分割算法,為粘連豬體分割提供了新的方法,但該方法未在真實養(yǎng)殖環(huán)境下測試。在家禽的圖像分割上,國內(nèi)外學者著重研究了目標與背景的分割[18-19],而在粘連個體的分割方面研究較少。勞鳳丹等[20]針對粘連雞只利用改進的極限腐蝕及凹點搜尋處理方法進行分割,該方法僅對兩只雞粘連進行試驗,未對多只雞的粘連進行試驗。Nakarmi等[21]使用分水嶺方法分割粘連雞只,該方法對復雜的粘連雞體分割還需進一步試驗。
以上方法大致可分為基于改進的分水嶺方法、基于凹點分析的方法以及基于深度學習的方法,由于家禽的形態(tài)多變,很容易造成多個極小值的出現(xiàn),所以不適合用分水嶺方法??紤]到雞體呈橢圓形并且粘連雞體輪廓存在凹特性,所以本文提出了一種基于凹點分析法的粘連雞體分割新方法,該方法可為后續(xù)監(jiān)控雞群個體健康狀況提供技術支持。
試驗在山西省大同市某公司進行,綠殼蛋雞采取散養(yǎng)模式,并且每個雞舍搭配一個舍外活動區(qū),供蛋雞自由活動。試驗個體選用20周齡的綠殼蛋雞。在閑置雞舍內(nèi)搭建8個1 m×1.3 m×1.5 m的雞籠,每個雞籠飼養(yǎng)1~5只蛋雞,通過雞籠外側(cè)固定的料槽和水槽提供雞的喂料與飲水。在每個雞籠中心距地面2 m高處安裝相機,8路相機與硬盤錄像機相連,硬盤錄像機連接一臺顯示器,可以實時觀察雞舍內(nèi)的狀況。圖像獲取系統(tǒng)如圖1所示。
(a) 試驗現(xiàn)場
(b) 圖像獲取系統(tǒng)示意圖
本文首先在不同顏色空間下使用OTSU算法結(jié)合形態(tài)學運算得到粘連雞體的二值圖,然后對粘連雞體的凸缺陷進行分析,針對不同的凸缺陷,使用不同凹點檢測算法得到粘連區(qū)域的凹點,最后對凹點進行隨機匹配找到正確的匹配方式,算法流程圖如圖2所示。
圖2 分割流程圖Fig. 2 Flow chart of segmentation
OTSU算法是依據(jù)圖像中像素值的分布自動計算背景與前景的分割閾值的自適應全局閾值分割方法,該方法的關鍵是如何確定出最佳的分割閾值[22-23]。
對于本文試驗對象綠殼蛋雞來說,蛋雞頸部與尾部的羽毛顏色通常比其他部位的羽毛顏色較深,如果在單一的顏色空間下使用OTSU算法處理,很容易造成蛋雞某些部位的缺失,所以本文通過在RGB、HSV顏色空間下分別使用OTSU算法進行圖像分割。
如圖3所示,上面四幅圖為基于RGB顏色空間的處理,下面四幅圖為基于HSV顏色空間的處理。圖3(a) 為原圖,使用OTSU算法分割后(圖3(b)),RGB原圖中蛋雞的頭部、脖子以及雞身顏色較深的地方被當成背景處理了。而反觀HSV原圖可以看出,蛋雞的頭部、脖子以及雞身顏色較深的地方與其他部分有明顯的對比,經(jīng)過OTSU算法分割后,正好保留了雞只顏色較深的地方。
在兩種顏色空間下分別使用OTSU算法進行自適應閾值分割后,還殘留漏糞網(wǎng)、飼料以及漏糞網(wǎng)支架等干擾物,使用形態(tài)學開運算可以濾除大部分的背景,采用圓形結(jié)構元素,大小為5像素,結(jié)果如圖3(c)所示。形態(tài)學開運算后圖中還保留部分偽目標,并且雞體存在細小的孔洞,使用小面積去除與孔洞填充(小面積閾值為100像素),這樣不僅濾除了小面積偽目標同時也消除了雞體孔洞,如圖3(d)所示。
最后利用圖像與運算將在兩種顏色空間下得到的目標提取圖像疊加,經(jīng)過形態(tài)學處理后即可得到完整的目標提取圖像。對圖3(d)進行疊加,疊加后如圖4(b) 所示,可以看出,雞體之間還存在細小的孔洞,對其進行孔洞填充后如圖4(c)所示。對圖4(c)邊緣檢測后與原圖疊加(圖4(d)),可以看出,圖像預處理后雞只保留較完整,并且很好地去除了漏糞網(wǎng)、飼料以及料槽等干擾物。
(a) 原圖
(b) OTSU算法分割
(c) 形態(tài)學濾波
(d) 小面積去除及孔洞填充
(a) 原圖
(b) 疊加后
(c) 孔洞填充
(d) 輪廓擬合
通過分析粘連雞只二值圖,雞體呈橢圓形并且粘連雞體輪廓存在凹特性,所以本文選用凹點分析法分割粘連雞體,首先通過粘連判別提取粘連區(qū)域,然后通過對凸缺陷分析檢測出正確凹點,最后利用凹點隨機匹配法實現(xiàn)粘連區(qū)域的分割,具體粘連分割步驟如下。
由于蛋雞形態(tài)多變,并且頭部與翅膀的變化較大,選用連通區(qū)域的輪廓復雜度形狀因子與最大面積閾值作為粘連判別的參數(shù),形狀因子
(1)
式中:A——連通區(qū)域面積像素;
C——連通區(qū)域周長像素。
SF取值范圍為[0,1],當連通區(qū)域形狀越接近圓形,形狀因子越趨向1,相反,連通區(qū)域形狀越復雜,形狀因子越趨向0。如圖5(b)所示,三個連通區(qū)域的形狀因子分別為0.312 98、0.613 96、0.661 77,可以看出,通過形狀因子能區(qū)分粘連與非粘連區(qū)域,通過試驗分析,確定形狀因子閾值SF0為0.45,結(jié)合最大面積閾值Amax作為判斷粘連依據(jù),即某個連通區(qū)域滿足SF
(2)
(a) 原圖
(b) 連通區(qū)域形狀因子
(c) 提取粘連區(qū)域
凸包即為粘連區(qū)域的最小凸多邊形,凸包面積與粘連區(qū)域面積的差集即為凸缺陷,經(jīng)統(tǒng)計分析,凸缺陷面積大于1 000像素時,說明該凸缺陷內(nèi)存在凹點,所以選擇面積大于1 000像素的凸缺陷為待處理凸缺陷,這一步的目的是避免多余凹點的出現(xiàn)。對圖5(c)計算凸包、凸缺陷、待處理凸缺陷,結(jié)果如圖6所示。圖6(a)中灰色輪廓線即為粘連區(qū)域凸包,對凸包區(qū)域填充(圖6(b)),凸包面積減去粘連區(qū)域面積即為該粘連區(qū)域的凸缺陷(圖6(c)),計算每個凸缺陷的面積像素,提取面積像素大于1 000的凸缺陷作為待處理凸缺陷(圖6(d))。
(a) 粘連區(qū)域凸包
(b) 凸包填充
(c) 凸缺陷
(d) 待處理凸缺陷
3.2.1 凸缺陷分類
對每個待處理凸缺陷計算凸包,并提取凹區(qū)域(為避免混淆,使用凹區(qū)域命名),如圖7所示,圖7(a)為一個待處理凸缺陷,圖7(b)為對該凸缺陷提取凹區(qū)域。計算凹區(qū)域的面積。通過分析100個待處理凸缺陷的凹區(qū)域,發(fā)現(xiàn)待處理凸缺陷內(nèi)凹點的個數(shù)與凹區(qū)域面積大于500像素的個數(shù)相關,即
(3)
其中,a=1;b=N2-1。
式中:N2——凹區(qū)域面積大于500像素的個數(shù)。
本文將待檢測凸缺陷分為兩類,一類是凹點個數(shù)為1的凸缺陷,一類是凹點個數(shù)為N2-1的凸缺陷。
(a) 待處理凸缺陷(b) 凹區(qū)域
3.2.2 凹點檢測
方法原理:首先提取待處理凸缺陷輪廓,以輪廓像素為中心,計算該像素周圍25像素×25像素內(nèi)像素值為1的數(shù)量,數(shù)量最多的像素點即為凹點。具體執(zhí)行如下。
Step1:對每個待處理凸缺陷提取邊緣,然后與粘連區(qū)域輪廓疊加,提取重疊部分像素坐標,即為粘連區(qū)域待處理輪廓像素坐標。
Step2:以待處理輪廓像素為中心,使用25像素×25像素的正方形模板移動,每移動一次計算正方形模板內(nèi)像素值為1的數(shù)量(這一步是在圖5(c)中處理)。
Step3:提取凹點。對凹點個數(shù)為1的粘連區(qū)域凸缺陷,每個待處理輪廓上都對應一個數(shù)量最多的像素點,該點即為此凸缺陷內(nèi)的凹點,圖8為圖6(d)中四個凸缺陷待處理輪廓像素對應模板下像素值為1的數(shù)量,圖中使用黑色小方塊標記的點即為該凸缺陷內(nèi)的凹點。對于凹點個數(shù)為N2-1的粘連區(qū)域凸缺陷,執(zhí)行Step1、Step2后,統(tǒng)計出該凸缺陷輪廓像素對應模板內(nèi)像素值為1的數(shù)量,提取前N2-1個峰值,即為該凸缺陷內(nèi)的凹點。對圖7(a)中的凸缺陷進行凹點檢測,該凸缺陷內(nèi)N2為4,所以該凸缺陷輪廓存在3個凹點,如圖9所示,提取前3個峰值對應的像素點即為該凸缺陷內(nèi)的凹點。
(a) 凸缺陷一(b) 凸缺陷二
(c) 凸缺陷三(d) 凸缺陷四
圖9 對圖7(a)中的凸缺陷提取凹點Fig. 9 Extract the concave point of the convex defect in Fig. 7(a)
文獻[14]中利用正方形模板在粘連區(qū)域輪廓的所有像素點上滑動,本文先確定凹點存在的區(qū)域,然后只對該區(qū)域輪廓進行計算,減少了計算量并且避免多個凹點的出現(xiàn)。
對于兩只雞粘連,直接繪制經(jīng)過兩個凹點的直線分割粘連雞體;對于多只個體的粘連,將檢測到的凹點隨機連線,連接的原則是每個凹點只能連一次,每次連接后計算連通區(qū)域的個數(shù)和每個連通區(qū)域的面積,判斷條件如式(4)。
Nnum=N&&?Ai≤Amax
(4)
式中:Nnum——隨機連線后連通區(qū)域個數(shù);
Ai——連線后某個連通區(qū)域面積像素;
i——隨機連線后某個連通區(qū)域的序號。
如果式(4)成立,判定凹點匹配正確。圖10為圖5(c)中粘連區(qū)域的三種匹配方式,該粘連區(qū)域有三只雞粘連。圖10(a)中連通區(qū)域有三個,并且每個連通區(qū)域的面積都小于最大面積,所以為正確的匹配方式;圖10(b)不滿足每個連通區(qū)域的面積都小于最大面積,匹配不正確;圖10(c)中連通區(qū)域有4個,不滿足連通區(qū)域的個數(shù)等于粘連雞只數(shù)量,匹配不正確。
(a) 凹點匹配一
(b) 凹點匹配二
(c) 凹點匹配三
文獻[9]中,分別開展了不同數(shù)量粘連病斑分割試驗、粘連病斑分割方法對比及真實環(huán)境下病斑分割試驗共3個試驗,本文借鑒該試驗設計,對不同數(shù)量的粘連雞只進行分割試驗、與前人文獻中雞只粘連分割方法進行對比、對真實養(yǎng)殖環(huán)境下粘連雞體分割試驗。試驗的軟件平臺為Matlab r2017b,Windows 10版本64位操作系統(tǒng);硬件平臺為DELL品牌計算機,Intel(R) Core(TM)i5/3.2 GHz 處理器,內(nèi)存8.0 GB。
試驗選取2~4個粘連雞只圖像200幅,其中2個粘連雞只100幅,3個粘連雞只60幅,4個粘連雞只40幅。使用本文方法與基于極限腐蝕結(jié)合凹點搜尋方法[21]、基于分水嶺方法進行對比[22],統(tǒng)計平均分割準確率與平均運行時間,用以對比分析本文方法在粘連雞只分割中的性能。
不同數(shù)量的粘連分割試驗結(jié)果如圖11所示,從圖11中可以看出,基于凹點分析法的粘連雞體分割算法能較好的分割2~4個粘連雞只。
使用不同分割方法對提取的200幅樣本圖像進行處理,結(jié)果如表1所示,從本文方法的分割結(jié)果可以看出,對于2只個體的粘連,100幅圖像全部正確分割,分割準確率為100%;對于3只粘連雞體,60幅圖像中有6幅圖像分割錯誤,分割準確率為93.3%。其中2幅圖像存在一只蛋雞正好從另一只蛋雞身下穿過,導致粘連區(qū)域的面積過小,被判斷為2只個體粘連,造成欠分割,4幅圖像中蛋雞正在展開翅膀,造成分割錯誤;對于4只個體的粘連,40幅圖像中有6幅圖像分割錯誤,分割準確率為85%。其中3幅圖像存在一只蛋雞正好從另一只蛋雞身下穿過,被判斷為3只個體粘連,導致欠分割,另外3幅圖像由于粘連特別緊密,存在凹點的凸缺陷面積過小,沒有被識別為待處理凸缺陷,造成錯誤分割。本文方法對于不同數(shù)量粘連雞體的平均分割準確率為92.8%,平均運行時間為2.817 s?;跇O限腐蝕結(jié)合凹點搜尋方法的平均分割準確率為63.4%,平均運行時間為1.693 s,基于分水嶺方法的平均分割準確率為71.6%,平均運行時間為2.349 s??梢钥闯觯疚姆椒ㄔ谶\行時間上與其他兩種方法存在些許劣勢,但分割準確率遠高于其他兩種方法。尤其是隨著粘連數(shù)量的增加,本文方法依然能較好的實現(xiàn)分割,但基于極限腐蝕結(jié)合凹點搜尋方法對于4只粘連雞體的分割準確率僅為32.5%,基于分水嶺方法分割準確率為55%,分割效果欠佳。
(a) 原圖
(b) 目標提取
(c) 待處理凸缺陷
(d) 分割結(jié)果
另外,文獻[21]對檢測到的凹點使用最小距離點對連線的方法進行凹點匹配,對于粘連復雜的雞只容易造成錯誤匹配。本文方法囊括了所有的凹點匹配方式,并根據(jù)判別條件確定正確匹配方式,匹配準確率更高。
為了進一步驗證該文方法對粘連雞體分割的效果,從真實養(yǎng)殖環(huán)境下采集的圖像中選取3幅圖像進行試驗,如圖12(a)所示,從圖中可以看出蛋雞粘連數(shù)量較多,使得粘連分割難度增加。首先,使用OTSU算法結(jié)合形態(tài)學處理提取目標,分割效果如圖12(b),然后使用本文粘連分割方法對圖像中粘連區(qū)域進行分割。從圖12(c)分割結(jié)果可以看出,本文方法對圖中存在粘連的雞只實現(xiàn)了較好的分割,說明本文方法有較好的魯棒性,能夠適用于真實養(yǎng)殖環(huán)境下。
表1 不同方法對不同數(shù)量粘連雞只分割結(jié)果Tab. 1 Segmentation results of different numbers of adherent chickens by different methods
(a) 原圖
(b) 目標提取
(c) 分割結(jié)果
本文針對真實雞舍環(huán)境下采集到的視頻圖像粘連個體難于分割問題,提出了一種基于凹點分析法的粘連雞體分割方法,首先通過OTSU算法結(jié)合形態(tài)學運算獲得粘連區(qū)域二值圖,通過對粘連區(qū)域凸缺陷上的輪廓使用正方形模板確定凹點位置,最后通過凹點隨機匹配法正確分割粘連雞體。通過不同數(shù)量的粘連雞體分割試驗、不同方法與本文方法的對比試驗以及真實養(yǎng)殖環(huán)境下粘連雞體分割試驗,得出以下結(jié)論。
1) 對2~4只不同數(shù)量的粘連雞體進行試驗,平均分割準確率為92.8%,平均運行時間為2.817 s。
2) 本文方法與基于極限腐蝕結(jié)合凹點搜尋方法、基于分水嶺方法相比,運行時間略高,但本文方法的分割準確率比其他兩種方法高了至少21.2個百分點,本文方法的分割效果更好。
3) 對真實養(yǎng)殖環(huán)境下粘連雞體分割試驗表明,本文方法對圖像中粘連雞群能實現(xiàn)較好的分割。
本文算法也存在不足之處,隨著粘連數(shù)量的增加,凹點匹配種類也逐漸增加,導致算法運行耗時相對較長,目前深度學習方法已經(jīng)在豬、牛等大型牲畜個體識別方面取得了一定進展,在今后的研究中,將結(jié)合深度學習方法提高雞體分割的準確率,降低本文方法的運行時間。