摘 要: 面粉麩星的多少是評價面粉質量的一種重要指標,傳統的面粉麩星檢測都是依靠人工感官方式,即操作人員利用放大鏡(5倍或5倍以上)查找統計視野中能見的麩星。由于麩星的數量多且面積小,因此,靠人工感官檢測方式得到的數據結果往往達不到精度要求。針對這一問題提出了一種基于計算機圖像處理技術的面粉麩星檢測方法,利用該方法可以快速準確地檢測出面粉的麩星個數、麩星面積以及面積百分比等指標。
關鍵詞: 面粉麩星; 圖像處理; 計算機檢測
面粉麩星是指成品面粉中肉眼可見的、顏色明顯深于面粉的斑點,其主要成分是小麥加工成面粉過程中未分離出去的小麥麩皮,也有未清理干凈的蕎麥皮、草籽皮,甚至還有大小、比重與小麥相近的黑石塊、煤渣等[1]。面粉麩星的面積大小和數量多少不但影響面粉的純度與白度,也將影響面粉生產工藝過程中其他相關指標,例如:出粉率、粉中含麩率、面粉等級等,更可衡量面粉生產過程中清理是否干凈、磨粉機搭配調整是否得當、篩理匹配是否合理等。從中還可得出小麥制粉工藝及設備是否先進、操作是否正確等[2]。
傳統的人工檢測方法就是操作人員利用放大鏡(5倍或5倍以上)直接查找視野范圍內能見的麩星并統計個數。由于面粉質量不同、操作人員視覺疲勞、光線能見度低等原因,依靠這種方式檢測出的面粉麩星個數只能對面粉等級做出定性判定,無法給出準確的定量判斷。全國各地的面粉廠和面粉檢驗機構都是由國家糧食檢驗方面的專家每年(或半年)憑感官評出的等級面粉小樣與被檢測的面粉進行比較,給出某種面粉麩星是否超標而標定出該面粉的質量和等級,這種標定方法主觀性太強、誤差較大[3-6]。針對以上所存在的問題,本文提出了一種基于計算機圖像處理技術來檢測麩星的方法,通過此方法可以實現對面粉麩星的準確定量檢測。
1 麩星檢測的基本原理
基于圖像處理的麩星檢測過程是:首先對面粉拍照,然后將圖片輸入到計算機,再利用麩星識別系統進行檢測。對于計算機而言圖片實際上是一個像素的二維數組,典型情況下,顏色的每個組分都用1個字節來表示,這樣每種顏色組分只有256個級別,區分度和對比度都不高;數字攝像頭所拍攝的面粉圖片為真彩圖片,其中每個像素的顏色由紅(R)、綠(G)、藍(B)3種基本色的分量來表示。這種方法每個像素使用3個字節,允許達到256×256×256=167 772 16或1 600萬種RGB值(顏色)[7]。與面粉相比麩星的顏色較深,也就是說面粉顏色的RGB值小于麩星顏色的RGB值,基于此,可以利用麩星點的像素值與面粉圖片背景的像素值存在的差異將其檢測出來。
2 麩星檢測的實現
2.1 圖片的預處理
因為圖片在繪制過程中或輸入到計算機的過程中可能引入噪聲,因此,對面粉圖片進行操作之前需進行必要的預處理,這是計算機進行圖片處理時必不可少的。通常的預處理過程包括灰度化處理、二值化處理、平滑、濾波等等[8]。
(1)圖像的灰度化。一般情況下,彩色圖片中每一個像素的R、G、B值都不盡相同,如果直接將面粉顏色的像素與麩星顏色的像素進行比較所得到的檢測結果精度往往不高,且每次檢測的面粉質量都有所不同,拍出的圖片彩色程度亦有所不同,這會導致檢測結果的穩定性較差,因此需將圖片進行灰度處理?;叶忍幚淼姆椒ㄓ泻芏?,如:最大值轉換法、平均值轉換法、黃金權重轉換法等。本文在進行灰度處理時采用的是最大亮度轉換法,其公式如下:
R1=G1=B1=max(R,G,B)
式中,R1、G1、B1為轉換后的像素值;R、G、B為轉換前的像素值?;叶忍幚砗蟮膱D片每一個像素的RGB值都是相同的,其范圍從(0,0,0)、(1,1,1)一直到(255,255,255),(0,0,0)為純黑色,(255,255,255)純白色,中間的是不同級別的灰色,這樣圖片就以亮度信息為主要信息,彩色信息為次要信息,十分便于比較區分。
(2)圖像的二值化。圖像的二值化就是指將灰度圖中的背景與有效區域變為黑白分明的2種顏色。本文所使用的并不是這種傳統意義上的二值化方法,而是一種“非典型二值化”方法。它并沒有將面粉圖片變為黑白圖片,只是加強了面粉背景顏色與麩星點顏色的區分度,這樣更有利于麩星點坐標的識別與提取,同時增強了視覺觀察度。針對麩星檢測的特點采用最大熵法二值化進行處理,最大熵法是一種動態全局閾值選取法,其優點是可以針對不同圖片的不同情況選取相應的閾值,使得該麩星檢測系統的檢測精度和推廣性很高[9]。該方法最早由Pun提出,其目的就是將圖像的灰度直方圖分成獨立的類,使得各類的總熵最大。設S是潛在的分割閾值點, p0, p1, p2,…,pL是圖像灰度級的概率分布,現將其分為如下2個概率分布:
(3)圖像的平滑及濾波。去除圖像中噪聲的運算在圖像處理中稱為圖像的平滑,主要是利用噪聲高頻、孤立、大偏差的特點進行的,本文采用鄰域平均的方法進行去噪。鄰域平均即是指將每個像素的灰度值用它所在鄰域內像素的平均值來代替,從而達到去噪的效果。其優點是算法簡單、計算速度快。常用的鄰域平均的窗口有2種:3×3鄰域中的5點鄰域和9點鄰域,其模板如圖1所示,它們的衰減因子分別為5、9。由圖1可知,平滑模板內各因子之和除以相應的衰減因子的結果為1,其物理意義是平滑處理后圖像的平均亮度不變。
2.2 面粉麩星識別過程的設計
利用C語言編程處理圖像的思路來說明麩星識別的基本過程:(1)根據閾值找出符合麩星點判別條件的所有像素點的坐標并存儲到相應的數組中(橫坐標和縱坐標分別存在2個數組中); (2)對這些坐標值進行分類,找出歸屬于同一個麩星的像素點的坐標統計出麩星的個數。本文在對這些坐標進行歸一化處理時采用的是“圓心賦零”的編程思想,即以數組(橫坐標和縱坐標同時使用)的第1個點為起始點(即“圓心”),逐個檢測后面的點看是否有起始點周圍的點,如果有則停止檢測并將“圓心”賦零,然后再以第2個點為起始點繼續檢測,如此重復一直到全部檢測完畢。但這其中還存在一個問題,即如何判定哪些點是“圓心”周圍的點。由于數組中存放的是像素點的坐標值,因此采用鄰域判別法進行判斷即可。例如:起始點為(3,3),則只需看數組中剩下的坐標值中是否有(2,2)、(2,3)、(2,4)、(3,2)、(3,4)、(4,2)、(4,3)、(4,4)即可(根據大量檢測試驗,判斷“原點”周圍2圈的點已夠用,如果想提高精度可擴大范圍),如果有,即存在周圍的點,反之亦然,如圖2所示。為了提高識別的速度可以在主函數外編寫1個小的判斷函數,然后在主函數中反復調用即可。用“圓心賦零”法對數組處理完畢后,數組中只剩下屬于每個麩星的最右下方的像素點的坐標值,其余全部為零,接下來只需重新掃描數組統計其中不為零的點的個數即為麩星的個數。
需要指出的是,為了拍攝方便,需將面粉制成面片,在這個過程中可能會因為壓面機滾軸生銹等原因在面片表面留下顏色較深的斑點,這些“干擾點”會使得檢測出的麩星個數存在誤差。通過大量的實驗數據分析可知,一般一個麩星點只包括幾個到十幾個像素點,而“干擾點”往往包括幾十個像素點,因此,可利用麩星面積遠小于“干擾點”的面積來判斷出這些“干擾點”并將它們去除,最終得到準確的麩星個數。在計算麩星面積時,本文采用的是“圓心統計”法,即以1個點為圓心統計出其周圍有多少個點。首先在統計麩星個數的同時將橫坐標數組和縱坐標數組中不為零的數統一存放在2個新的數組中,然后以新的數組中的第1個點為“圓心”點,對舊的數組(存放所有麩星像素點的數組)中的點逐個判斷是否為“圓心”周圍的點,如果是則累加。然后再以新的數組中的第2個點為“圓心”繼續檢測,直到所有的麩星面積都統計完畢。在這個過程中仍然使用上述的麩星識別的基本過程判斷程序,不過判斷范圍要擴大到“圓心”周圍5圈(根據具體情況范圍可自定)。
在計算麩星個數和面積的同時,如果有需要還可計算出麩星面積的百分比、麩星位置等數據。
3 應用分析
根據上面所述的基本原理和編程思想,利用C++ Builder 編寫了1款麩星檢測應用軟件如圖3所示(圖中的小白點)[10-11]。選取了龍福97-0189、龍麥26、格來尼等品種小麥面粉樣品進行精度測試,具體的比較結果如表1所示(檢測結果為每平方厘米所含麩星個數)。以龍福97-0189為例,人工檢測的麩星個數的結果為18個,由于左上角的2個麩星的面積很小,因此人工檢測時被遺漏掉了,而軟件檢測的結果為20個,將遺漏的那2個點也檢測了出來。其他樣品的檢測試驗也具有相似的結果,基本上都能夠將人工檢測時遺漏的點檢測出來,或將多數的點排除出去。由此可見,與以往的經驗數據相比,該軟件的檢測精度更高,而且可以大幅度提高操作人員的工作效率。
與傳統的人工檢測方法相比,本文所提出的基于計算機圖像處理的面粉麩星檢測方法可以很好地檢測出面粉麩星的個數、面積、面積百分比等指標。其優點是檢測精度高、檢測速度快,在很大程度上克服了傳統的人工檢測方法精度差、費時費力等缺點。此外,由于該檢測系統使用了先進的動態全局閾值選取法,因此其推廣性和適應性非常好,避免了反復修改檢測靈敏度的麻煩。
通過大量實驗證明,該檢測系統的實用性強,非常適用于實驗室、農科院等相關部門。
參考文獻
[1] 劉興信.關于我國小麥粉質量標準問題的探討[J]. 中國糧油學報, 2002,5(1):1-6.
[2] 范璐, 周展明, 湯堅. 圖像分析測定紅麥硬度方法的研究[J]. 中國糧油學報, 2002,6(7):28-30.
[3] GB1355 - 1986小麥粉國家標準[S].
[4] 糧食食品檢驗編寫組. 糧食食品檢驗[J]. 北京:中國財經出版社,1992,4(5):13-27.
[5] 李同強. 面粉麩星的計算機檢測[J]. 中國糧油學報, 2005,4(2):26-29.
[6] 傅德成, 孫英. 食品質量感官鑒別指南[J].北京:中國標準出版社,1994,2(8):21-25.
[7] 劉光. C++ Builder 程序設計導學[M]. 北京: 清華大學出版社, 2002:210-211.
[8] 陸宗騏. C/C++圖像處理編程[M]. 北京: 清華大學出版社, 2005.
[9] 黃春艷, 楊國勝, 侯艷麗. 基于熵的圖像二值化方法比較研究[J]. 河南大學學報,2005,6(2):76-78.
[10] 羅斌. C++ Builder 精彩編程實例集錦[M]. 北京: 中國水利水電出版社, 2005:238-240.
[11] 蒙祖強, 龔濤. C++ Builder 程序員成長攻略[M].北京: 中國水利水電出版社, 2007:369-37.