?

基于機器視覺的菌落計數算法研究

2023-11-16 08:17蔣永翔孫美華閆偉偉馬一文
制造業自動化 2023年10期
關鍵詞:培養皿像素點菌落

蔣永翔,孫美華,王 彤,閆偉偉,馬一文

(天津職業技術師范大學 機器人及智能裝備研究院,天津 300222)

0 引言

菌落是由細菌細胞在培養皿中繁殖出的可見生長物[1-2]。通過對菌落數量的測定可以判別食品被細菌污染的程度[3]。隨著計算機與圖像分析技術的不斷發展,利用計算機及圖像處理工具進行菌落計數,可降低工作強度,提高工作效率[4-6]。對于菌落計數的研究,國內外研究人員在算法、培養設備方面取得了一些研究成果。周瑩莉等人用最大類間方差法、距離變換、分水嶺算法等處理菌落圖像。用八鄰域邊緣跟蹤、區域填充算法實現菌落計數,重現性好,速度快,但針對粘連嚴重的菌落,計數誤差較大[7]。孫琪等人提出了一種用自適應理想圖像重建進行菌落檢測的方法。該方法側重于消除光照偏置,重新構建理想的菌落圖像。在重建的理想菌落圖像中,菌落區域對應高亮度部分,背景區域對應較低亮度部分,使得菌落區域與背景區域有較高的類間差以及較低的類內差。從而很容易地檢測出細菌菌落,完成計數[8]。但是當光照分布極其不均勻以及對比不夠明顯時,計數結果會有較大誤差。張力新等人提出一種基于改進水平集的全自動菌落分割、計數方法[9]。該方法用多相水平集算法對菌落目標進行自適應分割,利用凹點檢測方法對粘連目標的計數進行修正。但是對培養皿邊緣的菌落進行計數時存在較大誤差。因此研究一種精確快速地菌落計數算法十分必要。

本文為實現菌落自動計數利用python設計了一種算法,算法流程如圖1所示,首先通過搭建的圖像采集系統對培養皿拍照來獲取菌落圖像,進而采用灰度處理、中值濾波的方法對圖像進行預處理,通過邊緣檢測連接提取培養皿邊緣及邊緣處的菌落信息,然后對圖像進行迭代閾值分割,得到菌落的二值化圖像[10],再利用霍夫變換進行培養皿邊緣剔除,最后用連通域計數法對二值化圖像中的菌落進行標號,完成菌落計數。實驗對比分析了不同閾值下菌落圖像自動計數同人工計數的結果,通過與人工計數誤差對比,計數精度達到了90%,滿足菌落計數的要求。

圖1 菌落計數流程圖

1 設備搭建及菌落圖像的采集

菌落自動計數系統的硬件部分是由培養皿控制柜和計算機搭建起來的,如圖2所示,控制柜中共放置12個培養皿存放架,每個放置架按照兩行5列的排列方式設計,可放置10個培養皿。培養皿放置在存放架上如圖3所示,由下方的培養皿加熱板進行菌落培養溫度控制。設備采用相機固定不動的方式,通過機械搬運手將培養皿固定板在直角坐標系下運動完成取出和拍照。

圖2 菌落自動計數系統

圖3 培養皿分布

選定??倒I相機及鏡頭作為控制柜的采集設備、德肯照燈作為機器視覺光源。將相機設置在距離光源385mm的位置,拍照設備布局圖如圖4(a)所示,搭建完成后的實物細節圖如圖4(b)所示。利用本課題設計的培養皿計數系統,可在菌落培養的同時進行全自動圖像采集和菌落計數,避免了培養皿取出檢測等人為因素對檢測精度的影響。

圖4 圖像采集設備

2 圖像預處理

本文先在python中對采集到的菌落圖像進行灰度處理得到灰度圖像,然后對灰度圖像進行中值濾波,用像素點鄰域灰度值的中值來代替該像素點的灰度值,中值濾波不受鄰域內比典型灰度值大很多或小很多的灰度值的影響,可以在很好的保留住圖像的邊緣細節部分的同時有效的去除椒鹽噪聲、脈沖噪聲等干擾[11-13]。該種預處理方法步驟如下。

1)將要處理的菌落圖像每一像素點的像素值中的紅R(x,y)、綠G(x,y)、藍B(x,y)三個分量的平均值作為其灰度值。

其中,(x,y)表示像素點坐標。

