于瑩,王關平,王成江,韋昱伶
(730070 甘肅省 蘭州市 甘肅農業(yè)大學 機電工程學院)
畸形是馬鈴薯較為常見的生理形態(tài)改變,會影響其商品性狀,大大降低了經濟收益[1],因此馬鈴薯收獲后對畸形薯的售前識別與篩選分選非常重要。目前,國內外已實現較為可靠的機械式分選,其技術路線有滾筒式[2]、網眼式[3]、鏈板輥軸式[4]等。然而,一方面,這些系統(tǒng)立足于簡單廉價,不僅存在著分級粗略、變換困難、實用性較差等問題;另一方面,還可能誘發(fā)分揀中薯塊的二次損傷,且缺乏剔除傷、壞薯的基本能力,更不可能完成畸形薯的辨識和甄選。目前,國內外的畸形薯去除依然主要依靠人工目測,手動撿拾。該過程勞動強度大、成本投入高且效率低下,因此采用自動化系統(tǒng)替代人工便成為當務之急?;诤唵蝹鞲衅鳂嫿ǖ臋z測系統(tǒng),往往只能獲取馬鈴薯尺寸、質量等粗略信息[5],使得畸形識別這類復雜判斷因信息匱乏而難以開展,因此能否獲得足夠信息量成為畸形辨識的關鍵所在?;跈C器視覺的深度分析為諸多實際需求提供了大量數據,使許多原先的不可能成為現實[6-7],已經有部分學者將機器視覺應用于農業(yè)生產的諸多環(huán)節(jié)[8]。
針對馬鈴薯畸形的智能識別,史崇升[9]基于高光譜技術首先進行了畸形識別嘗試;張保華[10]等借助I-RELIEF 模塊將帶有權值的形狀特征樣本放入SVM 模塊中訓練并得到分類器,實現了較為有效的辨識,但算法較為復雜;汪成龍等[11]在此工作的啟發(fā)下,對SVM 分類器進行了改進,只需提取10 個形狀特征的傅里葉權值訓練即可,使得畸形識別的方法簡單化,可靠性可以達到90%以上。為追求更準確的識別方法,許偉棟等[12]提出PCA-SVM 算法提取形狀特征參數建模進行馬鈴薯形狀分類,準確率已高達97.3%。但是,上述工作依然需要大量計算,且基本都停留在實驗室階段。
本文提出一個簡單實用的方法識別解決馬鈴薯畸形問題,基于距離檢測[13]的曼哈頓距離檢測法計算馬鈴薯邊緣輪廓形狀與最小外接圓間距離,依據測量距離值繪制曲線圖檢測馬鈴薯形狀是否畸形。
本文使用OpenCV 庫Python 對采集的馬鈴薯進行灰度處理,獲取馬鈴薯灰度圖像,進而對灰度圖像二值化處理,獲得二值化圖像。與此同時,檢測馬鈴薯輪廓并畫出邊緣輪廓的最小外接圓曲線,形態(tài)學腐蝕得到輪廓曲線,為馬鈴薯畸形識別做出準備。
馬鈴薯品種選自于甘肅省蘭州市榆中縣出產的隴薯9 號、青薯7 號,采用尼康D7500 單反相機,23.55 mm×15.7 mm CMOS 傳感器,連拍速度8 張/s,在同一角度、統(tǒng)一高度下拍攝采集馬鈴薯圖像,共采集正常形狀馬鈴薯圖、畸形馬鈴薯圖像各170 張,總計340 張圖片。馬鈴薯形狀示意圖如圖1 所示。圖像處理軟件使用Python3.7.0、編譯器PyCharm、Anaconda 創(chuàng)建虛擬環(huán)境TensorFlow2.0。
圖1 馬鈴薯形狀示意圖Fig.1 Schematic diagram of potato shape
首先,對采集的馬鈴薯原圖片灰度處理,這也是將馬鈴薯彩色圖像R、G、B 等量化的過程?;叶葓D像每個像素點只存放一個字節(jié)灰度值,范圍0~255,顯示的灰度圖像通常用每個采樣像素8 位的非像素尺度保存,避免條帶失真,易于后續(xù)的圖像處理。由于RGB 模式不能準確體現圖像的具體形態(tài)特征,而且肉眼對圖像綠色敏感度較高,藍色敏感度較低,因此選取加權平均法對圖片灰度處理。加權平均法公式為:
Gray(i,j)=a×R(i,j)+b×G(i,j)+c×B(i,j)(1)式中:Gray(i,j)——灰度值;R(i,j),G(i,j),B(i,j)——圖像中紅、綠、藍三基色分量像素;a,b,c——灰度公式中的系數,通常為固定值a=0.299,b=0.578,c=0.114。
為更好地凸顯出馬鈴薯輪廓,要將圖像二值化處理分析,一般采用封閉、連通的邊界定義不交疊區(qū)域,使用thresh_binary 函數對圖像進行閾值二值化處理。像素值大于閾值135 的用255(黑色)表示,小于閾值135 用0(白色)表示。對處理好的二值化圖片使用cv2.findcontours()函數的cv2.RETR_EXTERNAL 模式檢索尋找馬鈴薯圖像最外層輪廓,并用cv2.CHAIN_APPROX_NONE 保留輪廓線上的所有坐標。由函數cv2.minEnclorsingCircle返回馬鈴薯圓心坐標和半徑組成的二元組,再令drawcontours 函數繪制馬鈴薯邊界輪廓的最小外接圓。最后,對已獲取最小外接圓輪廓的馬鈴薯二值化圖像進行形態(tài)學腐蝕,繼而使用Python 庫scikitimage canny 邊緣檢測提取馬鈴薯自身形狀與最小外接圓雙層輪廓。馬鈴薯預處理圖像如圖2 所示。
圖2 馬鈴薯預處理示意圖Fig.2 Schematic diagram of potato pretreatment
馬鈴薯圖像的邊緣輪廓是由連續(xù)的點組成,因此contours 查找圖片輪廓并遍歷圖片中所有輪廓層。用迭代器輸出檢測到雙層輪廓層線上的全部二維坐標點,使其形成一個2 行n 列的二維坐標矩陣,并計算坐標矩陣中每列兩點之間的距離值,再用Python PandaS 庫將距離值批量寫入csv 文件,再訪問讀取csv 文本中數據,繪制出馬鈴薯自身輪廓與最小外接圓間曼哈頓距離數據值曲線圖。
曼哈頓距離也稱作城市街區(qū)距離,19 世紀由赫爾曼·閔可夫斯基創(chuàng)立,應用于幾何度量空間。如二維平面上有兩點A1(X1,Y1),B1(X2,Y2),兩點在二維標準坐標系上的絕對軸總和(坐標軸上的投影)D 稱作兩點間的曼哈頓距離。曼哈頓距離計算二維坐標公式為:
曼哈頓距離檢測法優(yōu)點在于計算速度快、適用于整數計算,但是在距離檢測算法中被高頻率使用的是歐幾里得距離,也稱歐氏距離,表達為m 維空間內兩點直線距離D 稱為度量空間。二維平面上兩點之間歐式距離為
假設馬鈴薯自身形狀輪廓層線上輸出n 個二維坐標點,n 個坐標點組成一行n 列矩陣P1,P1=[X1i,X1j](i,j∈(1,n));馬鈴薯最小外接圓輪廓層線上輸出的二維坐標形成一行n 列矩陣為P2,P2=[X2i,X2j](i,j∈(1,n))。2 個 矩陣P1,P2構成一個新的2 行n 列二維坐標矩陣P:
測量二維坐標矩陣P 中每一列上下相對應點坐標(X1i,X1j),(X2i,X2j)間的曼哈頓距離d:
測量輪廓間曼哈頓距離值示意圖如圖3 所示。
圖3 馬鈴薯輪廓間曼哈頓距離檢測示意圖Fig.3 Detection of Manhattan distance between potato contours
由于輪廓曲線上有n 組相對應的坐標組,數據值過多,因此從測得所有坐標點間的曼哈頓距離值中選取數值差距較為明顯的距離值存入csv 文本中,共選取33 組坐標點,再用Python 讀取csv 文本中的數據(測量的距離值),設定x 軸為從坐標矩陣中選取的33 組坐標點,y 軸為馬鈴薯雙層輪廓對應坐標點間的距離差值,繪制二維坐標點間的距離曲線圖。通過觀察二維坐標曲線圖的曲線趨勢、形狀,以及波峰波谷的數量判斷馬鈴薯是否畸形。正常馬鈴薯坐標曲線如圖4(a)所示,畸形馬鈴薯坐標曲線如圖4(b)所示。
圖4 馬鈴薯圖像曼哈頓距離曲線特征Fig.4 Characteristics of Manhattan distance curve of potato image
在以往的實驗中,距離檢測方法中通常采用歐氏距離進行數據檢測[14]。歐式距離的優(yōu)點在于簡單、易操作。但是,使用歐式距離測量坐標點間距離時必須使用浮點運算。然而,在機器視覺圖像識別過程中,圖像的像素點坐標可能會是整數,顯然歐式距離不適用。而且,計算機進行浮點運算時速度較慢、有誤差,每個坐標點的坐標對歐氏距離貢獻是等價的,當坐標軸表達測量的數值時,會產生不同大小的隨機波動[15]。此時需對坐標加權,使變化較大的坐標比變化較小的坐標有較小的加權系數,隨機波動的后果便是產生各種距離,若特征值大小有明顯差距會降低測量精度,穩(wěn)定性能不高,不能滿足實驗的實際需求。相對比較之下,曼哈頓距離檢測法不僅測量的運行速度快、穩(wěn)定性能高,還可以減少歐氏距離在開方運算過程中帶來的誤差,只需將二維坐標點相減即可得到需要的測量值,快捷、簡便,因此選取曼哈頓法檢測坐標矩陣中相對應點間距離對馬鈴薯畸形識別。
實驗過程中共處理馬鈴薯圖片340 張,畸形薯和正常薯各170 張。選取70 張正常薯、70 張畸形薯作為數據集,正常薯和畸形薯各100 張作為測試集。根據實驗數據發(fā)現,正常薯的曲線圖多數只有兩個波峰且波峰差值較小,最多有3 個波峰,而畸形薯的曲線特征趨勢較為抖動,波峰全部多于3 個,波峰最大值與最小值間差值較大。表1 為馬鈴薯自身形狀與最小外接圓雙層輪廓間距離差值。實驗結果分析發(fā)現,畸形薯波峰最大值與最小值之間差值的平均值較大,波峰差值方差是正常薯的17 倍,標準差是正常薯形的3.56 倍,可見畸形薯波形圖極為不穩(wěn)定。為更好地識別畸形薯,將正常薯的平均值加3 個標準差確定為判斷馬鈴薯是否畸形的依據。δ=x+3σ即閾值設定在σ=36.18,φ為馬鈴薯曲線圖波峰最大值與最小值間差值:
表1 馬鈴薯自形狀與最小外接圓間距離值Tab.1 Distance between the potato shape and the smallest peripheral circle
由此可見曼哈頓距離檢測法可以有效解決馬鈴薯畸形識別問題。畸形馬鈴薯形狀不規(guī)則提取的邊緣輪廓與外接圓輪廓間距離值之差較大,形狀特征曲線也較為明顯,而較規(guī)則的正常馬鈴薯形狀輪廓特征與外接圓輪廓特征之間距離值曲線特征較為規(guī)律。多數坐標曲線圖明顯呈對稱狀,但是在遍歷輪廓層提取輪廓線上坐標點時發(fā)現,各別圖像的某幾個點的像素坐標被提取時會出現誤差,導致距離曲線圖并無明顯對稱或呈現不規(guī)率曲線被系統(tǒng)誤判為畸形,因此整體識別率為91.50%。
表2 馬鈴薯畸形識別Tab.2 Identification of potato malformation
馬鈴薯形狀畸形會降低馬鈴薯的商品屬性,導致馬鈴薯加工利用率低,工業(yè)化加工轉化率僅為5%[16],因而在播種和收獲過程中需將畸形馬鈴薯逐個挑出,降低馬鈴薯價值損耗[17]。
本文使用曼哈頓距離法對馬鈴薯進行畸形識別,實驗過程發(fā)現曼哈頓距離檢測法精度高,減少了歐式距離檢測方法中由于開方產生的誤差。采集馬鈴薯圖像預處理,由于獲取圖像最小外接圓輪廓的前提是圖像必須為二值化模式,因此需對圖片灰度處理。提取馬鈴薯邊緣輪廓,按照邊緣輪廓的點集使用minEnclosingCircle 畫出邊緣輪廓最小外接圓。應用形態(tài)學腐蝕canny 算法提取馬鈴薯所有輪廓層,遍歷所有輪廓層并輸出輪廓線上坐標點,構成坐標矩陣。使用曼哈頓距離法測量輪廓層對應點間的距離值,根據測得的距離值畫出坐標曲線圖,如果曲線波形圖的形狀對稱、規(guī)則,且馬鈴薯波峰間差值在設定的閾值范圍內、波峰數量≤ 3,則馬鈴薯形狀為正常薯,否則為畸形薯。根據實驗數據測得馬鈴薯畸形識別率為96%,整體識別率91.5%,證明該方案可有效識別馬鈴薯形狀畸形問題。