陳 昊,沈明霞
(南京農業大學 工學院,江蘇 南京 210031)
中國是世界上最大豬肉消費國,豬肉是我國人民主要肉食來源[1],年人均豬肉占有量為30 kg以上,超過世界平均水平。在保證數量的同時,更需保證豬肉質量。注水豬肉的危害不容忽視,由于豬胃腸內注入大量水分,豬的胸腔受到壓迫,引起呼吸困難,造成組織缺氧,機體處于半窒息和自身中毒狀態。胃腸道內的食物腐敗,分解產生氨、胺、甲酚、硫化氫等有害物質,通過血液循環進入肌肉,有毒物質通過重復吸收后,遍布豬的全身肌肉,食用后會嚴重危害人體健康[2-3]。利用計算機圖像處理技術對正常豬肉與注水豬肉的顏色對比尚是空白。為此,本文針對豬脊椎外側肌肉圖像在外加光源下的特征,進行顏色分析和圖像像素值運算,從而判斷被測豬肉是否注水。
注水豬肉數字圖像檢測系統包括2大部分,分別是圖像采集系統和圖像分析處理系統。其中,圖像采集系統包括光源,鑒定臺,VGA攝像頭;圖像分析處理系統主體是通用計算機 (圖1)。

圖1 注水豬肉系統硬件的組成
鑒定臺是30 cm×25 cm×30 cm的立方體,其上表面是5 mm無色玻璃,其他表面均為白色的4 mm厚木板。光源采用220 V、60 W,標準編號DIN 49990-1971國際分類號為4900的電氣照明器;VGA(640×480)攝像頭其所拍攝圖像格式RGB24,I420是目前最常用的 2種圖像格式。RGB24表示R、G、B 3種顏色各8 bit,每種顏色可表現256級濃度,從而可以再現256×256×256種顏色。I420是YUV格式之一,其它格式有:RGB565,RGB444,YUV4:2∶2等。并且 VGA具有自動白平衡調整 (AWB)的功能,即要求在不同色溫環境下,照白色的物體,屏幕中的圖像呈現白色[4-7];鑒定臺的表面是無色玻璃的,方便光的透過。系統的軟件開發是通過VC++編寫的,VC++是微軟公司開發的一個集成開發環境 (IDE),就是使用C++的一個開發平臺。VC++適用開發高效,短小,輕量級的COM組件,可以開發優秀的基于通信的程序,可以開發高效靈活的文件操作程序等。
在輸出一幅DIB位圖之前,程序應該將其邏輯調色板選入到相關的設備上下文并實現到系統調色板中。而位圖文件頭BITMAPFILEHEADER是一個結構體,其中WORD biBitCount;表示顏色時要用到的位數,1(單色),4(16色),8(256色),24(真彩色)。故在讀入圖像之前先要確定圖像的類型是否為DIB,位圖確保為24位。顏色表用于說明位圖中的顏色,有若干個表項,每一個表項是一個RGBQUAD類型的結構,定義一種顏色。因為在 (x,y)的數據應該在 y×width+x這樣的位置上但是因為會有冗余信息那么必須將width用width+該行的冗余量來處理,而由于位圖文件有不同的位數,所以這樣的計算也不盡相同。利用這個特性,可以將 DIB文件逐行的掃描并顯示到客戶區[8-11]。
2.2.1 提取圖像像素值
利用全局變量,設置一個公用的二維數組作為被測試圖像所有像素值的暫存,解決了BMP像素在各個環節數據傳輸無法傳輸的問題。由于圖像的讀入和顯示都是在內存中完成的,正常過程中是看不到DIB各個像素信息的。所以需要用特定的技術手段,或者是設計思路來完成這個任務。由于各個點的像素值是唯一確定的而且這些值直接關系到測量結果的準確與否,所以每一個點都需要精確的測量。VC++當中也沒有實現這種功能的類或者是函數,利用全局變量和公用的二維數組暫存所有的像素可以解決這個問題。對圖像像素值的提取,如圖2。

圖2 分析被的測圖片
2.2.2 選取像素矩陣
本系統采用了獨創的輻射式六等分采樣。即計算圖像的中心像素點的坐標,取中心10×10的像素矩陣,然后分別在此10×10中心矩陣的周圍20像素距離,取6個10×10的像素矩陣且相鄰矩陣等距離圓周式分布。通用計算機而言,處理640×480的24-bit圖像需要一定時間,另外,被測圖像中對于判定豬肉是否注水的像素點分布于圖像中心區域,故在距中心像素點的固定區域內進行采樣。采用輻射式六等分采樣不僅可以確保有效的像素點可以盡可能的被采樣到,而且提高了圖像的分析速率,從而提高圖像判斷的準確性節約時間。由于一張圖像由許多像素點組成。VGA的選擇恰可以滿足做圖像采集的要求,SXGA或XGA雖然十分精確但是在處理速度上明顯遜色,同時CIF或SIF的像素卻達不到圖像處理的要求,而其他型號沒有VGA容易采購。
2.2.3 分析提取的像素矩陣
首先對所采樣提取的像素點進行篩選。在選取所需像素矩陣后,判斷所提取的像素矩陣像素點的顏色范圍,如果 RGB值均大于220,則取樣的矩陣很可能取得脂肪的圖樣;RGB值均小于50則可能是被測豬肉擺放不均勻。在篩選過程中,被測矩陣中不在的預計出現的數值范圍內的像素值將被舍去。
對于篩選后的像素矩陣,采用做差方法。通過收集正常生鮮豬肉樣本在測試時留下的數據來確定RGB的數值范圍,然后和系統實時采樣得到的數據進行做差,然后將差值求和。
被測像素矩陣與標準像素矩陣的誤差:

