楊 群,敖天鎮(zhèn)
(廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006)
基于RANSAC的雞蛋凹陷檢測(cè)
楊 群,敖天鎮(zhèn)
(廣東工業(yè)大學(xué) 信息工程學(xué)院,廣東 廣州 510006)
現(xiàn)代化的蛋品加工業(yè)中,傳統(tǒng)的照蛋檢測(cè)鮮有雞蛋凹陷缺陷檢測(cè)。為了實(shí)現(xiàn)快速在線檢測(cè),提出一種基于RANSAC的雞蛋凹陷檢測(cè)系統(tǒng)設(shè)計(jì)方案。在工業(yè)生產(chǎn)線上,將雞蛋圖片進(jìn)行灰度轉(zhuǎn)化、閾值分割、最小外接矩形法、角點(diǎn)檢測(cè),最后用多模RANSAC算法擬合蛋形曲線。通過(guò)對(duì)擬合蛋形曲線和雞蛋殼曲線的比較,判斷是否為凹陷雞蛋,該算法的多模平均擬合時(shí)間為每個(gè)0.45s,檢測(cè)精度達(dá)到91%,證明算法具有較強(qiáng)的魯棒性和實(shí)時(shí)性。
蛋形曲線;RANSAC擬合;閾值分割;角點(diǎn)檢測(cè)
基于機(jī)器視覺(jué)的雞蛋凹陷缺陷檢測(cè),是圖像處理技術(shù)在農(nóng)業(yè)生產(chǎn)上的應(yīng)用。雞蛋凹陷缺陷檢測(cè)的主要問(wèn)題和難點(diǎn)是確定雞蛋長(zhǎng)徑以及多個(gè)雞蛋蛋形曲線擬合。很多專家學(xué)者對(duì)雞蛋方面的研究主要集中在雞蛋裂紋、臟斑、蛋形指數(shù)等方面,而對(duì)雞蛋外殼曲線鮮有研究,雞蛋外殼曲線能夠直接判斷雞蛋是否存在凹陷。國(guó)內(nèi)外檢測(cè)曲線主要集中在圓和橢圓兩個(gè)方面。李寒等[1]采用局部極大值法和隨機(jī)圓環(huán)變換檢測(cè)圓算法實(shí)現(xiàn)單個(gè)番茄、多個(gè)番茄目標(biāo)提取,但是算法的實(shí)際應(yīng)用性、可靠性需進(jìn)一步提高。袁理等[2]根據(jù)橢圓極和極弦的性質(zhì),隨機(jī)采樣2點(diǎn),驗(yàn)證第3點(diǎn)是否在橢圓上,算法的缺陷是對(duì)顆粒噪聲沒(méi)有抵抗能力。A·Goneid[3]基于hough變化的一維累加器數(shù)組來(lái)檢測(cè)二值圖像中的圓環(huán)和橢圓,該方法的缺陷是圖像中不能有顆粒噪聲。Tomonari Masuzaki[4]等假設(shè)所采集圖像的點(diǎn)是空間連接的,選取內(nèi)點(diǎn)擬合橢圓,然后計(jì)算誤差,該方法的缺陷是不能進(jìn)行多模擬合。
為了解決一副圖像中有多個(gè)雞蛋,并且存在因曝光和雞蛋表面鈣化物質(zhì)不均勻產(chǎn)生的顆粒噪聲問(wèn)題,提出外接矩形法對(duì)雞蛋進(jìn)行目標(biāo)提取。該方法首先對(duì)雞蛋圖像灰度化后的圖像進(jìn)行最大類間分割,檢測(cè)獲取角點(diǎn),然后采用外接矩形法統(tǒng)計(jì)雞蛋個(gè)數(shù),最后使用RANSAC算法擬合蛋形曲線。該算法避免了因顆粒噪聲對(duì)雞蛋殼曲線擬合的影響,同時(shí)也解決了多模擬合蛋形曲線的問(wèn)題。
1.1 蛋形曲線檢測(cè)原理
蛋形曲線的方程為:x4+2dx2y2+fy4=ax3+cxy2+ey2(1),相對(duì)于蛋形曲線方程{(cx)2+y2}2=a(cx)3+(a-b)cxy2,該曲線方程函數(shù)中參數(shù)的次數(shù)為一次,方程方便確定參數(shù)并且簡(jiǎn)便運(yùn)算。經(jīng)過(guò)數(shù)學(xué)推導(dǎo)和大量的實(shí)驗(yàn)數(shù)據(jù)證明,滿足條件a<0,d>0,f>0,-3000 2a2d≥ac+e,0.44 1.2 角點(diǎn)檢測(cè) 本文采用最大類間方差法[5]分割圖片,自動(dòng)計(jì)算出最優(yōu)閾值,將圖像分成兩個(gè)區(qū)域(0代表暗區(qū)域,1代表亮區(qū)域),避免角點(diǎn)檢測(cè)時(shí),因圖片曝光和雞蛋表面鈣化位置分布不均勻問(wèn)題,而誤產(chǎn)生興趣點(diǎn)。相較于選用全部的邊緣點(diǎn)運(yùn)算,選用角點(diǎn)具有如下優(yōu)點(diǎn):檢測(cè)出的角點(diǎn)數(shù)量集數(shù)量少,抽取適合角點(diǎn)耗費(fèi)時(shí)間短,并且檢測(cè)具有穩(wěn)定性。 1.3 蛋形曲線方向確定 對(duì)最大類間方差法的二值圖像,采用4連通域[6],連通域面積小于50的區(qū)域刪除,能夠?qū)⑵毓獠痪鶆虻膮^(qū)域刪除。然后用最小矩形面積法[7]獲取每個(gè)雞蛋的最小外接矩形,在MATLAB中用函數(shù)[rx,ry,area]=minboundrect(x,y)表示。矩形4個(gè)端點(diǎn)的坐標(biāo)逆時(shí)針順序分別為l1(x1,y1)、l2(x2,y2)、l3(x3,y3)、l4(x4,y4)。分別計(jì)算出過(guò)點(diǎn)l1和點(diǎn)l2,點(diǎn)l2和點(diǎn)l3,點(diǎn)l3和點(diǎn)l4,點(diǎn)l4和點(diǎn)l1的4條直線方程,直線和圖像邊緣坐標(biāo)的交點(diǎn),即為雞蛋輪廓的端點(diǎn)坐標(biāo)。其中數(shù)組boundary為雞蛋輪廓坐標(biāo),解出的端點(diǎn)坐標(biāo)不止一個(gè)值,取其中點(diǎn)值。遍歷數(shù)組中的4個(gè)點(diǎn),計(jì)算出距離最長(zhǎng)的兩個(gè)點(diǎn),即為雞蛋長(zhǎng)徑端點(diǎn)坐標(biāo),另外兩點(diǎn)即為短徑端點(diǎn)坐標(biāo)。設(shè)長(zhǎng)徑端點(diǎn)為(m1,n1),(m2,n2),短徑端點(diǎn)(m3,n3),(m4,n4),,則長(zhǎng)徑中點(diǎn)坐標(biāo)為x01=(m1+m2)/2,y01=(n1+n2)/2,旋轉(zhuǎn)角度為θ=arctan((n2-n1)/(m2-m1)),即長(zhǎng)徑直線于水平方向的夾角。 圖1 蛋形曲線 Step1:將采集的彩色圖像進(jìn)行灰度轉(zhuǎn)換[8]如圖2(b)所示,進(jìn)行最大類間分割得到圖像如圖2(c)所示。二值圖像I1采用4連通域,連通域面積小于50的區(qū)域刪除。運(yùn)用最小矩形法獲取每個(gè)雞蛋的最小外接矩形,自動(dòng)統(tǒng)計(jì)圖片中雞蛋數(shù)目如圖2(d)所示,將每個(gè)雞蛋的輪廓坐標(biāo)保存在數(shù)組boundary中,并且統(tǒng)計(jì)每個(gè)雞蛋邊緣點(diǎn)數(shù)為p。對(duì)二值圖像進(jìn)行角點(diǎn)檢測(cè),獲取角點(diǎn)坐標(biāo),存儲(chǔ)在數(shù)組mdata中。設(shè)置蛋形曲線條件存放數(shù)組II,存放每個(gè)滿足蛋形曲線點(diǎn)數(shù)數(shù)組M。 Step2:初始化數(shù)組M和II,按標(biāo)記雞蛋數(shù)目連通域順序獲取最小外接矩形端點(diǎn)的坐標(biāo)l1(x1,y1)、l2(x2,y2)、l3(x3,y3)、l4(x4,y4)。遍歷計(jì)算出l1、l2、l3、l4歐氏距離最長(zhǎng)的兩點(diǎn),分別計(jì)算出過(guò)點(diǎn)l1和點(diǎn)l2、點(diǎn)l2和點(diǎn)l3、點(diǎn)l3和點(diǎn)l4、點(diǎn)l4和點(diǎn)l1的4條直線方程直線和圖像邊緣坐標(biāo)的交點(diǎn),交點(diǎn)坐標(biāo)不止一個(gè),取值中間一點(diǎn),為雞蛋輪廓的端點(diǎn)坐標(biāo),存放在數(shù)組point中。遍歷數(shù)組中的4個(gè)點(diǎn),計(jì)算出距離最長(zhǎng)的兩個(gè)點(diǎn),即為雞蛋長(zhǎng)徑端點(diǎn)坐標(biāo),距離為pisto,另外兩點(diǎn)即為短徑端點(diǎn)坐標(biāo)。設(shè)長(zhǎng)徑端點(diǎn)為(m1,n1),(m2,n2),短徑端點(diǎn)為(m3,n3),(m4,n4),則長(zhǎng)徑中點(diǎn)坐標(biāo)為x01=(m1+m2)/2,y01=(n1+n2)/2,旋轉(zhuǎn)角度為θ=arctan((n2-n1)/(m2-m1)),θ2=-θ,距離pisto=((n1-n2)2+(m1-m2)2)1/2。 Step3:對(duì)雞蛋輪廓坐標(biāo)、角點(diǎn)坐標(biāo)、長(zhǎng)徑短徑端點(diǎn)整體平移(-(x01+x02)/2,-(y01+y02)/2),旋轉(zhuǎn)矩陣為[cosθ,-sinθ;sinθ,cosθ],再次平移為(pisto/2,0),可得到長(zhǎng)徑水平放置,端點(diǎn)在原點(diǎn),且經(jīng)過(guò)(pist0,0)點(diǎn)的蛋形,短徑兩端點(diǎn)在蛋形豎直方向上。設(shè)置雞蛋計(jì)數(shù)器ncount,最大計(jì)數(shù)值為N,循環(huán)計(jì)數(shù)器ncount1,最大計(jì)數(shù)值為N1,點(diǎn)數(shù)計(jì)數(shù)器ncount2,初始化ncount,ncount1,ncount2的值。平移旋轉(zhuǎn)后長(zhǎng)徑,短徑兩端點(diǎn)的坐標(biāo),刪除其中的坐標(biāo)(0,0),獲得3個(gè)定點(diǎn)。 Step4:選定3個(gè)定點(diǎn),再?gòu)乃薪屈c(diǎn)中任取2點(diǎn)。如果滿足蛋形曲線條件,則進(jìn)行下一步,否則重新選點(diǎn)至符合為止。 Step5:將擬合的蛋形曲線值與雞蛋輪廓的縱坐標(biāo)值比較,若相差閾值小于T,則ncount2加1,循環(huán)統(tǒng)計(jì)ncount2的值,存放在數(shù)組M中,蛋形曲線條件存放在數(shù)組II中,ncount1值加1。若ncount1小于N1,則返回Step4。否則,進(jìn)行下一步。 Step6:找出數(shù)組M中點(diǎn)數(shù)最大值為MM,點(diǎn)數(shù)符合率G=MM/p,對(duì)應(yīng)數(shù)組II中對(duì)應(yīng)的蛋形曲線條件,擬合蛋形曲線,將擬合的蛋形曲線平移(-pisto/2,0),旋轉(zhuǎn)矩陣為[cosθ2,-sinθ2;sinθ2,cosθ2],平移((x01+x02)/2,(y01+y02)/2),得到實(shí)際蛋形跟擬合蛋形的比較結(jié)果。ncount的值會(huì)自加1,然后與N比較,若小于N,返回Step2繼續(xù)循環(huán)擬合蛋形曲線;若不小于N,則進(jìn)行下一步。 Step7:程序結(jié)束。 本實(shí)驗(yàn)選用250張圖片進(jìn)行測(cè)試。算法能夠自動(dòng)統(tǒng)計(jì)雞蛋個(gè)數(shù),克服顆粒噪聲的影響,具有魯棒性和實(shí)時(shí)性,能夠進(jìn)行多模擬合,圖片中有兩個(gè)雞蛋時(shí),平均擬合的時(shí)間為每個(gè)0.45s左右。圖2為多模RANSAC[9]曲線擬合算法處理結(jié)果。多模RANSAC擬合蛋形算法都具有魯棒性。任意兩個(gè)角度,擬合出多模蛋形曲線如圖3所示。 通過(guò)檢測(cè)200張完整雞蛋圖片和200張破損雞蛋圖片,設(shè)定閾值差T為15,符合率G大于95%時(shí),為完好雞蛋;低于95%時(shí),為破損雞蛋。對(duì)破損的雞蛋運(yùn)用該RANSAC算法,圖4為單模破損雞蛋檢測(cè)圖像,圖5為多模破損雞蛋檢測(cè)圖像。 在蛋品加工生產(chǎn)線上,用矩形外接算法和RANSAC擬合蛋形曲線算法能夠有效地提取單蛋、多蛋的雞蛋目標(biāo),通過(guò)擬合曲線和實(shí)際蛋形曲線比較,能夠判斷雞蛋是否存在凹陷缺陷。算法具有準(zhǔn)確性、魯棒性和實(shí)時(shí)性,解決了顆粒噪聲對(duì)確定雞蛋長(zhǎng)徑中心的影響,以及多目標(biāo)擬合蛋形曲線的問(wèn)題,多模算法的平均時(shí)間為每個(gè)0.45s,精確度能夠達(dá)到91%。但由于RANSAC隨機(jī)取點(diǎn)的重復(fù)性,該算法的時(shí)效性還有待進(jìn)一步提高。 圖2 多模RANSAC曲線擬合算法處理結(jié)果 圖3 多模RANSAC擬合蛋形 圖4 單模破損雞蛋檢測(cè) 圖5 多模破損雞蛋檢測(cè) [1] 李寒,王庫(kù),曹倩,等.基于機(jī)器視覺(jué)的番茄多目標(biāo)提取與匹配[J].農(nóng)業(yè)工程學(xué)報(bào),2012,28(5):168-172. [2] 袁理,葉露,賈建祿.基于Hough變換的橢圓檢測(cè)算法[J].中國(guó)光學(xué),2010,3(4):379-384. [3]GONEIDA,ELGINDIS,SEWISYA.Amethodforthehoughtransformdetectionofcirclesandellipsesusinga1-dimensionalarray[C].IEEEInternationalConferenceonSystem,1997:3154-3157. [4]MASUZAKIT,SUGAYAY.Connectivity-basederrorevaluationforellipsefitting[C].IAPRInternationalConferenceonMachineVisionApplications,2015. [5] 薛景浩,章毓晉.基于最大類間后驗(yàn)交叉熵的閾值化分割算法[J].中國(guó)圖象圖形學(xué)報(bào),1999(2):110-114. [6] 岡薩雷斯.數(shù)字圖像處理的MATLAB實(shí)現(xiàn)[M].清華大學(xué)出版社,2013. [7] 吳曉光,王滌瓊,盛慧.一種獲取圖像區(qū)域最小外接矩形的算法及實(shí)現(xiàn)[J].計(jì)算機(jī)工程,2004,30(12):124-125. [8]DAIC,RONGW,FANZ,etal.AnoveldetectionalgorithmofmicrospheresbasedonHoughtransformandellipsefitting[C].IEEEInternationalConferenceonMechatronicsandAutomation,2015. [9]MOUX,SHINBS,WANGH.HierarchicalRANSACforaccuratehorizondetection[C].MediterraneanConferenceonControlandAutomation,2016. (責(zé)任編輯:孫 娟) 楊群(1991-),男,河南信陽(yáng)人,廣東工業(yè)大學(xué)信息工程學(xué)院碩士研究生,研究方向?yàn)閳D像處理;敖天鎮(zhèn)(1989-),男,河南信陽(yáng)人,廣東工業(yè)大學(xué)信息工程學(xué)院碩士研究生,研究方向?yàn)閳D像處理。 10.11907/rjdk.162597 TP319 A 1672-7800(2017)003-0125-032 多模RANSAC算法步驟
3 實(shí)驗(yàn)結(jié)果與分析
4 結(jié)語(yǔ)