劉 航, 郭俊先, 王 勇, 周 軍, 郭 政, 蔡 建
(1.新疆農(nóng)業(yè)大學(xué)機(jī)械交通學(xué)院,新疆烏魯木齊 830052; 2.新疆維吾爾自治區(qū)農(nóng)牧業(yè)機(jī)械產(chǎn)品質(zhì)量監(jiān)督管理站,新疆烏魯木齊 830000)
核桃原產(chǎn)于中亞,別稱胡桃、羌桃、合桃,是胡桃科核桃屬多年生落葉喬木,有“木本油料王”之稱。作為世界上重要的堅(jiān)果樹種之一,核桃在我國(guó)的種植歷史悠久,我國(guó)核桃栽培面積和總產(chǎn)量均居世界第一[1-2]。但核桃的分級(jí)技術(shù)還很落后,基本依靠果農(nóng)或者機(jī)械式分級(jí),效率低、誤差大,同時(shí)也造成了一定的勞動(dòng)力和果品浪費(fèi)。當(dāng)前利用機(jī)器視覺技術(shù)對(duì)農(nóng)產(chǎn)品和工業(yè)產(chǎn)品進(jìn)行檢測(cè)和分級(jí)是國(guó)內(nèi)一大熱點(diǎn)。顧勇等通過VC++和Matlab的混合編程設(shè)計(jì)了一種由圖像獲取系統(tǒng)、圖像處理系統(tǒng)和圖像識(shí)別系統(tǒng)組成的機(jī)器視覺啤酒瓶檢測(cè)系統(tǒng)[3]。李苗等在Windows XP環(huán)境下采用Visual C++6.0開發(fā)出工具,完成了基于機(jī)器視覺的方便面分類檢測(cè)系統(tǒng)中圖像采集模塊、圖像處理模塊、學(xué)習(xí)模塊及其他模塊的設(shè)計(jì)[4]。為實(shí)現(xiàn)馬鈴薯的實(shí)時(shí)檢測(cè)和分級(jí),鄧立苗等提出了根據(jù)形狀、綠皮和缺陷的外觀檢測(cè)以及分級(jí)方法,并基于Visual C++集成開發(fā)環(huán)境實(shí)現(xiàn)了對(duì)馬鈴薯外觀品質(zhì)的實(shí)時(shí)檢測(cè)和分級(jí)[5]。本研究通過對(duì)大恒水星系列面陣CCD相機(jī)MER-030-120UC進(jìn)行二次開發(fā),并利用OpenCV圖像處理軟件編寫圖像處理程序,構(gòu)建以VS 2010為開發(fā)平臺(tái)的核桃大小分級(jí)系統(tǒng)軟件。
基于機(jī)器視覺的核桃大小分級(jí)機(jī)系統(tǒng)如圖1所示,主要由動(dòng)力系統(tǒng)、核桃輸送系統(tǒng)、圖像采集與視覺檢測(cè)系統(tǒng)、分級(jí)控制與執(zhí)行部件四大部分組成。其中動(dòng)力系統(tǒng)包括1.1 kW交流調(diào)速電機(jī)、減速機(jī)、變頻器、電氣控制柜、鏈輪與傳動(dòng)軸等;核桃輸送系統(tǒng)主要由仿形托輥、固定軸、鏈條等組成;圖像采集與視覺檢測(cè)系統(tǒng)由大恒水星系列面陣CCD相機(jī)MER-030-120UC彩色相機(jī)、日本Computer公司生產(chǎn)的CBC-0814MP 8 mm定焦鏡頭、高亮度LED條形光源、光電接近開關(guān)、計(jì)算機(jī)以及基于OpenCV2.4.9開發(fā)的圖像處理程序組成;分級(jí)控制與執(zhí)行部分由PLC控制器、繼電器、三極管、電磁閥以及提供空氣動(dòng)力的空氣壓縮機(jī)組成。
核桃大小分級(jí)系統(tǒng)流程如圖2所示,當(dāng)放置在仿形托輥上的核桃通過圖像采集區(qū)域時(shí),光電接近開關(guān)發(fā)送圖像采集命令,相機(jī)接收?qǐng)D像采集命令開始采集核桃的RGB圖像,然后傳送至計(jì)算機(jī),通過計(jì)算機(jī)上編寫好的圖像處理軟件對(duì)采集到的核桃圖像進(jìn)行處理,并將圖像處理后得到的核桃大小等級(jí)信息發(fā)送給PLC控制器,控制器將分級(jí)信號(hào)發(fā)送到分級(jí)執(zhí)行機(jī)構(gòu),通過電磁閥的動(dòng)作將對(duì)應(yīng)等級(jí)的核桃吹落至相應(yīng)的收集盒中,從而完成核桃大小分級(jí)的過程。
通過相機(jī)生產(chǎn)廠商提供的軟件開發(fā)工具包(SDK),用戶可以通過接口庫(kù)直接調(diào)用相應(yīng)的庫(kù)函數(shù)來實(shí)現(xiàn)圖像采集和相機(jī)參數(shù)設(shè)置等功能。
相機(jī)的主要接口函數(shù)包含2個(gè)方面,即主功能接口和圖像處理函數(shù)接口。主功能接口包括打開相機(jī)、采集圖像、控制相機(jī)等接口,圖像處理接口主要包括Bayer數(shù)據(jù)轉(zhuǎn)換接口。表1展示了2個(gè)主要接口中的包含文件與靜、動(dòng)態(tài)鏈接庫(kù)。
表1 相機(jī)主要接口文件
2.2.1 配置編程環(huán)境 本套軟件的編制是基于Windows 7.0操作系統(tǒng)中的編程開發(fā)工具M(jìn)icrosoft Visual Studio 2010。在VS 2010編程工具中創(chuàng)建基于名稱為Walnut_Judge的MFC對(duì)話框應(yīng)用程序,然后點(diǎn)擊菜單欄中工程屬性命令,在彈出的屬性頁(yè)面中將GxIAPI.h和DxImageProc.h文件所在目錄路徑添加到附加包含目錄中,將GxIAPI.lib和DxImageProc.lib這2個(gè)文件添加到鏈接器的常規(guī)附加庫(kù)目錄,在鏈接器輸入下拉列表的附加依賴項(xiàng)中填寫GxIAPI.lib和DxImageProc.lib這2個(gè)文件,從而完成編程環(huán)境的配置。
2.2.2 圖像采集的具體實(shí)現(xiàn) 根據(jù)相機(jī)生產(chǎn)廠商提供的開發(fā)工具包,對(duì)相機(jī)的控制操作主要包括獲取設(shè)備基本信息、相機(jī)的開啟與關(guān)閉控制、觸發(fā)模式設(shè)置、采集速度設(shè)置、白平衡和圖像保存設(shè)置等方面。相機(jī)的采集流程如圖2所示。
通過相應(yīng)的UI界面初始化函數(shù)InitUI()將軟件上的控件初始化,同時(shí)在新建的MFC界面中完成圖像顯示、圖像處理函數(shù)的初始化。本軟件中對(duì)相機(jī)的控制主要包括對(duì)設(shè)備開啟與關(guān)閉的控制、觸發(fā)模式控制、相機(jī)基本參數(shù)設(shè)置、白平衡以及圖像保存等部分。
圖像采集與相機(jī)控制過程的主要實(shí)現(xiàn)代碼如下:
GX_STATUS WalnutJudgeDlg::InitDevice()
void WalnutJudgeDlg::DrawImg()
void WalnutJudgeDlg::InitUI()
WalnutJudgeDlg::OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM* pFrame)
{WalnutJudgeDlg*pDlg = (WalnutJudgeDlg*)(pFrame->pUserParam);
if (pFrame->status==0)
DxRaw8toRGB24();
pDlg->DrawImg();
pDlg->MatImageProcess(nHeight,nWidth,pDlg->m_pBufferRGB);
pDlg->ShowMatImage();
pDlg->SaveImage();
}
程序運(yùn)行結(jié)果如圖3所示。
目前對(duì)類似于核桃這種圓形或者長(zhǎng)圓形農(nóng)產(chǎn)品的研究比較豐富[6-12]。在學(xué)習(xí)早期研究者處理方法的基礎(chǔ)上,通過對(duì)相機(jī)采集的核桃RGB圖像進(jìn)行中值濾波、閾值分割、形態(tài)學(xué)處理、圖像填充、繪制輪廓、查找最小外接矩形等方式完成對(duì)核桃外部輪廓的繪制,成功提取核桃果體面積上像素點(diǎn)個(gè)數(shù)與橫徑尺寸特征。
將OpenCV2.4.9的靜態(tài)鏈接庫(kù)加入到VS 2010開發(fā)工具中,在程序WalnutGradar頭文件中加入OpenCV圖像處理的頭文件,即可進(jìn)行圖像處理程序編寫。
圖像處理的主要流程包括以下6個(gè)部分:(1)相機(jī)原始RAW圖像轉(zhuǎn)化為MAT類型數(shù)據(jù)。(2)圖像灰度轉(zhuǎn)化并進(jìn)行中值濾波降噪處理。(3)選擇合適的閾值上下限進(jìn)行自適應(yīng)閾值處理提取圖像邊界輪廓。(4)進(jìn)行形態(tài)學(xué)腐蝕膨脹處理,去除邊界圖像內(nèi)的孔洞。(5)利用填充函數(shù)對(duì)二值圖像內(nèi)的孔洞進(jìn)行填充。(6)尋找核桃二值圖像內(nèi)的輪廓邊界并繪制,通過確定輪廓點(diǎn)坐標(biāo)位置,繪制最小外接矩形。
根據(jù)以上算法流程,編寫程序關(guān)鍵代碼如下:
2018年,既是改革開放40周年,又是卡博特來華30周年。朱戟對(duì)此由衷地表示:“卡博特非常榮幸成為中國(guó)改革開放這一里程碑式篇章中的親歷者、參與者和受益者。所有卡博特海內(nèi)外的員工,都對(duì)中國(guó)及上海這40年的成就嘆為觀止,由衷地欽佩??ú┨匾矊?duì)能在這40年中對(duì)中國(guó)的發(fā)展作出微薄的貢獻(xiàn),深感榮幸與驕傲。”
WalnutJudgeDlg::MatImageProcess(VxUint32 Height,VxUint32 Width,BYTE *pBuffer)
{
m_MatImage=Mat(Height,Width,CV_8UC3,pBuffer);
Mat m_GrayImage,element;
cvtColor(m_MatImage,m_GrayImage,COLOR_BGR2GRAY);
blur(m_GrayImage,m_GrayImage,Size(3,3));
adaptiveThreshold(m_GrayImage,m_GrayImage,maxValue,adaptivMetheod,theresholdType,blockSize,C);;
element=getStructuringElement(MORPH_ELLIPSE,Size(40,40));
erode(outImage,outImage,element);
dilate(outImage,outImage,element);
findContours(outImage,contours,g_vHierarchy,CV_RETR_LIST,CV_CHAIN_APPROX_NONE);
drawContours(resultImage,contours,-1,Scalar(255),2);ShowMatImage();
}
從圖2相機(jī)采集工作流程圖可看出,圖像處理程序位于回調(diào)函數(shù)OnFrameCallbackeFun中。因此,可以通過將圖像處理的函數(shù)寫入回調(diào)函數(shù)中來完成采集圖像的處理過程。圖像處理界面顯示結(jié)果如圖4所示。
本試驗(yàn)所用樣本來自新疆阿克蘇地區(qū),試驗(yàn)核桃品種為新新二號(hào)核桃。按照核桃質(zhì)量等級(jí)標(biāo)準(zhǔn)GB/T 20398—2006 《核桃堅(jiān)果質(zhì)量等級(jí)》[13]并結(jié)合新新二號(hào)核桃的實(shí)際情況,將新新二號(hào)核桃按照質(zhì)量和橫徑分為一等品(質(zhì)量≥12 g,橫徑≥33.0 mm)、二等品(10 g≤質(zhì)量<12 g,橫徑≥31.5 mm)、三等品(8 g≤質(zhì)量<10 g,橫徑≥30.5 mm)。人工選取3個(gè)等級(jí),每個(gè)等級(jí)50個(gè)新新二號(hào)核桃。由于核桃輪廓所在面的表面積計(jì)算比較困難,所以選擇用核桃輪廓區(qū)域的像素?cái)?shù)作為核桃大小評(píng)判的指標(biāo)之一[14]。通過對(duì)相機(jī)的標(biāo)定,計(jì)算核桃各等級(jí)對(duì)應(yīng)的矩形短邊D,同時(shí)設(shè)定核桃輪廓面積像素?cái)?shù)M的閾值,建立如表2所示的核桃大小分級(jí)評(píng)判標(biāo)準(zhǔn)。
表2 核桃大小分級(jí)閾值
表3顯示的是利用核桃大小分級(jí)軟件測(cè)得的150個(gè)核桃的大小特征(面積像素?cái)?shù)M、矩形短邊D)以及實(shí)測(cè)質(zhì)量與橫徑數(shù)據(jù)。
通過核桃大小分級(jí)軟件對(duì)150個(gè)核桃分級(jí)結(jié)果和人工檢測(cè)分級(jí)結(jié)果進(jìn)行對(duì)比,結(jié)果如表4所示。
表3 核桃實(shí)測(cè)數(shù)據(jù)和圖像處理計(jì)算值對(duì)比
從表4可以看出,人工分級(jí)和通過本視覺系統(tǒng)軟件識(shí)別的一致性較高,總分級(jí)準(zhǔn)確率為88%。通過本視覺系統(tǒng)軟件對(duì)核桃進(jìn)行等級(jí)識(shí)別時(shí),一等品和二等品核桃識(shí)別率較高,但對(duì)三等品核桃分級(jí)準(zhǔn)確率比較低。通過分析發(fā)現(xiàn),在對(duì)核桃進(jìn)行分級(jí)時(shí),有些達(dá)到一等品或者二等品評(píng)判條件的核桃,由于其內(nèi)部缺陷(如生蟲、霉變、果仁萎縮)導(dǎo)致其質(zhì)量降低后被人工判定為三等品核桃,從而致使本視覺軟件無法對(duì)其進(jìn)行準(zhǔn)確判定。
表4 核桃大小分級(jí)結(jié)果
通過VS2010編程開發(fā)工具將大恒水星系列相機(jī)MER-030-120UC的二次開發(fā)和OpenCV圖像處理程序相結(jié)合,完成了基于機(jī)器視覺的核桃大小分級(jí)系統(tǒng)軟件設(shè)計(jì)。試驗(yàn)驗(yàn)證該分級(jí)系統(tǒng)所設(shè)計(jì)的軟件對(duì)核桃大小的分級(jí)準(zhǔn)確率為88%,可以為后期進(jìn)一步完善基于機(jī)器視覺的核桃大小分級(jí)提供支撐。
[1]馮連芬,呂芳德,張亞萍,等. 我國(guó)核桃育種及其栽培技術(shù)研究進(jìn)展[J]. 經(jīng)濟(jì)林研究,2006,24(2):69-73.
[2]王 冰,裴新民,李忠新,等. 我國(guó)核桃初加工現(xiàn)狀及發(fā)展前景的分析研究[J]. 中國(guó)農(nóng)機(jī)化學(xué)報(bào),2010(5):43-49.
[3]顧 勇,何明昕. 基于機(jī)器視覺的啤酒瓶檢測(cè)系統(tǒng)研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2012,33(1):248-252.
[4]李 苗,康戈文,張中越,等. 基于機(jī)器視覺的方便面分類檢測(cè)系統(tǒng)設(shè)計(jì)[J]. 可編程控制器與工廠自動(dòng)化,2013(3):78-83.
[5]鄧立苗,杜宏偉,徐 艷,等. 基于機(jī)器視覺的馬鈴薯智能分選方法與實(shí)現(xiàn)[J]. 中國(guó)農(nóng)機(jī)化學(xué)報(bào),2015,36(5):145-150.
[6]李景彬,鄧向武,坎 雜,等. 基于機(jī)器視覺的干制紅棗大小分級(jí)方法研究[J]. 農(nóng)機(jī)化研究,2014(2):55-58.
[7]王巧華,文友先. 基于BP神經(jīng)網(wǎng)絡(luò)的雞蛋大小分級(jí)方法研究[J]. 湖北農(nóng)業(yè)科學(xué),2005(1):97-99.
[8]施 健,何建國(guó),張 冬,等. 基于計(jì)算機(jī)視覺鮮棗大小分級(jí)系統(tǒng)研究[J]. 食品與機(jī)械,2013,29(5):134-137.
[9]安愛琴,余澤通,王宏強(qiáng). 基于機(jī)器視覺的蘋果大小自動(dòng)分級(jí)方法[J]. 農(nóng)機(jī)化研究,2008(4):163-166.
[10]展 慧,李小昱,王 為,等. 基于機(jī)器視覺的板栗分級(jí)檢測(cè)方法[J]. 農(nóng)業(yè)工程學(xué)報(bào),2010,26(4):327-331.
[11]Kemps C J,Bamelis F R,de Ketelaere B,et al. Non-destructive freshness assessment of shell eggs using FT-NIR spectroscopy[J]. Journal of the Science of Food and Agriculture,2006,86(9):1399-1406.
[12]周 平,趙春江,王紀(jì)華,等. 基于機(jī)器視覺的雞蛋體積與表面積計(jì)算方法[J]. 農(nóng)業(yè)機(jī)械學(xué)報(bào),2010,41(5):168-172.
[13]王文德,王 貴,張軍寬,等. 核桃堅(jiān)果質(zhì)量等級(jí) GB/T 20398—2006[S]. 北京:中國(guó)標(biāo)準(zhǔn)出版社,2006.
[14]莫亞子,段佳歡,沈 斌,等. 基于面積的獼猴桃大小分級(jí)檢測(cè)算法[J]. 電子世界,2014(10):257-258.