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