丁偉,丁松,秦懷宇
(1.江蘇科技大學張家港校區(qū)電氣與信息工程學院,江蘇張家港215600;2.張家港三利密封合金材料有限公司江蘇張家港215600)
?
機器視覺檢測中的矢量圖操作模塊的設計與開發(fā)
丁偉1,丁松2,秦懷宇1
(1.江蘇科技大學張家港校區(qū)電氣與信息工程學院,江蘇張家港215600;2.張家港三利密封合金材料有限公司江蘇張家港215600)
摘要:為解決矢量化的機器視覺檢測平臺開發(fā)中矢量圖的跨平臺操作問題,以Qt和Vjsua1 Stdjo 2012為開發(fā)平臺,設計并開發(fā)了可讀取DXF格式矢量圖的軟件工具模塊。實現(xiàn)矢量圖的讀取、繪制、放大、縮小、選中以及存儲功能;并以開放的庫形式提供給其它開發(fā)平臺對視覺檢測平臺功能進行進一步開發(fā),具有較強的擴展性和可維護性。為機器視覺檢測中的矢量圖操作提供了新的途徑。
關鍵詞:Qt;矢量圖;DXF;跨平臺;機器視覺
在工業(yè)生產(chǎn)中,由于生產(chǎn)設備、人工及各種外部因素造成的產(chǎn)品誤差不可避免。為避免不合格流入市場,需要在產(chǎn)品出廠前進行檢測。其中對檢測產(chǎn)品的尺寸、表面缺陷的外觀檢測是重要的檢測環(huán)節(jié)[1]。近年來,由于經(jīng)濟發(fā)展、產(chǎn)業(yè)升級和人工成本上升等因素,機器視覺檢測已經(jīng)代替人工檢測成為外觀檢測的主流。在機器視覺檢測中,柵格圖像的最小組成單元為像素,像素的大小會影響對產(chǎn)品檢測的準確性[2-3]。圖像的矢量化可以使圖像與分辨率無關,盡可能地還原圖像的幾何參數(shù)和相應的位置、尺寸、形狀信息,非常適用于對檢測參數(shù)敏感的精密零部件檢測[4-5]。
現(xiàn)在有多種把圖像矢量化并輸出標準數(shù)據(jù)接口文件DXF格式矢量圖的算法[6]。但是在機器視覺檢測平臺上打開和操作DXF格式矢量圖,需要特別安裝專業(yè)的制圖軟件,如AutoCad,Core1DRAW等,增加成本的同時這些專業(yè)軟件都有跨平臺的問題,不利于在專業(yè)的檢測平臺上安裝,且對檢測平臺后續(xù)針對性開發(fā)并實現(xiàn)自動檢測造成困難[7]。針對以上不足,文中以Qt和Vjsua1 Stdjo 2012(VS 2012)為開發(fā)平臺,設計并開發(fā)一款具備跨平臺功能的可讀取和操作DXF格式矢量圖的模塊,可在Wjndows系列,Ljnux,UNIX等幾乎所有主流系統(tǒng)使用。并可以庫的形式提供給其它開發(fā)平臺,方便后續(xù)開發(fā)和維護。
文中以VS 2012為開發(fā)平臺,并以Qt為界面設計平臺,實現(xiàn)對dxf圖形的操作軟件的開發(fā)。通過CMake構建整個程序的架構,使得軟件具備的跨平臺的功能,在不同操作系統(tǒng)中可生成可執(zhí)行的文件。
VS2012是經(jīng)典的Wjndows操作系統(tǒng)下軟件開發(fā)平臺。Qt是一個跨平臺的C++圖形用戶界面應用程序開發(fā)軟件。易于擴展,并且允許組件編程,具有極大開發(fā)便利性。利用Qt提供的C++應用程序開發(fā)框架就可實現(xiàn)一次編寫,隨處編譯。即Qt程序具有很強的可移植性,可運行于wjndows98、vjsta、wjndowXP、wjndows 7、Ljnux、UNIX等操作系統(tǒng)平臺。CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程),能夠輸出各種各樣的makefj1e或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是CMake的組態(tài)檔取名為CmakeLjsts.txt。Cmake并不直接建構出最終的軟件,而是產(chǎn)生標準的建構檔(如Unjx的Makefj1e或Wjndows Vjsua1 C++的projects/ workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發(fā)環(huán)境(IDE)的開發(fā)者可以用標準的方式建構他的軟件,這種可以使用各平臺的原生建構系統(tǒng)的能力是CMake和SCons等其他類似系統(tǒng)的區(qū)別之處。
軟件總體架構如圖1所示。GUI系統(tǒng)模塊主要實現(xiàn)界面顯示功能,即生成文件顯示窗口,并在界面中實現(xiàn)編輯項目選項欄;Aoj-vjew模塊主要實現(xiàn)對解析后的圖片顯示,并對DXF圖區(qū)域的形狀進行管理和與用戶之間的交互等功能;Doc-manage模塊和DXF-IO模塊負責實現(xiàn)DXF圖形管理,其中DXF-IO主要實現(xiàn)對DXF文件內(nèi)容的解析,包括圖形的點、線、圓等的方位、大小等信息的解析,當涉及到具體DXF圖庫的時候便根據(jù)需要調(diào)用Core和DXF1jb內(nèi)的文件庫實現(xiàn)圖形的解析與恢復。架構中每個模塊都留有擴展接口方便后續(xù)對系統(tǒng)功能的擴展。
圖1 系統(tǒng)架構
3.1建立工程
采用命令行的方式建立工程,實現(xiàn)對建立文件的歸類,便于其它人員使用或后續(xù)開發(fā)。
建立VS工程。在建立majn.cpp文件之前,首先要在指定位置的工程文件夾里建立CMakeLjsts.txt的文件,再建立majn.cpp的文件。CMakeLjsts.txt文件實現(xiàn)將建立的VS工程與Qt相互關聯(lián)的作用,換言之,即通過CMake生成一個makefj1e的可執(zhí)行文件或工程。在編譯程序時,根據(jù)CMakeLjsts.txt中的指令分別到相應的工程里面執(zhí)行工程里的內(nèi)容,同樣,也調(diào)用Qt界面程序。
3.2GUI模塊設計
GUI模塊中共包含主窗口界面設計、打開標準檔對話框、保存標準檔對話框等,其包含4個小模塊:Majn-wjndow,Choose-doc-dja1og,Doc-1jst-vjew,Doc-1jst-wjdget其相應的結(jié)構圖如圖2所示。
圖2 GUI結(jié)構圖
1)Majn-wjndow模塊主要是負責維護主窗口的交互界面,其中包括標題欄,工具欄,主區(qū)域等。標題欄主要是放大縮小關閉等按鈕的系統(tǒng)菜單,用于維護主要的系統(tǒng)事件;工具欄是一些自定義的事件,主要包括打開DXF文件、打開標準當文件、和保存標準當文件等;主區(qū)域是用戶鼠標鍵盤操作的主要區(qū)域,由AOIVIEW構成,用于獲取用戶的鼠標輸入等動作。其主要生成界面如圖3所示。
圖3 軟件初始界面
2)Choose-doc-dja1og是主窗口Open槽函數(shù)彈出的對話框,其中Choose-doc-dja1og類主要是負責對話框界面的組織,窗口如圖4所示。具體操作工作由DocLjstVjew和DocLjstWjdget完成,DocLjstVjew是左邊的標準當名字選擇列表,右邊的DocLjstWjdget是標準當?shù)脑敿毿畔ⅰ?/p>
圖4 Open對話框
3.3Aol-vlew模塊設計
Aoj-vjew模塊用于顯示形狀信息以及用戶的部分交互工作,具體結(jié)構圖如圖5所示。
圖5 AojVjew模塊結(jié)構圖
AojVjew的核心模塊由Cad-vjew、Cad-jtem和Cad-mode組成,其中Cad-vjew用于從用戶獲取輸入信息,Cad-jtem負責單個形狀信息的保存和繪制,Cad-mode用于控制用戶的操作流程。工作流程主要是:Cad-vjew獲取到用戶鼠標鍵盤事件->Cad-vjew判斷當前處在的Cad-mode狀態(tài)->傳遞給相應的Cad-mode處理->Cad-mode根據(jù)之前的狀態(tài)決定下一步狀態(tài)是退出還是繼續(xù)處于該狀態(tài)->退出用戶事件并等待下一次事件。
Cad-vjew、Cad-jtem和Cad-mode的交互形成AojVjew模塊的基礎。如后續(xù)用戶需要實現(xiàn)新的操作方式,根據(jù)面向?qū)ο蟮亩鄳B(tài)操作方式,只需用戶繼承并更新Cad-mode可以實現(xiàn)新的操作方式。所以AojVjew的架構方式非常有利于后續(xù)的功能擴展。
3.4DXF-I0模塊
DXF-IO模塊主要是封裝上層對下層DXF文件的訪問,通過一個繼承至DL-CreatjonAdapter的類DXF-IO實現(xiàn)相應的DXF文件的讀取和解析工作。實現(xiàn)的原理:子類通過繼承父類的虛函數(shù)的方式實現(xiàn)回調(diào),完成基類對子類的控制,最終實現(xiàn)上層函數(shù)。
3.5Core模塊
Core模塊主要是負責界面與底層之間的通信以及維護一些標準信息,模塊設計主要內(nèi)容包括:DjskInfo子模塊,實現(xiàn)標準數(shù)據(jù)結(jié)構信息以及基本的IO操作[8];IntArray子模塊,封裝一個可變整數(shù)型的數(shù)組,實現(xiàn)整數(shù)緩沖區(qū)的管理;Object子模塊,是所有點、線、圓等幾何圖形的基類;Shape子模塊,主要實現(xiàn)一些特定的形狀和復雜的形狀如構成圖形的基本元素的點、線、圓、弧等[9]。
3.6Doc-manage模塊
Doc-manage模塊主要實現(xiàn)標準文檔的管理,其中包括預覽、維護、新建、保存和刪除標準檔信息[10]。
用CMake完成軟件的編譯生成可執(zhí)行文件[11]。運用可執(zhí)行文件,實現(xiàn)矢量圖的解析,如圖6、7所示。圖6是對某金屬密封件矢量圖的讀取顯示,圖7是對矢量圖的操作演示。
圖6 解析結(jié)果
圖7 矢量圖的放大和選擇
本文以Qt和VS 2012為開發(fā)平臺,設計了一種對矢量圖進行操作的新方法,并開發(fā)一款具備跨平臺功能的可讀取和操作DXF格式矢量圖的軟件模塊,并以庫的形式提供給其它開發(fā)平臺,后續(xù)開發(fā)和維護。對以矢量圖方法為基礎的機器視覺檢測平臺提供了新的矢量圖操作途徑。軟件模塊已在實際檢測中應用,取得了良好的效果,說明本文的設計和開發(fā)方法具有很好的推廣前景。
參考文獻:
[1]Basa1amah S.Hjstogram based cjrc1e detectjon[J].Internatjona1 Journa1 of Computer Scjence and Network Securjty,2012,12(8):40-43.
[2]Forsyth D A,Jean P.Computer vjsjon[M].Inc:Prentjce Ha11,2003.
[3]趙磊,雷鳴,高俊釵.基于機器視覺的密封件表面缺陷檢測研究[J].電子設計工程,2011,19(24):72-74,77.
[4]劉春,利新琴,魯昌華,等.密封橡膠圈凸點缺陷檢測的研究[J].電子測量與儀器學報,2008(23):178-181.
[5]黎明,馬聰,楊小芹.機械加工零件表面紋理缺陷檢測[J].中國圖象圖形學報,2004,9(3):318-322.
[6]王艷麗.計算機中的位圖和矢量圖[J].信息與電腦(理論版),2011(9):191,193.
[7]呂志亮,嚴殊,李駒光.基于Qt/Embedded的DXF文件操作軟件的研究與實現(xiàn)[J].軟件導刊,2012,11(9):81-83.
[8]蔣國峰,丁潔.基于PC-104和虛擬儀器的某機載電臺檢測控制器[J].電子設計工程,2013(10):1-3.
[9]邢開宇,曹曉曼,方火能.基于FPGA和NAND F1ash的存儲器ECC設計與實現(xiàn)[J].電子科技,2015(2):38-40.
[10]李紅剛,楊林楠,張麗蓮.基于FPGA的高速多通道數(shù)據(jù)采集系統(tǒng)的設計[J].計算機測量與控制,2006(10):1407-1409.
[11]王德勝,康令州.基于FPGA的實時圖像采集與預處理[J].電視技術,2011(3):32-35.
Deslgn and develoPment of vector dlagram oPeratlon module ln machlne vlslon detectlon
DING Wej1,DING Song2,QIN Huaj-yu1
(1.College of Electrical andJiangsu University of Science and Technology(Zhangjiagang),Information Engineering,Zhangjiagang 215600,China;2.Zhangjiagang Sanli Sealing Alloy Material Co.,Ltd,Zhangjiagang 215600,China)
Abstract:Thjs paper uses Qt and Vjsua1 Stdjo 2012 as deve1opment p1atform to desjgn and jmp1ement a software too1s modu1e whjch can read the DXF format vector djagram,to so1ve the prob1em about vector cross p1atform's operatjona1 prob1ems. Through thjs too1 we can achjeve to jmport,draw,en1arge,reduce or save the vector djagram,and jn the form of open 1jbrary provjded to other programs as secondary deve1opment usjng. It a1so can generate dynamjc 1jbrarjes for other p1atform. It js convenjent for the fo11ow-up deve1opment. And jt provjdes a new way for vector operatjon jn machjne vjsjon detectjon.
Key words:Qt;vector djagram;DXF;cross p1atform;machjne vjsjon
中圖分類號:TN914
文獻標識碼:A
文章編號:1674-6236(2016)07-0037-03
收稿日期:2015-06-02稿件編號:201506019
基金項目:江蘇科技大學校區(qū)青年教師科研項目(112110146)
作者簡介:丁偉(1985—),女,江蘇蘇州人,碩士研究生,講師。研究方向:數(shù)字圖像處理,計算機視覺。