丁偉,丁松,秦懷宇
(1.江蘇科技大學張家港校區電氣與信息工程學院,江蘇張家港215600;2.張家港三利密封合金材料有限公司江蘇張家港215600)
?
機器視覺檢測中的矢量圖操作模塊的設計與開發
丁偉1,丁松2,秦懷宇1
(1.江蘇科技大學張家港校區電氣與信息工程學院,江蘇張家港215600;2.張家港三利密封合金材料有限公司江蘇張家港215600)
摘要:為解決矢量化的機器視覺檢測平臺開發中矢量圖的跨平臺操作問題,以Qt和Vjsua1 Stdjo 2012為開發平臺,設計并開發了可讀取DXF格式矢量圖的軟件工具模塊。實現矢量圖的讀取、繪制、放大、縮小、選中以及存儲功能;并以開放的庫形式提供給其它開發平臺對視覺檢測平臺功能進行進一步開發,具有較強的擴展性和可維護性。為機器視覺檢測中的矢量圖操作提供了新的途徑。
關鍵詞:Qt;矢量圖;DXF;跨平臺;機器視覺
在工業生產中,由于生產設備、人工及各種外部因素造成的產品誤差不可避免。為避免不合格流入市場,需要在產品出廠前進行檢測。其中對檢測產品的尺寸、表面缺陷的外觀檢測是重要的檢測環節[1]。近年來,由于經濟發展、產業升級和人工成本上升等因素,機器視覺檢測已經代替人工檢測成為外觀檢測的主流。在機器視覺檢測中,柵格圖像的最小組成單元為像素,像素的大小會影響對產品檢測的準確性[2-3]。圖像的矢量化可以使圖像與分辨率無關,盡可能地還原圖像的幾何參數和相應的位置、尺寸、形狀信息,非常適用于對檢測參數敏感的精密零部件檢測[4-5]。
現在有多種把圖像矢量化并輸出標準數據接口文件DXF格式矢量圖的算法[6]。但是在機器視覺檢測平臺上打開和操作DXF格式矢量圖,需要特別安裝專業的制圖軟件,如AutoCad,Core1DRAW等,增加成本的同時這些專業軟件都有跨平臺的問題,不利于在專業的檢測平臺上安裝,且對檢測平臺后續針對性開發并實現自動檢測造成困難[7]。針對以上不足,文中以Qt和Vjsua1 Stdjo 2012(VS 2012)為開發平臺,設計并開發一款具備跨平臺功能的可讀取和操作DXF格式矢量圖的模塊,可在Wjndows系列,Ljnux,UNIX等幾乎所有主流系統使用。并可以庫的形式提供給其它開發平臺,方便后續開發和維護。
文中以VS 2012為開發平臺,并以Qt為界面設計平臺,實現對dxf圖形的操作軟件的開發。通過CMake構建整個程序的架構,使得軟件具備的跨平臺的功能,在不同操作系統中可生成可執行的文件。
VS2012是經典的Wjndows操作系統下軟件開發平臺。Qt是一個跨平臺的C++圖形用戶界面應用程序開發軟件。易于擴展,并且允許組件編程,具有極大開發便利性。利用Qt提供的C++應用程序開發框架就可實現一次編寫,隨處編譯。即Qt程序具有很強的可移植性,可運行于wjndows98、vjsta、wjndowXP、wjndows 7、Ljnux、UNIX等操作系統平臺。CMake是一個跨平臺的安裝(編譯)工具,可以用簡單的語句來描述所有平臺的安裝(編譯過程),能夠輸出各種各樣的makefj1e或者project文件,能測試編譯器所支持的C++特性,類似UNIX下的automake。只是CMake的組態檔取名為CmakeLjsts.txt。Cmake并不直接建構出最終的軟件,而是產生標準的建構檔(如Unjx的Makefj1e或Wjndows Vjsua1 C++的projects/ workspaces),然后再依一般的建構方式使用。這使得熟悉某個集成開發環境(IDE)的開發者可以用標準的方式建構他的軟件,這種可以使用各平臺的原生建構系統的能力是CMake和SCons等其他類似系統的區別之處。
軟件總體架構如圖1所示。GUI系統模塊主要實現界面顯示功能,即生成文件顯示窗口,并在界面中實現編輯項目選項欄;Aoj-vjew模塊主要實現對解析后的圖片顯示,并對DXF圖區域的形狀進行管理和與用戶之間的交互等功能;Doc-manage模塊和DXF-IO模塊負責實現DXF圖形管理,其中DXF-IO主要實現對DXF文件內容的解析,包括圖形的點、線、圓等的方位、大小等信息的解析,當涉及到具體DXF圖庫的時候便根據需要調用Core和DXF1jb內的文件庫實現圖形的解析與恢復。架構中每個模塊都留有擴展接口方便后續對系統功能的擴展。