2)選取目標點,將目標點f(x,y)周圍八個像素點的灰度值及目標點的灰度值按照從小到大的順序排列。取排列好的灰度值的中值作為目標點的新灰度值,3×3圖像的中值濾波示意圖如圖5所示。

圖5 3×3中值濾波原理

預處理前后的菌落圖像如圖6(a)、圖6(b)所示。

圖6 菌落預處理圖像

3 邊緣檢測及連接

邊緣檢測及連接是為了在減少邊緣剔除的數據處理量的同時將培養皿邊緣以及菌落的特征信息提取出來,從而使算法的運算速度更快、精度更高。本文使用Sobel算子來進行菌落邊緣的檢測及連接[14]。Sobel算子的卷積因子為

通過上述兩個卷積因子對圖像分別進行橫向以及縱向的卷積計算,所得最大值即為梯度幅值,計算結果展開如下:

用式(4)計算梯度方向。當θ取零時,在y方向的求導結果也為零,說明該位置存在縱向邊緣,其對應的點為邊緣點,所有邊緣點連接形成的界限即為邊緣。

Sobel算子邊緣檢測效果如圖7所示,可以看出,使用Sobel算子進行邊緣檢測,檢測到的培養皿邊緣和菌落邊緣輪廓十分明顯。

圖7 Sobel算子邊緣檢測效果

4 閾值分割

本文采用迭代閾值分割法將菌落目標與背景分開。先將待測圖像分成若干區域,把每一小區域的最大灰度值和最小灰度值的平均值作為初始閾值T0[15]。當初始閾值為T0時,用初始的開關函數把這一小區域圖像的像素分成菌落目標(灰度值大于T0的像素群)、背景(灰度值小于T0的像素群)兩部分[16],灰度值最高的是菌落目標(黑色像素點灰度值為0,白色像素點灰度值為255),對小區域中的每個灰度值進行迭代分析,確定圖像中每個目標對應的分割閾值,并將結果取平均以獲取新的閾值,之后再次按此閾值迭代法將此小塊圖像分成菌落目標、背景,生成新的迭代函數,重復此閾值迭代法,直到迭代收斂于某個穩定的閾值[17],此刻得到的閾值即為該小區域圖像的最佳閾值Ti+1。然后將每一小區域的最佳閾值進行比較,從中選出最合適的閾值。迭代閾值分割的流程如圖8所示。

圖8 迭代閾值分割流程圖

圖8中δ為趨近于0的數。

迭代閾值分割的數學表達式如下:

其中,Ti+1為最佳閾值。L為灰度級的個數,k為灰度值,hk是灰度值為k的像素點的個數。

以Ti+1=130、150、180為例,圖9為不同閾值下檢測的菌落圖像數據,可以看出,閾值為130時,一些背景像素被解釋為目標像素,如圖9(a)中標記為4、7的像素等被認為是目標像素進行計數,導致菌落數量檢測不佳;閾值為150時,目標像素與背景像素解釋較為準確,計數結果比較準確;閾值為180時,一些目標像素被錯誤地解釋為背景像素,如圖9(b)中標記為2、9的像素等被認為是背景像素在圖9(c)中未被計數,導致菌落計數誤差較大,據此,將最佳閾值參數設置為150。

圖9 不同閾值檢測到的菌落圖像數據

5 菌落粘連分割

在菌落圖像中,有時會出現兩個菌落生長在一起的情況即“粘連”現象,如圖10所示。

圖10 菌落粘連示意圖

菌落粘連現象會導致菌落計數結果不準確,因此需要將粘連的菌落分割開以保證計數的準確性。

本文采用自適應距離變換的分水嶺算法來分割菌落粘連的部分。距離變換的原理是將二值化圖像中每個像素點與背景之間的最短距離作為該像素點的灰度值,最短距離是通過計算整個圖像中的每一個像素點與所有背景像素點之間的距離,從中找到最小值得到的,得到每個像素點的灰度值即得到了灰度圖像[18]。如圖11所示,先從左上角開始,從上到下,從左到右,計算像素f(x,y)到像素1、2、3、4的距離。再從右下角開始,從下到上,從右到左,計算像素(x,y)到9、8、7、6的距離。

圖11 距離變換原理圖

根據式(6)可得到每個像素點的灰度值。