所得到的總像素誤差是分別對于RGB 3種顏色而言,如果總像素誤差大于實驗時所得數據所規定的范圍,即可判定此豬肉是注水豬肉。
在實際檢測的過程中,由于被屠宰的豬的不同部位,肉質和色澤差別很大;而且,被屠宰的豬肉的新鮮程度也直接影響到色澤。除去豬肉本身的色澤的差別,外界光源對于豬肉顏色也是有極大的影響的。
被測豬肉樣本選擇脊椎外側的肌肉,切割成邊長為10 cm×10 cm的1.5~1 cm厚的切片。由于生豬脊椎外側的肌肉呈梭形,故在切片的時候將被測豬肉樣本縱向切割成片,并緊湊均勻擺放在鑒定臺上。正常的豬脊椎外側肌肉,色澤均勻,肉質細嫩且脂肪含量較低,生豬注水與否可以很好的從色澤上反應出來。
由于在實際測量的過程中,外界環境尤其是光線的照度,顏色,和投射方向,對于被測豬肉樣本拍攝都有極為重要的影響。由于必須使得外界光源對被測豬肉樣本的影響降至最小,所以必須使用人工外加光源,來保證被測豬肉樣本的光環境的一致性。而在鑒定臺的內部設置了固定的光源,投射方向,照度和顏色穩定,且對于室內環境而言,鑒定臺內置光源成為主導因素可以保證被測豬肉樣本的光環境的穩定性,從而確保了所得數據的可靠性[12-13]。
在判定豬肉樣本是否注水之前需要對圖像進行分析,觀察所得圖像的RGB值分布 (圖3)。然后結合所得柱狀圖,利用采樣的像素矩陣的數值,分析被檢測的豬肉樣本是否注水。

圖3 RGB值的分布柱狀
分別采用計算機視覺及傳統的注水豬肉檢測方法對試驗豬肉行檢測對比研究,試驗結果表明,檢測系統可以對注水豬肉的識別,而且可以在低照度的環境中正常檢測。說明了該系統用于檢測豬肉是否注水是可行的。
雖然,對于一些非新鮮豬肉,檢測結果會存在誤差。傳統的注水豬肉檢測方法需要手工操作,而且較為復雜,而且需要穩定的工作環境,不適合現場操作或者觸摸擠壓法等一系列物理方法[2-3],而且要進行手工操作費時,操作不方便。而本項目利用機器視覺技術,VC++編程,并采取全新的像素矩陣采樣方式,和像素值對注水豬肉圖像進行分析。此項目的研究為注水豬肉檢測提供了一個新的檢測思路和檢測方法。
[1] 田寒友,李家鵬,任琳,等.我國豬肉安全現狀分析與對策 [J].肉類研究,2009,11(11):31-34.
[2] 張木蘭.注水豬肉的危害及檢測方法[J].現代畜牧獸醫,2005,6(6):27-28.
[3] 王建華,陳華,馬淑玲,等.淺談注水肉的檢驗 [J].河南畜牧獸醫,2006,27(5):35-36.
[4] 朱海寬.基于機器視覺的圖像采集與處理系統設計 [J].電子測試,2009(1):53-89.
[5] 趙軍,王乘.圖像格式分析與圖像顯示實現 [J].計算機與數字工程,2004,32(5):295-30.
[6] 王亮,劉元生.深度解析圖像的顏色通道 [J].印刷雜志,2008(11):66-68.
[7] 楊培,孫勁光,張新君,等.一種改進的基于彩色圖像的顏色直方圖算法 [J].計算機與現代化,2008(9):96-100.
[9] 張萍萍.計算機視覺技術在肉品質量評定中的應用研究[D].北京:中國農大食品科學與營養工程學院,2004.
[10] Gonzalez R C,Woods R E.Digital image processing[M].2 nd ed.New Jersey:Prentice Hall,2002.
[11] Nikhil R P,Sankar K P.A review on image segmentation techniques[J].Pattern Recognition,1993,26(9):1277-1294.
[12] Marini F,Bucci R.Classification of 6 durum wheat cultivars from Sicily(Italy)using artificial neural networks [J].Chemo metrics and Intelligent Laboratory Systems,2008,90(1):1-7.
[13] 石禮娟,文友先,牟同敏,等.谷物檢測中機器視覺技術的應用進展 [J].湖北農業科學,2009,48(6):1514-1518.