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