其中,(x,y)代表中心像素點的位置,f(x,y)代表(x,y)像素點的像素值;q代表3×3模版中其他像素點的位置。D((x,y),q)代表(x,y)像素點與q像素點之間的距離。

然后利用分水嶺算法處理經過距離變換得到的灰度圖像[19],找到不同灰度值的像素點,選取處于分水嶺邊界的灰度值作為邊界點標出,邊界就將粘連菌落分割開來。粘連目標做自適應距離變換的分水嶺處理效果圖如圖12所示。該算法有效分割了粘連目標,使目標計數點更為清晰,提高了計數的準確性。

圖12 菌落粘連分割圖

6 圖像邊緣剔除

培養皿邊緣的白色像素會使計數結果產生誤差,為避免誤差的產生,需將得到的二值化圖像進行邊緣處理,這里使用霍夫變換(Hough)來剔除培養皿邊緣所在的圓以及邊緣所在的圓以外的信息[14]。

本文所用培養皿直徑為90mm,利用霍夫變換檢測到圖中直徑為90mm的圓即為培養皿邊緣,將該圓以及圓外所有像素值為255的像素點的像素值置為0,就將培養皿邊緣剔除了。剔除培養皿邊緣后的菌落圖像如圖13所示??梢钥闯?,霍夫變換可以很準確地剔除培養皿邊緣。

圖13 剔除培養皿邊緣后的菌落圖像

7 菌落自動計數研究

7.1 連通域計數方法

本文提出了一種連通域計數方法,在對連通區域進行掃描檢測時,首先申請一個一維數組M[i,j],其中i代表連通區域個數,j代表每個連通區域中白色像素點的個數。其具體算法為:將二值化圖像從左向右,從上向下進行掃描,掃描的核心是尋找非零的像素點,處在同一個連通域的非零像素,認為是來自同一個菌落[20],處于不同連通域的非零像素,認為來自不同的菌落。將遇到第一個白色像素點即非零像素點記為N1點,把N1點做為種子點,將其標記值設為0,并將與其連通的白色像素點的標記值同樣設為0,直到連通域內沒有未被標記的白色像素點。然后將數組M中的i值加1,按照上述方法標記下一個連通區域,標記過的點不會被重復標記,掃描整幅圖像,直到沒有未標記的相連的白色像素點則完成了對圖像中菌落的計數。菌落計數流程如圖14所示。

圖14 菌落計數流程圖

計數后的微生物圖像如圖15所示,圖中標出了菌落的輪廓,且給每個菌落分別標記了序號,標記值的最大值為菌落個數,效果明顯,易于觀察。

圖15 菌落計數圖像

7.2 計數情況對比

通過對比菌落圖像人工計數結果與菌落圖像在不同閾值下自動計數的結果的誤差,從而驗證自動計數結果的準確性。由圖16可知,自動計數結果與人工計數結果的偏差最大約11%,偏差最小約5%,平均偏差在10%左右。其中,菌落數目在50個以內的樣本,平均偏差為8%。菌落數目大于50個的樣本,平均偏差是9.5%。且對于菌落定位清晰,效果良好。均達到了設計要求。

圖16 程序計數與人工計數對比圖

8 結語

本文提出的基于圖像處理的菌落計數算法實現了菌落計數自動化。其中菌落的分割是本次計數的關鍵步驟,并且該算法在真實環境中進行(而不是在受控環境中)。實驗過程中面臨的挑戰是菌落背景的大小而造成的干擾,因為背景被認為是噪音,通常會掩蓋菌落的可見性。因此,改善用于采集菌落圖像的設備以及增強采集到的圖像是十分必要的。本文提出了連通域計數法完成計數的最后一步。并且在類似的對象計數項目中也同樣可以引用該方法,可復現性較高??傮w而言,基于該方法的菌落計數結果與人工計數結果相比誤差較小,且該方法非常有前途,而且替代性較強,經濟快速。

猜你喜歡
培養皿像素點菌落
不同emm基因型化膿性鏈球菌的菌落形態
工業廢水
基于局部相似性的特征匹配篩選算法
NASA and Space Exploration
基于5×5鄰域像素點相關性的劃痕修復算法
一種用于藥物抗菌試驗紙塑料培養皿
基于canvas的前端數據加密
基于逐像素點深度卷積網絡分割模型的上皮和間質組織分割
衛寶香皂:培養皿告訴你細菌真相
食品微生物檢驗中菌落總數測定的注意事項
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合