圖1 系統架構
3.1建立工程
采用命令行的方式建立工程,實現對建立文件的歸類,便于其它人員使用或后續開發。
建立VS工程。在建立majn.cpp文件之前,首先要在指定位置的工程文件夾里建立CMakeLjsts.txt的文件,再建立majn.cpp的文件。CMakeLjsts.txt文件實現將建立的VS工程與Qt相互關聯的作用,換言之,即通過CMake生成一個makefj1e的可執行文件或工程。在編譯程序時,根據CMakeLjsts.txt中的指令分別到相應的工程里面執行工程里的內容,同樣,也調用Qt界面程序。
3.2GUI模塊設計
GUI模塊中共包含主窗口界面設計、打開標準檔對話框、保存標準檔對話框等,其包含4個小模塊:Majn-wjndow,Choose-doc-dja1og,Doc-1jst-vjew,Doc-1jst-wjdget其相應的結構圖如圖2所示。

圖2 GUI結構圖
1)Majn-wjndow模塊主要是負責維護主窗口的交互界面,其中包括標題欄,工具欄,主區域等。標題欄主要是放大縮小關閉等按鈕的系統菜單,用于維護主要的系統事件;工具欄是一些自定義的事件,主要包括打開DXF文件、打開標準當文件、和保存標準當文件等;主區域是用戶鼠標鍵盤操作的主要區域,由AOIVIEW構成,用于獲取用戶的鼠標輸入等動作。其主要生成界面如圖3所示。

圖3 軟件初始界面
2)Choose-doc-dja1og是主窗口Open槽函數彈出的對話框,其中Choose-doc-dja1og類主要是負責對話框界面的組織,窗口如圖4所示。具體操作工作由DocLjstVjew和DocLjstWjdget完成,DocLjstVjew是左邊的標準當名字選擇列表,右邊的DocLjstWjdget是標準當的詳細信息。

圖4 Open對話框
3.3Aol-vlew模塊設計
Aoj-vjew模塊用于顯示形狀信息以及用戶的部分交互工作,具體結構圖如圖5所示。

圖5 AojVjew模塊結構圖
AojVjew的核心模塊由Cad-vjew、Cad-jtem和Cad-mode組成,其中Cad-vjew用于從用戶獲取輸入信息,Cad-jtem負責單個形狀信息的保存和繪制,Cad-mode用于控制用戶的操作流程。工作流程主要是:Cad-vjew獲取到用戶鼠標鍵盤事件->Cad-vjew判斷當前處在的Cad-mode狀態->傳遞給相應的Cad-mode處理->Cad-mode根據之前的狀態決定下一步狀態是退出還是繼續處于該狀態->退出用戶事件并等待下一次事件。
Cad-vjew、Cad-jtem和Cad-mode的交互形成AojVjew模塊的基礎。如后續用戶需要實現新的操作方式,根據面向對象的多態操作方式,只需用戶繼承并更新Cad-mode可以實現新的操作方式。所以AojVjew的架構方式非常有利于后續的功能擴展。
3.4DXF-I0模塊
DXF-IO模塊主要是封裝上層對下層DXF文件的訪問,通過一個繼承至DL-CreatjonAdapter的類DXF-IO實現相應的DXF文件的讀取和解析工作。實現的原理:子類通過繼承父類的虛函數的方式實現回調,完成基類對子類的控制,最終實現上層函數。
3.5Core模塊
Core模塊主要是負責界面與底層之間的通信以及維護一些標準信息,模塊設計主要內容包括:DjskInfo子模塊,實現標準數據結構信息以及基本的IO操作[8];IntArray子模塊,封裝一個可變整數型的數組,實現整數緩沖區的管理;Object子模塊,是所有點、線、圓等幾何圖形的基類;Shape子模塊,主要實現一些特定的形狀和復雜的形狀如構成圖形的基本元素的點、線、圓、弧等[9]。
3.6Doc-manage模塊
Doc-manage模塊主要實現標準文檔的管理,其中包括預覽、維護、新建、保存和刪除標準檔信息[10]。
用CMake完成軟件的編譯生成可執行文件[11]。運用可執行文件,實現矢量圖的解析,如圖6、7所示。圖6是對某金屬密封件矢量圖的讀取顯示,圖7是對矢量圖的操作演示。

圖6 解析結果

圖7 矢量圖的放大和選擇
本文以Qt和VS 2012為開發平臺,設計了一種對矢量圖進行操作的新方法,并開發一款具備跨平臺功能的可讀取和操作DXF格式矢量圖的軟件模塊,并以庫的形式提供給其它開發平臺,后續開發和維護。對以矢量圖方法為基礎的機器視覺檢測平臺提供了新的矢量圖操作途徑。軟件模塊已在實際檢測中應用,取得了良好的效果,說明本文的設計和開發方法具有很好的推廣前景。
參考文獻:
[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文件操作軟件的研究與實現[J].軟件導刊,2012,11(9):81-83.
[8]蔣國峰,丁潔.基于PC-104和虛擬儀器的某機載電臺檢測控制器[J].電子設計工程,2013(10):1-3.
[9]邢開宇,曹曉曼,方火能.基于FPGA和NAND F1ash的存儲器ECC設計與實現[J].電子科技,2015(2):38-40.
[10]李紅剛,楊林楠,張麗蓮.基于FPGA的高速多通道數據采集系統的設計[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
基金項目:江蘇科技大學校區青年教師科研項目(112110146)
作者簡介:丁偉(1985—),女,江蘇蘇州人,碩士研究生,講師。研究方向:數字圖像處理,計算機視覺。