丁伟,丁松,秦怀宇
(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—),女,江苏苏州人,硕士研究生,讲师。研究方向:数字图像处理,计算机视觉。