高耀東 周 濤
(內蒙古科技大學機械工程學院,內蒙古 包頭 014010)
作為我國主要的經濟作物,大蒜的產業歷史悠久。目前我國大蒜種植和加工產業發展迅速,研究顯示,我國大蒜年平均產量占全球總產量的70%以上,并占據了全球62.8%的市場份額[1]。隨著大蒜相關產業的不斷發展,傳統的生產模式已漸漸被淘汰,全程機械化、智能化將成為大蒜生產的未來趨勢[2]。
蒜頭尺寸是決定其商業價值的主要因素之一,目前國內、外已研發的大蒜分級機主要分為機械式和非機械式2 種[3]。機械式分級機主要分為滾筒篩式和平面篩式,這2 種分級方式均通過不斷翻轉物料和往復振動的方式完成對大蒜的分級,不可避免地會造成大蒜損傷、篩孔堵塞以及竄級問題。非機械式主要以計算機視覺檢測技術為主,該方式具有非接觸、精度高、效率高和節省人力成本等優勢。該文主要研究了一種基于圖像處理的蒜頭橫徑尺寸的測量方法,以完成對蒜頭的尺寸測量和顯示。
國內、外早已對運用機器視覺對蔬菜水果等農作物進行品質分級進行了大量探索。張恒等[4]以核桃堅果為研究對象,利用圖像處理的方法實現了對核桃堅果的尺寸檢測。應義斌[5]以水果為研究目標,通過機器視覺技術實現了對水果尺寸的測量,為建立機器視覺對水果的品質檢測系統打下了基礎。
該文以市場常見的大蒜為研究對象,并以農業部頒發的關于大蒜等級規格劃分的最新文件為標準,對獲取的圖像采用灰度轉換、降噪、背景分割、邊緣檢測及迭代計算等圖像處理方法,解決了對蒜頭橫徑的測量問題。試驗結果顯示,該方法能夠實現對大蒜橫徑的檢測,且能夠保證較高的準確率。
在目標圖像的采集過程中,圖像采集設備采集到的信息并非都是有效信息,圖像中往往含有許多干擾信息。如果不對這些干擾信息進行處理,圖像處理的結果往往不夠穩定和可靠,進而影響結論的準確性。因此在對目標圖像進行處理之前,應先將試驗所需的目標圖像從背景中分割出來,以減少圖像中的干擾信息,進而提高后期圖像處理的準確性。
如果想快速有效地分割出試驗所需圖像,條件合適時對目標圖像進行邊緣檢測是比較快速的一種方法[6]。
攝像機采集的原始圖像如圖1 所示,黑色以外的區域在該文試驗中屬于干擾信息,應將其分割、舍棄。圖中黑色區域邊長信息為已知。
圖1 原始圖像
為去除干擾信息,需要對目標進行灰度轉換,目的是改善畫質,提高運算速度。攝像機采集的圖像往往受環境干擾,圖像中含有大量噪聲。這些噪聲會影響圖像處理的結果,在進行特征提取之前,通常需要采用合適的圖像預處理算法對原始圖像進行預處理,以保證結果的穩定可靠。高斯濾波是對圖像進行減噪時最常用的方法之一,能夠去除噪聲,提高邊緣檢測精度。因此需要使用高斯濾波函數對目標圖像進行處理,以去除噪聲,提高精度。
灰度變化較大的地方就是噪聲。噪聲很容易被識別為偽邊緣,而經過高斯濾波處理后的圖像,噪聲大大減少,利于后續的邊緣檢測。與圖像邊緣相關的信息將被最大限度地保留下來,可利用Canny 算子對濾波后的圖像進行邊緣檢測。
Canny 算子邊緣檢測結果如圖2 所示。由圖2 可以看出,對圖像進行邊緣檢測的效果并不理想,檢測到的邊緣并不連續,具體原因可能與光源選擇或成像質量有關。這樣的處理結果顯然會給后續的圖像處理帶來困難,該文采用的解決辦法是對Canny 算子處理過的圖像進行數學形態學中的膨脹、腐蝕操作,去除二值圖像中的無用信息,增強邊界,并去除細小毛刺[7],處理后的圖像如圖3 所示。由圖3 可知,經過膨脹與腐蝕處理過的圖像邊緣信息更清楚,有利于后續的信息識別及處理。
圖2 Canny 算子邊緣檢測結果
圖3 膨脹與腐蝕處理過的圖像
對目標圖像進行處理后,得到了圖3 中的含有圖像邊緣信息的圖像,矩形邊框以內的區域含有試驗所需的蒜頭邊緣信息,應予以保留。
以圖3 為目標圖像,利用OpenCV 庫中的findContours輪廓提取函數對圖像進行輪廓提取,將提取到的輪廓當作參數,再利用contourArea 函數計算出圖中所有封閉輪廓的面積,并通過設置面積閾值的方法過濾掉不滿足要求的封閉輪廓。
通過上述面積閾值過濾的方法可以得到矩形輪廓的信息,由一個Numpy 數組表示。要將矩形從背景中分割出來,就需要得到矩形輪廓的4 個頂點坐標。調用approxPolyDP 函數對提取出的輪廓進行處理,就可得到矩形輪廓的4 個頂點坐標。
得到頂點坐標后,利用透視變換的方法,將試驗所需的圖像信息變換至另一張圖像上,創建一個新的矩陣。新矩陣的組成元素為新圖像平面的4 點坐標,坐標值根據測得的黑色區域的邊長數據進行設置,左上角坐標為(0,0)。利用OpenCV 庫中的getPerspectiveTransform 函數求出2 個矩陣的變換矩陣,調用OpenCV 庫中的warpPerspective 函數和上述求出的透視變換矩陣,即可對原始圖像進行透視變換。透視變換結果如圖4 所示。
圖4 分割出的圖像
以圖4 為目標圖像,先對目標圖像進行灰度轉換、去除噪聲等操作,過濾干擾信息,提高檢測精度。再利用Canny 算子對處理后的目標圖像進行邊緣檢測,不同檢測閾值的設置得出的結果如圖5 所示。
圖5 不同閾值檢測結果
利用Canny 算子對目標圖像進行邊緣檢測時需要設置閾值,大于閾值的被認為是強邊緣點,小于閾值的點則被抑制掉。對蒜頭橫徑的測量需要盡可能地逼近其真實輪廓。因為每個蒜頭的邊緣信息都不相同,所以為提高檢測精度,就需要對每個被處理的圖像手動設置合適的閾值,但這顯然是不現實的。該文則利用OSTU 算法解決上述問題。OTSU 算法(大津法,最大類間方差法)是一種確定圖像分割閾值的算法,它被認為是圖像分割中閾值選取的最佳算法,其計算簡單且穩定性高,受外界因素干擾少,因此在數字圖像處理領域上具有廣泛應用。
通過調用OpenCV 庫中的threshold 函數對目標圖像進行處理,將得到2 個返回值,即閾值和二值化圖像。二值化圖像可極大化被測圖像的有效特征與背景之間的對比度[8]。利用OSTU 算法轉換得到的二值圖像如圖6 所示。
圖6 大津閾值法二值化圖像
將OSTU 算法計算得到的閾值作為Canny 算子的檢測閾值,以圖6 為檢測對象可得蒜頭的邊緣信息,如圖7 所示。
圖7 邊緣信息
雖然得到了圖7 中含有蒜頭邊緣信息的圖像,但是圖中仍然存在許多細小無用的干擾信息。重復上述過濾細小輪廓的處理步驟,可得一個組成蒜頭輪廓的所有點的集合。
該文采用測量封閉輪廓的最小外接圓直徑的方法來確定蒜頭的尺寸,并通過迭代法對得到的輪廓點集進行處理,可以找到包裹輪廓的最小圓。利用OpenCV 庫中的minEnclosingCircle 函數對獲得的點集進行迭代處理,可以得到該輪廓最小外接圓的圓心坐標和半徑。調用circle 和putText 函數在圖像上畫出最小外接圓輪廓,并標注檢測到的橫徑尺寸。大蒜橫徑尺寸檢測結果如圖8 所示。
圖8 大蒜橫徑尺寸檢測結果顯示
根據農業部頒發的關于大蒜等級規格劃分的最新文件,大蒜等級的劃分主要根據大蒜的色澤、形狀及有無機械損傷等標準,該標準將大蒜分為特級、一級與二級。蒜頭橫徑為劃分各級大蒜規格的主要指標,橫徑每間隔5mm為一種規格。其中規定,特級產品允許有5%的產品可以不符合該規格要求,一級和二級允許有10%的產品不符合該規格要求。
對符合一級與二級要求的不同規格的大蒜進行檢測分析,結果見表1。從表1 數據可知,不同規格大蒜的測量誤差雖然超過了5%,但均在10%以下,滿足目前生產條件下對一級與二級大蒜產品的測量需求。
表1 蒜頭橫徑檢測結果
為實現對蒜頭橫徑尺寸的測量,克服傳統機械式篩選存在的種種問題,該文設計了一種基于圖像處理的大蒜橫徑尺寸測量方法。該方法采用灰度轉換、濾波處理等方法對采集的圖像進行預處理操作,并采用Canny 算子對經過預處理的圖像進行邊緣檢測,利用轉換矩陣對圖像進行透視變換以分割出目標圖像,最后通過迭代算法確定蒜頭的半徑,并在圖像上進行標注。
測量符合一級與二級標準的不同規格的大蒜,將測得的結果與電子數顯游標卡尺所測結果進行比較。結果表明,橫徑測量值與實際測量值最大差值為4.26mm,最大相對誤差為8.3%。試驗結果表明,該方法基本滿足一級和二級蒜頭橫徑的測量要求,為蒜頭橫徑尺寸的測量提供了一種有效措施。