熊 峰,王桂棠,陳建強(qiáng),陳永彬,陳志盛,吳佳毅
基于機(jī)器視覺(jué)的平面工件自動(dòng)化檢測(cè)系統(tǒng),其便捷之處在于使用工業(yè)相機(jī)代替人眼,以圖像處理算法代替手工測(cè)量,極大縮短檢測(cè)時(shí)間及減少人為誤差[1]。但是,對(duì)于較大尺寸的平面工件,需要減小相機(jī)的拍照采集視場(chǎng)以保證檢測(cè)精度,同時(shí)通過(guò)精密數(shù)字運(yùn)動(dòng)控制使相機(jī)沿檢測(cè)圖元的輪廓運(yùn)動(dòng)并采用局部圖像,然后結(jié)合運(yùn)動(dòng)坐標(biāo)和圖像拼接得到工件的高精度圖像。依據(jù)檢測(cè)需求,測(cè)量圖元對(duì)象以及尺寸項(xiàng)目的選擇等需要預(yù)先進(jìn)行規(guī)劃設(shè)置。對(duì)于需要檢測(cè)眾多尺寸的復(fù)雜形狀工件,當(dāng)測(cè)量點(diǎn)數(shù)較多時(shí),依靠手工操作就顯得相當(dāng)復(fù)雜繁瑣、費(fèi)時(shí)費(fèi)力[2]。
DXF文件包含了工件的詳細(xì)圖形和尺寸信息。目前有研究者提出了利用解析DXF文件來(lái)獲取輸入工件信息的方法[3-4],但均未實(shí)現(xiàn)整體檢測(cè)規(guī)劃。本文研發(fā)了一種綜合了DXF文件解析、圖像重構(gòu)、自動(dòng)定位等技術(shù)的智能規(guī)劃方法,大大提高了基于機(jī)器視覺(jué)的較大尺寸復(fù)雜工件的智能檢測(cè)系統(tǒng)的工作效率和智能化水平。
DXF是一種CAD圖形交換文件,它以帶標(biāo)記數(shù)據(jù)的形式表示AutoCAD圖形文件中包含的信息[4],非常適合用來(lái)提取檢測(cè)零件的形位信息[5]。
帶標(biāo)記數(shù)據(jù)是指文件中的每個(gè)數(shù)據(jù)元素前面都帶有一個(gè)“組碼”——表示特定數(shù)據(jù)對(duì)象的含義。對(duì)于待測(cè)件的圖像重構(gòu),只需要關(guān)心圖像實(shí)體,而一般圖像實(shí)體信息全部包含在DXF文件的ENTITIES段中,將這些信息按構(gòu)成元素劃分為以下幾類組碼,如表1所列。
表1 ENTITES段組碼解析表Tab.1 ENTITIESBlock Code Parsing Table
由于每類數(shù)據(jù)都由固定排列的組碼表示,可以利用正則表達(dá)式遍歷提取的方法來(lái)獲取所需解析內(nèi)容,再將解析內(nèi)容存入對(duì)應(yīng)結(jié)構(gòu)體中,即得到了每個(gè)圖像實(shí)體的形位數(shù)據(jù)。DXF解析器運(yùn)行流程如圖1所示。
圖1 DXF文件解析流程Fig.1 DXFFile-pasring Flow
為了使機(jī)器視覺(jué)檢測(cè)系統(tǒng)檢測(cè)操作的交互過(guò)程方便直觀,需要將檢測(cè)對(duì)象圖像重構(gòu)并顯示出來(lái)??紤]到算法統(tǒng)一性,需要將解析數(shù)據(jù)進(jìn)行歸并:將直線歸入多段優(yōu)化線,將圓、圓弧歸入橢圓,將直徑標(biāo)注歸入半徑標(biāo)注,最后得到5種數(shù)據(jù)類型。
本文應(yīng)用Qt作為軟件開(kāi)發(fā)平臺(tái),其圖形界面開(kāi)發(fā)工具應(yīng)用非常廣泛,操作簡(jiǎn)便,內(nèi)部庫(kù)已經(jīng)實(shí)現(xiàn)了很多交互方法。本文通過(guò)繼承Qt庫(kù)中的現(xiàn)有圖元類QGraphics Item來(lái)得到基本繪圖方法,再以這5種數(shù)據(jù)類型分別進(jìn)行派生,實(shí)現(xiàn)各自的屬性,最后得到對(duì)應(yīng)圖元類,派生關(guān)系如表2[4]。
通過(guò)圖元類頭文件定義了圖形的各種屬性(起點(diǎn)、終點(diǎn)、類型等)和必要方法(選中、繪制等)。
例如DXF Polyline Item圖元類的定義如下:
class DXFPolyline繼承自QGraphicsItem
{
共有:
構(gòu)造函數(shù)1 #導(dǎo)入多段線數(shù)據(jù)
構(gòu)造函數(shù)2 #導(dǎo)入單段線數(shù)據(jù)
類型函數(shù) #返回圖元類型
表2 圖元類派生對(duì)照表Tab.2 Image Primitive Class Deriving Table
使能可處理函數(shù) #控制選中是否有效
控制點(diǎn)列表 #多段線的控制點(diǎn)坐標(biāo)
保護(hù):
圖元邊框 #控制鼠標(biāo)選擇熱點(diǎn)區(qū)
繪制函數(shù) #實(shí)現(xiàn)圖元繪制工作
私有:
線段類型 #指示是否閉合
控制點(diǎn)坐標(biāo)列表
};
圖2 輪廓重構(gòu)(上:零件照片,下:圖像)Fig.2 Outline Restructure(UP:Photo,DOWN:Image)
由于重構(gòu)圖像的數(shù)據(jù)來(lái)自DXF文件,當(dāng)界面顯示比例為1像素代表1毫米時(shí),顯示形位尺寸與真實(shí)形位尺寸信息相同,則通過(guò)在重構(gòu)圖像上設(shè)置檢測(cè)采樣點(diǎn),就可以直接得到實(shí)際的采樣坐標(biāo)。圖2為輪廓重構(gòu)實(shí)例。
在執(zhí)行檢測(cè)前,需要先確定檢測(cè)對(duì)象圖元,然后設(shè)定檢測(cè)項(xiàng)目,最后設(shè)置采樣坐標(biāo)。本文設(shè)計(jì)了智能交互的方式來(lái)完成這些步驟。
重構(gòu)圖像中的所有圖元都有可選屬性,可將其解析數(shù)據(jù)作為圖元類成員,構(gòu)建回調(diào)函數(shù)實(shí)現(xiàn)鼠標(biāo)選中時(shí)返回對(duì)應(yīng)成員數(shù)據(jù),再根據(jù)指定的檢測(cè)項(xiàng)目調(diào)用相應(yīng)算法就能生成一條完整檢測(cè)指令,整體流程如圖3。
為實(shí)現(xiàn)算法的統(tǒng)一性,將檢測(cè)項(xiàng)目劃分為8種基本類型:線長(zhǎng)、直線度、半徑、圓度、角度、點(diǎn)點(diǎn)距、點(diǎn)線距和線線距,檢測(cè)對(duì)象與這8種檢測(cè)項(xiàng)目也有一一對(duì)應(yīng)關(guān)系,通過(guò)分析概括如表3。
表3 檢測(cè)對(duì)象與檢測(cè)項(xiàng)目關(guān)系Tab.3 Measure Object and Item Map
每個(gè)圖元類中都設(shè)置了類型標(biāo)識(shí),在每次交互選擇時(shí),根據(jù)類型標(biāo)識(shí)判斷對(duì)象類型后,與關(guān)系表中的檢測(cè)項(xiàng)目綁定,實(shí)現(xiàn)智能候選菜單,其算法流程圖如圖4。
圖4 交互算法流程Fig.4 Interaction Algorithm Flow
由前文分析知,實(shí)際采樣坐標(biāo)可以由圖像上的定位點(diǎn)得到,自動(dòng)定位算法所做的工作就是生成圖像定位點(diǎn)。同樣,對(duì)應(yīng)2種形位圖元有2種生成子算法,算法定義如下,其中g(shù)enNodeList(*)方法根據(jù)傳入的圖元屬性來(lái)對(duì)其圖像邊緣進(jìn)行分割然后由optimze(&)方法對(duì)分割點(diǎn)列表進(jìn)行二次篩選處理,以下是算法定義:
class RoutePlanner
{
共有:
構(gòu)造函數(shù) #傳入采樣間距值
多段線圖元的采樣點(diǎn)計(jì)算函數(shù) #返回節(jié)點(diǎn)列表
橢圓圖元的采樣點(diǎn)計(jì)算函數(shù) #返回節(jié)點(diǎn)列表
節(jié)點(diǎn)過(guò)濾排序函數(shù) #優(yōu)化并生成運(yùn)動(dòng)路徑
私有:
節(jié)點(diǎn)列表
};
算法中的節(jié)點(diǎn)間距,是指相鄰采樣點(diǎn)之間的距離,對(duì)于視覺(jué)檢測(cè)定位,其節(jié)點(diǎn)間距就是相機(jī)視野直徑,這樣保證了采樣的完整性。(說(shuō)明:當(dāng)零件尺寸較大時(shí),需要移動(dòng)相機(jī)拍攝多幅局部照片,只有移動(dòng)距離≤視場(chǎng)半徑時(shí)才能覆蓋到完整對(duì)象。
在設(shè)定好節(jié)點(diǎn)間距后,將選擇的圖元指針傳入,由genNodeList(*)方法即可得到圖元上的采樣點(diǎn),主要原理為邊緣分割,分割數(shù)N由公式(1)、(2)確定:
其中L表示線長(zhǎng)、S表示節(jié)點(diǎn)間距、R表示圓半徑、A表示圓弧角,得到分割數(shù)N后,再通過(guò)公式(3)、(4)就可得到定位點(diǎn)坐標(biāo):
以上公式中i∈[1,N]。公式(3)求出直線上的定位點(diǎn)坐標(biāo),其中(X0,Y0)代表直線起點(diǎn);公式(4)求出圓弧上定位點(diǎn)坐標(biāo),a代表圓弧起始角。
然而并不是所有的檢測(cè)項(xiàng)目都需要所有定位點(diǎn)[6-14],比如求線長(zhǎng)只需要兩個(gè)端點(diǎn)、求半徑只需要3點(diǎn)定圓等,那么還需要調(diào)用路徑優(yōu)化函數(shù)op?timze(&)去除多余點(diǎn),優(yōu)化列表見(jiàn)表4。
表4 采樣點(diǎn)優(yōu)化列表Tab.4 Sampling Node Optimization List
點(diǎn)線距、點(diǎn)點(diǎn)距、線線距為以上的多項(xiàng)組合。
之后,再去除重復(fù)點(diǎn),就得到了優(yōu)化后的實(shí)際采樣坐標(biāo),算法流程如圖5。
圖5 自動(dòng)定位算法流程Fig.5 Auto-Positioning Algorithm Flow
最后將以上設(shè)計(jì)思路進(jìn)行編程實(shí)現(xiàn),以驗(yàn)證實(shí)際效果。首先,選取零件圖紙文件,例如“厚度儀安裝板.dxf”載入解析器,得到結(jié)果如圖6所示。
圖6 DXF重構(gòu)Fig.6 DXFRestructure
然后分別測(cè)試4種測(cè)量項(xiàng)目的自動(dòng)規(guī)劃算法,得到結(jié)果如圖7~10。
以上所有采樣點(diǎn)若通過(guò)手工輸入,至少需要21次操作,并且容易出錯(cuò)。使用本文算法自動(dòng)生成規(guī)劃方案,只需要4次交互,高效且可靠,節(jié)省時(shí)間75%,達(dá)到了設(shè)計(jì)目標(biāo)。
圖7 直線度測(cè)量采樣點(diǎn)生成Fig.7 Straightness Measuring Node Generation
圖8 點(diǎn)點(diǎn)距測(cè)量采樣點(diǎn)生成Fig.8 Point to Point Measuring Node Generation
圖9 兩線夾角測(cè)量采樣點(diǎn)生成Fig.9 Two Lines'Included Angle Measuring Node Generation
圖10 線線距測(cè)量采樣點(diǎn)生成Fig.10 Lines'Distance Measuring Node Generation
基于圖像交互的機(jī)器視覺(jué)尺寸檢測(cè)系統(tǒng)智能規(guī)劃算法,能有效提高現(xiàn)有檢測(cè)系統(tǒng)的整體效率。形狀越復(fù)雜、檢測(cè)參數(shù)越多的零件,縮短的規(guī)劃時(shí)間越多(在圖元總數(shù)不變情況下,隨檢測(cè)點(diǎn)數(shù)目線性增加)。
本算法不僅僅能運(yùn)用于平面尺寸檢測(cè)系統(tǒng),也很容易拓展到涉及二維定位的其他系統(tǒng)上,如加工制造;適應(yīng)性較強(qiáng),與其他算法搭配也能應(yīng)用于三維空間定位系統(tǒng)。
參考文獻(xiàn):
[1]劉霞.工業(yè)零件形狀尺寸的機(jī)器視覺(jué)檢測(cè)系統(tǒng)的研究[D].哈爾濱:哈爾濱理工大學(xué),2009.
[2]張燕,王貴成,張占勝.機(jī)器視覺(jué)定位平臺(tái)的研究與應(yīng)[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2012,25(5):30-31.
[3]梁艷青.基于DXF文件的數(shù)控自動(dòng)編程系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].沈陽(yáng):中國(guó)科學(xué)院沈陽(yáng)計(jì)算技術(shù)研究所,2015.
[4]付泰,王桂棠,程書(shū)豪,等.基于機(jī)器視覺(jué)的復(fù)雜平面零件尺寸精密檢測(cè)[J].機(jī)電工程技術(shù),2016,45(08):7-9.
[5]呂欣澤.基于DXF文件的激光雕刻系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].天津:天津師范大學(xué),2010.
[6]馬凱,楊澤林,呂靜.基于DXF文件的CAD/CAM刀具路徑優(yōu)化與生成[J].機(jī)床與液壓,2011,39(10):40-42.
[7]鄧小峰.基于機(jī)器視覺(jué)的零件識(shí)別和測(cè)量系統(tǒng)研究[D].南京:南京航空航天大學(xué),2014.
[8]葉鵬,高興宇.基于機(jī)器視覺(jué)的工業(yè)零件通用檢測(cè)平臺(tái)[J].桂林電子科技大學(xué)學(xué)報(bào),2016,36(3):227-230.
[9]盧婷婷.基于DXF文件的水切割機(jī)床軌跡優(yōu)化及仿真加工的研究與實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),2010.
[10]姚宜斌,孔建.基于DXF文件的圖件轉(zhuǎn)換方法研究及程序?qū)崿F(xiàn)[J].大地測(cè)量與地球動(dòng)力學(xué),2011,31(1):118-122.
[11]但永平,張蕾,張國(guó)濤,等.基于VC++的DXF數(shù)據(jù)文件接口程序設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012,20(23):70-74.
[12]陳大川,許小東,陳永彬,等.基于機(jī)器視覺(jué)的鉸鏈精密檢驗(yàn)系統(tǒng) [J].機(jī)電工程技術(shù),2015(3):64-67.
[13]董富強(qiáng).基于機(jī)器視覺(jué)的零件輪廓尺寸精密測(cè)量系統(tǒng)研究[D].天津:天津科技大學(xué),2014.
[14]馬建偉,趙朋可.基于機(jī)器視覺(jué)和OPC的多軸運(yùn)動(dòng)控制實(shí)驗(yàn)平臺(tái)設(shè)計(jì)[J].工業(yè)儀表與自動(dòng)化裝置,2013(6):35-38.