謝云鵬,李艷梅,杜 潔
(甘肅農業大學 信息科學技術學院,蘭州 730000)
目前,新疆褐牛體型鑒定及分級主要采用人工鑒定分級的方法.該方法依據新疆褐牛的體型結構、肌肉度、細致度和乳房形狀等特點,由工作人員根據自身工作經驗得到褐牛體型鑒定結果.該方法工作量繁重,工作效率低,主觀性強,已不能滿足生產實踐需求,因此研究客觀,高效的牛體型鑒定及自動分級方法對提高新疆褐牛選優育種水平具有重要的實用價值.
隨著計算機視覺技術與圖像處理技術的飛速發展,機器視覺技術和數字圖像處理技術的研究與應用已擴展到農業工程領域,并在許多方面取得了重大成果.為提高新疆褐牛體型鑒定的工作效率,解決傳統鑒定方法存在的問題,研究開發基于機器視覺的新疆褐牛體型智能鑒定及自動分級系統勢在必行.
牛背線是指牛體胸后到十字步的之間的邊緣,它是新疆褐牛體型鑒定及分級的重要指標之一,背線的水平程度反應了牛的生長狀況,是選優育種的重要指標.在實際生產過程中,工作人員根據自身經驗給出背線的五種生長情況:弓背程度較大、一般、平整、下塌、嚴重下塌.如圖1至圖5所示.在對牛體背線分級的過程中把弓背程度較大的確定為分值最高,也就是牛生長狀態最好的,一般為較好,幾乎平整的為中等,下塌的為較差,嚴重下塌的為最差,相應的分值最低.

圖1 弓背較大

圖2 弓背一般

圖3 弓背平整

圖4 下塌

圖5 嚴重下塌
本文依據新疆褐牛體型線性鑒定標準[1],以牛側面圖像為研究對象,結合計算機視覺和數字圖像處理的技術對牛背線的五種生長情況進行量化,根據分析采集到的數據實現對牛背線的自動分級判定.
采用型號為MV-VEM200SC的小型GigE工業網絡數字攝像機,型號為AFT-0814MP的高精度百萬像素8mm鏡頭,進行肉牛活體側面圖像數據的采集.利用Visual Basic 2010作為實驗數據分析軟件,利用數字圖像處理中的灰度圖像生成算法、二值化算法、邊緣檢測算法等對采集到的牛側面圖像進行處理和分析,提取出牛體背線的變化情況,實現對牛體背線的智能自動分級.
由于用型號為MV-VEM200SC的攝像機采集到的為彩色圖像,所以要先對其采集到的圖片進行圖像預處理,使其彩色圖像轉化為灰度圖像,為了得到更好的邊緣,再對其灰度圖進行圖像二值化處理,最后采用經典的Roberts算子進行邊緣檢測,提取褐牛背線邊緣數據.
圖像灰化是將獲得的彩色數碼圖像轉化為由“黑”到“白”(從0-255共256個整數灰度級)的黑白圖像,便于進行圖像二值化處理[2].
本文采用為灰度圖像生成方法為加權平均法:

式中R,G,B分別表示的是像素顏色的分量.在把圖像灰度處理之后,圖像中的每一個像素點就有一個值,即決定像素明暗程度的灰度值.
首先將牛側面灰度圖進行二值化處理,減少信息量,在利用Roberts算子進行邊緣檢測提取背線邊緣點,得到背線邊緣點的數據.
只有兩個灰度值的灰度圖像稱為二值化的灰度圖像,其兩個灰度值分別為0和255[3].
對牛體側面灰度圖像的背線提取時,需要對圖像進行二值化處理,將生成的牛體側面灰度圖像處理成只包括黑色像素點和白色像素點的二值化圖像,便于背線的準確提取.
二值化處理過程中,閾值的選取是二值化處理的關鍵,如何選取合適的閾值T,是本算法的一個關鍵技術.Otsu算法被認為是圖像分割中閾值選取的最佳算法,計算簡單,不受圖像亮度和對比度的影響[4].由于褐牛的側面圖像顏色比較單一,主要以黃褐色為主,為了得到更好的閥值,閾值的選取采用經典的Otsu算法.Otsu算法能夠依據圖片信息自動計算出合適的、比較準確的閾值T.
褐牛五種生長狀態的實體圖如圖1至圖5中的(a)所示,對應的二值化效果圖如圖1至圖5中的(b)所示.
從圖像上可以看出二值化后的圖像信息量大大減少,減少了噪聲的影響,使背線邊緣更加明顯,邊緣處的像素變化差距提升,側重了對背線的分級.
物體圖像的邊緣信息特征因為顏色、紋理結構和灰度值的變化是以不連續性的形式出現,是圖像最基本、也是最重要的特征之一[5].
圖像的邊緣即圖像中部分灰度值變化大的地方,主要存在于圖像的目標和背景之間、不同的區域之間,是進行模式識別、目標檢測和圖像分割等的重要基礎[6].
邊緣檢測法提取圖像特征是圖像識別中的一個重要過程,圖像邊緣檢測結果對后續圖像處理和理解有著直接的影響[7].本試驗中采用經典的Roberts算法進行邊緣檢測.
任意一對互相垂直方向上的差分可以看成求梯度的近似方法,Roberts算子是利用這種原理,采用的對角方向相鄰兩像素值之差代替該梯度值[8].表示為:

式中,f(i,j)是具有整數像素坐標的輸入圖像,g(i,j)是輸出圖像,如圖6和圖7所示為Roberts的邊緣算子模板[9,10].在該研究中用的是圖7所示的模板.

圖6 模板一

圖7 模板二
Roberts邊緣提取的效果圖如圖8所示.
與原圖(圖1至圖5)相比,從圖8中可以清晰的顯示出背線(白色曲線)及變化情況.便于分析出背線的分級方法.

圖8 邊緣檢測效果圖
創建一個保存像素點的橫坐標x和縱坐標y的自定義數組,命名為Coors,它包含x、y兩個屬性.定義一個Coors類型的數組ECoors(i)(i=1,2,3,…,n)用來保存牛背線邊緣點的坐標.將經過邊緣檢測后的圖像由左向右并且由上向下進行遍歷,將每一次垂直方向上最先出現的白色像素點坐標保存ECoors中.
(1)遍歷邊緣坐標數組ECoors(i)中的數據,找出ECoors(i).y,(i=1,2,3,···,n)中的最值,即ECoors(i).ymax和ECoors(i).ymin以 及相對應的ECoors(i).x.
(2)將提取出來的背線邊緣點繪制到坐標圖中,如圖9所示.分析背線坐標點的數據,從坐標圖中得出背線生長情況的特征都體現在背線的中間部位的y值的大小.因此可將提取出的背線分成三個數據段,起始段,中間段,結尾段.
(3)仔細觀察發現:① 當最大值和最小值同時出現在同一段時,弓背幾乎水平;② 當只有最大值出現在中間段時,則可確定背線的情況為下榻;③ 當只有最小值出現在中間段時,則可確定背線的情況為弓背.

圖9 背線坐標圖
(4)為了能對背線進行準確分級,對(3)中確定好是弓背或下榻的數據進行細化,因此還需根據牛體背線生長標準確定一個閥值a,為了與背線為水平狀態區別,還需定義一個閥值b,且b小于a.
(5)對(4)的具體分析:
① 如果是弓背,則用:

若c1>a,則是弓背程度較大,若a>c1>b,則為弓背程一般.若c1
② 如果是下塌,則用:
