何東健 宋子琪
(1.西北農林科技大學機械與電子工程學院,陜西楊凌 712100; 2.農業農村部農業物聯網重點實驗室,陜西楊凌 712100;3.陜西省農業信息感知與智能服務重點實驗室,陜西楊凌 712100)
我國奶牛養殖業正由傳統方式逐漸轉變為自動化、精細化以及智能化大規模養殖模式,這對奶牛健康信息的智能采集提出了更高要求[1]。奶牛各項生理參數通常反映其生理狀態和健康情況,體溫是最具有代表性的生理參數。奶牛正常體溫為38.5~39.5℃,疾病、發情、熱應激等原因均會使奶牛體溫產生大幅變化。因此,奶牛體溫檢測對于奶牛疾病診斷、發情預測、健康管理等具有重要意義[2-3]。
按照測量部位奶牛體溫可分為體表溫度與體核溫度,通常體核溫度高于體表溫度。直腸更接近體核,不易受外界環境影響,溫度相對穩定,且能反映真實體溫,所以直腸溫度常被作為奶牛體溫[4]。傳統的奶牛體溫測量需要經驗豐富的專業人員采用獸用水銀或電子溫度計測量直腸溫度,其勞動強度大、耗時,且容易引起奶牛應激反應和疾病交叉傳播,不能滿足規模化精細養殖中快速、高精度測量溫度的需要。諸多學者進行了奶牛體溫自動測量方法研究,并取得了一些成果。文獻[5]基于ZigBee 無線傳輸技術實現了奶牛體征信息的監測,但無法實時監測奶牛體核溫度。文獻[6]設計的可穿戴式無線陰道探針基于電導率和溫度的測量以及運動感應來自動檢測奶牛體溫,但無法在較大區域內進行網絡建設。文獻[7]將瘤胃推注物通過定制的推注器放入奶牛瘤胃中,以監測奶牛體溫,但瘤胃內傳感器設備在數據傳輸時會受到奶牛姿態變化的干擾。
已有研究表明,奶牛眼睛區域內表皮最高溫度與直腸溫度具有較高的相關性,故可以通過眼表最高溫度預測奶牛體溫[8-9]。紅外熱成像(Infrared thermography, IRT)是一種安全、無創的熱分布可視化技術,該技術基于物體的熱輻射,通過光電紅外探測器將物體發熱部位輻射的功率信號轉換成電信號,進而得到反映物體表面溫度的熱紅外圖像。國內外學者應用IRT技術測量奶牛體表溫度,并探究了奶牛體表溫度與直腸溫度的關系[10-12]。文獻[13]采用紅外熱像儀測量奶牛眼睛表皮溫度,并用數字獸用溫度計測量直腸溫度,得出奶牛眼部溫度與直腸溫度具有一定的相關性、奶牛眼部溫度可代替直腸溫度的結論。文獻[14]利用IRT技術通過采集奶牛不同身體區域的圖像來測量奶牛體溫,并利用SAS分析數據,結果同樣表明,奶牛眼睛溫度與直腸溫度有較高的相關性,且根據眼部溫度能夠識別早期奶牛疾病。文獻[15]利用便攜式紅外熱像儀連續3 d采集10頭奶牛的熱紅外圖像,對圖像進行濾波處理后提取眼睛溫度,得到奶牛最高眼溫與奶牛體溫相關性最大,可通過奶牛眼睛溫度預測體溫。文獻[16]根據奶牛跨度信息,用最大內接矩形和最小外接矩形求取眼睛所在區域,以此獲取奶牛眼溫,以奶牛眼溫作為體溫標準,通過與奶牛乳房溫度進行比較來檢測奶牛是否患乳房炎,檢測準確率達87.5%,表明奶牛眼溫可以代表體溫。
由于熱紅外圖像受噪聲干擾,其對比度和分辨率較低,且在測溫過程中受奶牛姿態隨時變化等因素的影響[17-18],對其感興趣區域(Region of interest, ROI)的自動提取較為困難,眼睛等ROI區域只能借助特定軟件由人工選取[19-20],難以實現奶牛眼睛區域的自動提取和眼溫的準確檢測。本文提出一種從奶牛側視熱紅外圖像中自動檢測奶牛眼溫的方法,在基于差距度量的閾值提取奶牛目標的基礎上,提取骨架特征點并建立骨架樹模型,根據骨架樹模型特征識別奶牛頭部區域,將奶牛頭部輪廓特征與眼睛相對位置特征相結合,定位奶牛眼睛區域,并檢測奶牛眼睛區域最高溫度,以期為奶牛體溫的自動檢測、奶牛發情和疾病早期檢測、熱應激行為的判別提供技術支持。
以陜西省楊凌區科元克隆股份有限公司規模奶牛養殖場的美國荷斯坦奶牛為研究對象,從254頭奶牛中選取處于泌乳中期,年齡為3~4歲,體型相似的50頭作為試驗對象。
MAG62型紅外熱像儀(上海巨哥有限責任公司),圖像分辨率為640像素×480像素,像素尺寸為17 μm,測溫范圍為-40~80℃,測溫精度為0.1℃,由自帶軟件ThermoScope可得到所選測溫區域的最大、最小和平均溫度。
試驗于2020年1月10—17日在陜西省楊凌區科元克隆股份有限公司進行,牛場環境平均溫度11.5℃,相對濕度為23%~48%。奶牛擠奶前需要依次經過寬1.2 m、長6.5 m的通道進入擠奶間,在13:30—14:30擠奶期間,將紅外熱像儀放置在通道旁一側距通道5 m處拍攝奶牛側面熱紅外圖像(圖1)。人為設障使奶牛依次通過通道,奶牛約以0.1 m/s的速度用時1 min左右通過通道,人工控制每隔10 s左右拍攝1幅熱紅外圖像,保證每頭奶牛最少拍攝5幅圖像。紅外熱像儀通過以太網與計算機相連,利用ThermoScope軟件獲取熱紅外圖像,將熱紅外數據文件(擴展名為.ddt)保存在計算機中。
奶牛眼睛溫度提取包括奶牛目標提取、頭部區域識別、眼睛區域定位與溫度提取等步驟。
為獲取奶牛眼睛區域溫度,首先要提取奶牛目標。熱紅外圖像是溫度的可視化顯示,通過TheremoScope軟件將每一像素的溫度按照內部設定的溫度和顏色之間的關系轉換為偽彩色圖像。由于熱紅外圖像分辨度低且僅包含溫度信息,同時受拍攝場景的限制,奶牛目標受到欄桿遮擋,所以奶牛目標提取存在困難。本文通過圖像預處理與奶牛目標分割2個步驟實現奶牛目標提取。
2.1.1圖像預處理
紅外熱像儀獲取的熱紅外圖像如圖2a所示,除上述原因外,由于奶牛眼睛區域占整幅圖像比例過小,進一步加大了眼睛溫度檢測的難度。在TheremoScope軟件中讀入熱紅外圖像并獲得溫度矩陣,由于TheremoScope軟件中直接顯示的偽彩色圖像是通過自帶算法處理得到的,不是原始數據,為獲取原始數據且更加準確、快速地檢測溫度,將獲得的溫度矩陣轉換為灰度圖像[21],計算式為
gray_img[i,j]=M[i,j]/(max(M)-min(M))
(i∈[1,480],j∈[1,640])
(1)
式中 gray_img[i,j]——灰度圖像中第i行、第j列的灰度
M[i,j]——溫度矩陣中第i行、第j列的溫度,℃
max(M)、min(M)——溫度矩陣中最高與最低溫度,℃
由于原始溫度轉換的灰度圖像存在噪聲,在數值上多以孤立的極大值、極小值表現,對溫度讀取造成影響,故采用3×3窗口進行中值濾波以去除孤立噪點,得到濾波后的灰度圖像如圖2b所示。
2.1.2奶牛目標分割
熱紅外圖像中每一像素的像素值與溫度呈正比,所獲取的前景區域與背景區域溫度有顯著性差異,常用Otsu算法將目標從背景中分割出來[22]。但由于本試驗拍攝場景較為復雜,圖像受噪聲干擾,相近溫度點之間的對比度低,而基于差距度量的閾值分割方法具有一定的抗高斯噪聲干擾和抗對比度變化的特性,所以本文采用基于差距度量的閾值分割方法進行處理[23]。基于目標與背景的對比度差異,計算出目標與原圖以及背景與原圖的差距度量,最終獲取最佳分割閾值。
根據以上定義,設Pi為灰度級i的出現概率,L為圖像原始灰度級,得
Pi=ni/L(i∈[0,L])
(2)
式中ni——灰度級i出現次數
閾值s將像素分為背景與目標,2類像素出現的概率分別為PB與PT,其計算式為
(3)
(4)
背景、目標和整幅圖像平均灰度μB(s)、μT(s)和μ(s)為
(5)
(6)
(7)
背景與原圖以及目標與原圖之間的差距度量分別為
dTO=(μT(s)-μ(s))2PT
(8)
dBO=(μB(s)-μ(s))2PB
(9)
最后得到最佳閾值s的計算方法。
(10)
將g最大時的閾值s作為分割閾值,進行二值分割,得到二值圖像如圖3a所示。觀察發現二值圖像仍受到欄桿遮擋的影響,為去除欄桿遮擋影響,以原圖像減去頂帽操作后的圖像,使欄桿與奶牛連接區域斷開。由于奶牛體積較大,有最大的連通區域,因此采用空間聚類技術對圖像進行連通域處理,對圖3a中連通域按照面積進行排序,只保留最大連通域,最后用半徑為5的‘disk’型結構元素進行形態學‘閉’運算處理[24],去除孔洞,最終得到奶牛二值圖像如圖3b所示,可以看出遮擋欄桿、背景中的雜點均已去除,奶牛目標被準確分割。
奶牛眼睛在奶牛頭部內,故需要準確識別頭部區域。由于奶牛行走時姿態不同,頭部與頸部的位置不斷變化,僅利用奶牛圖像的跨度變化不能準確分割頭部,而骨架是奶牛等物體的中軸,與原始形狀連通性和拓撲結構分布性相一致,同時拓撲結構信息對柔性目標發生柔性變化時具有不變性[25-26],故本文基于骨架特征識別奶牛頭部區域。識別過程包括骨架特征點定位、建立骨架樹模型、頭部分割與識別3個步驟。
2.2.1骨架特征點定位
由于奶牛骨架中存在大量冗余骨架支,Zhang-Suen骨架提取算法具備速度快、可保證細化后曲線的連通性且無毛刺生成的優點,所以本文采用Zhang-Suen骨架提取算法[27],由圖3b提取的骨架如圖4a所示。針對骨架特點可將骨架特征點分為4類[28]:①分支點,當前像素點8連通域方向內存在2個以上像素。②端點,當前像素點8連通域方向內僅存在1個像素。③鄰分支點,當前像素點8連通域方向內存在2個像素且2像素在8連通域方向內連續。④一般點,剩余骨架像素上的連續點。
用骨架點T的8鄰域的像素值之和Tnum判斷特征點的類型,若Tnum≥2則為分支點,若Tnum=1則為端點。遍歷骨干線上所有特征點,結合4種點的特征來尋找主骨干線上的分支點與端點,得到結果如圖4b所示,其中分支點用紅色圓點標記,端點用綠色圓點標記,并記錄特征點位置。
2.2.2骨架樹模型建立
觀察奶牛骨架可發現,奶牛骨架是頭部、頸部、軀干、前肢、后肢和尾巴等部件骨架的拼接,骨架樹模型是反映骨架拓撲特性的樹狀結構[29],通過骨架樹模型可以確定目標各部分的連接情況,故可在2.2.1節的基礎上建立骨架樹模型[30]。以奶牛輪廓中最大內切圓半徑最大并且靠近目標重心的骨架特征點作為根節點,以根節點為起點遍歷骨架,將與根節點直接相連的分叉點或端點作為根節點的子節點,對每個子節點用同樣的方法找到各自的子節點,直到骨架上所有的分叉點和端點都在骨架樹中。骨架樹模型如圖5a所示,其對應的骨架如圖5b所示。
2.2.3頭部分割與識別
將奶牛二值圖像作為掩模與灰度圖像進行疊加,得到奶牛目標圖像如圖6a所示。由于奶牛從右到左行走方向固定,故奶牛頭部分割點為列坐標最小的一級子節點。將骨架映射到奶牛目標提取圖像上,如圖6b所示,通過骨架樹模型找到所有一級子節點,列坐標最小的子節點為頭部分割點,將分割點及與之相連的所有子節點組成的點視為一組數據,提取每組數據構成區域內的最小外接矩形[31],由于有些圖像的骨架端點未與輪廓相接,為防止分割區域不完整,故將最小外接矩形的4個坐標均增加10像素,提取算法公式為
(11)
式中EX_right——最小外接矩形的右邊界列坐標值,像素
EX_left——最小外接矩形的左邊界列坐標值,像素
EY_up——最小外接矩形的上邊界行坐標值,像素
EY_down——最小外接矩形的下邊界行坐標值,像素
Xn、Yn——第n個點的坐標值,像素
最終選取的最小外接矩形如圖6c所示,最小外接矩形框內的區域即為奶牛頭部區域。
在識別奶牛頭部區域后,根據頭部輪廓的形狀特征對眼睛區域定位后進而提取眼睛溫度。如圖7a所示,點O是頭部分割點,點A、B分別為奶牛頭部區域圖像中輪廓的起點與終點。從點A開始逆時針遍歷頭部輪廓AB,計算點O與AB上點之間的歐氏距離
(12)
式中 (xo,yo)——分割點O像素坐標,像素
(xi,yi)——輪廓點i像素坐標,像素
距離數組用dh表示為
dh=(do1,do2,…,don)
(13)
式中n——輪廓AB上的點數,個
將doi的變化作為頭部輪廓特征[32-33]。
圖7a所示奶牛輪廓其doi長度變化曲線如圖7b所示。由圖7b可以看出,有2個局部最大值dmax1和dmax2,如圖中紅點所示。
計算頭部輪廓上與頭部分割點距離等于dmax1的點定位為耳尖點,在圖8a中標記為點C;距離等于dmax2的點定位為鼻孔點,在圖8a中標記為點D。
隨機選取200幅奶牛頭部分割圖像,人工標記奶牛眼睛中心點,通過觀察發現人工標記的奶牛眼睛中心點與耳尖點、鼻孔點間連線的距離很小,故擬定位奶牛眼睛中心點E在耳尖點C、鼻孔點D間的連線上,點E坐標為
E(x,y)=λC(x,y)+(1-λ)D(x,y)
(14)
式中λ——距離系數
C(x,y)、D(x,y)——點C、D坐標
計算人工定位奶牛眼睛中心點F與點E距離最小時λ,其中點F與點E的距離為‖F(x,y)-E(x,y)‖2,E(x,y)、F(x,y)分別為點E與點F的坐標,已知λ后即可預測眼睛中心點E的位置。由于奶牛不同姿態對眼睛定位結果有影響,所得到的λ值有差別,故以奶牛頸部與背部連接處的擬合直線斜率k為判斷值[34]。將200幅奶牛圖像分為正常行走75幅、微低頭85幅、低頭40幅3類,k∈[0,0.35)為正常行走奶牛,k∈[0.35,0.80)為微低頭奶牛,k∈[0.80,∞)為低頭奶牛。計算不同姿態奶牛的λ值,得到正常行走、微低頭和低頭奶牛的平均λ值分別為0.487、0.481和0.492,在3種姿態下利用其平均λ值計算點E與點F間距離最大值分別為3.64、3.81、2.16像素。結果表明點E與點F間距離較小,可將點E視為眼睛中心點,由式(14)定位不同姿態下奶牛眼睛中心點位置,如圖8a所示。根據統計眼睛區域的平均面積,將半徑設為20像素,以點E為圓心畫圓,得到的圓圈區域定義為眼睛區域。由于奶牛眼睛區域最高溫度與奶牛體溫的相關性最大,選擇圓內溫度最高的點作為眼睛溫度,在圖8b中用紅點標記,由式(1)進行像素值與溫度的轉換,即可得到眼睛溫度。
對40頭自然行走奶牛的200幅側視熱紅外圖像測試頭部區域識別算法,其中包括正常行走80幅、微低頭80幅、低頭40幅。為定量評價奶牛頭部識別精度,通過統計本文算法和人工標記的奶牛頭部面積Si和Sa,計算Si∩Sa與Si∪Sa的比值作為識別準確率進行評價,得到本文算法正常行走、微低頭、低頭奶牛的頭部識別準確率分別為95.6%、93.3%、98.8%,不同體態的奶牛分割結果如圖9所示。奶牛在微低頭狀態時識別率最低,是由于微低頭時奶牛的雙耳明顯,造成頭頸部的骨架線復雜,不利于定位分割點;奶牛低頭狀態時識別率最高,奶牛低頭時頭部區域形狀明顯,頭部骨架線簡單,依據列坐標最小的分割點為頭部分割點易找到頭部分割點。結果表明本文算法具有較好的魯棒性,對不同姿態的奶牛均可較好地識別奶牛頭部區域。
隨機選擇頭部區域識別后的100幅熱紅外圖像作為樣本,分別用本文奶牛眼溫自動檢測方法和在圖像中人工手動選擇區域測溫方法進行試驗。人工手動提取溫度是利用ThermoScope軟件,在圖像中觀察牛眼位置并在奶牛眼睛區域畫圈,軟件會顯示區域內溫度最高與最低值。為驗證本文算法定位眼睛區域的準確度,將人工定位與本文算法定位的眼睛區域位置進行比較。人工定位的眼睛區域如圖10a、10c所示;本文算法定位的眼睛區域如圖10b、10d所示。
為對本算法檢測眼睛溫度的準確性進行評價,統計100個樣本人工提取的眼睛溫度Tscope和本文算法檢測的溫度Teve,兩者之間的吻合情況如圖11所示,平均絕對誤差為0.35℃,平均相對誤差為0.38%,表明本文算法能夠有效檢測奶牛眼睛溫度。
對誤差較大樣本進行分析發現,由于奶牛頭部區域分割不精確,所分割的頭部區域包含了頸部,導致眼睛定位誤差較大,見圖12a;當頭部偏向一側時頭部側面與相機成像平面角度過大,導致眼睛在頭部的相對位置改變,識別區域出現較大偏差,如圖12b所示;當奶牛兩耳分叉角度較大時,耳尖點定位不準確,會使定位區域出現較大偏差,如圖12c所示。
(1)利用基于差距度量的閾值分割方法提取奶牛目標,提出一種新的閾值選取方法,該方法對低分辨率、邊緣對比度低、噪聲大的熱紅外圖像可進行高效分割。
(2)基于骨架特征定義骨架特征點類別,利用骨架樹模型尋找頭部分割點,并進行頭部分割,通過分割點坐標識別頭部區域。對正常行走、微低頭、低頭體態的奶牛頭部識別準確率分別為95.6%、93.3%、98.8%,說明該算法可準確識別不同姿態下的奶牛頭部區域。
(3)提出一種自動確定奶牛眼睛位置并檢測其溫度的算法,檢測結果表明,平均絕對誤差為0.35℃,平均相對誤差為0.38%,說明本文奶牛眼溫自動檢測方法具有較高的精度。