陈镇龙,郝 霞,刘 霖,刘娟秀,叶玉堂,罗 颖,宋昀岑
(电子科技大学 光电信息学院,四川 成都 610054)
基于多线阵CCD的大幅面拼接型高精度一次成像扫描仪的研制一直是国内、外学者及产业界关注的重点领域[1-3],但由于是光、机、电、软、算综合型极强的设备,涉及到的研究难点包括精密走纸机构[4]、大容量图像快速高精度拼接[5]、大容量图像矢量转换[6]、光学照明成像[7]等诸多难题,迄今为止,全部关键核心技术仍然只被丹麦Contex、日本Graphtec等少数国外研究团队掌握,国内所使用的基于多线阵CCD的大幅面拼接型高精度一次成像扫描仪全部进口,迄今为止处于空白状态。
同时,工程图识别也是一门综合技术,涉及到模式识别,人工智能,数字图像处理,CAD技术等,因此受到制约较多,从2009年丹麦Contex团队报道的情况来看,更大数据容量的处理仍没有具体的解决办法,截止目前,还未出现一种非常完善的图像识别系统和方法。但是,大量的国外顶尖学者仍然进行着相关的研究工作[8],美国Pennsylvania大学和Maryland大学,法国LORIA研究中心,以色列Institute of Technology等著名大学和研究机构在这一领域进行了多年的研究,但开发出的软件普遍存在精度不高,速度较慢,并且对噪音,缺损较为敏感的问题[9-11]。国内也做了大量研究,清华大学的ANND5.0系统完成了图像的矢量化处理,但是只能识别基本的图元,对于复杂图形可能出现错误,其主要的难点在于:在对工程图进行矢量化阶段,未能对细化图准确跟踪,对于出现断点的直线拟合不够准确。
本文在制作基于多线阵CCD的大幅面拼接型高精度一次性成像扫描仪的基础上,不仅在硬件上实现了将整个图像转化为数字图像,同时在软件上将扫描得到的点阵图成功的转化为CAD上能够识别的矢量图。矢量化实验及测试结果表明:通过利用数学中直线方程对直线段进行比较,不仅实现了完整的矢量跟踪,并且解决了直线中的断线问题。
对点阵图进行分析、识别、及重建其中元素使之生成CAD能够识别的文件格式的过程称为点阵图的矢量化,预处理更是整个矢量化的关键,由于在扫描的过程中可能会产生大量的噪声,从而使影响矢量化的质量,需要对图像进行预处理。
对大幅面扫描仪采集得到的大量图像对比分析发现,图像中的噪声基本是颗粒噪声,对比各种去噪算法的处理效果,最终采用中值滤波的方法来降噪。对于工程图这样线性轮廓较长的图像,我们采用3×3的模板去遍历整个图像,处理后的图像既保持了边缘的陡峭又去除了干扰。
处理步骤如下:1)用模板去遍历整个图像,直到模板中心与图像中某个像素重合为止;2)读取模板下个对应像素的灰度值;3)将这些灰度值从小到大排序;4)找出排序后中间位置对应的灰度值;5)将中间位置对应的灰度值赋值给对应模板中心位置的像素。
整体复合阈值法是在全面考察大律法、局部阈值法的基础上,提出的一种针对基于多线阵CCD的大幅面拼接型高精度一次性成像扫描仪中大容量、高速、高品质、矢量化转换的新方法,其主要内容是根据每台设备出厂前的单个相机成像差异,输入并存储相应的分布差异参数,在图像处理时,设定固定阈值,对图像采取边遍历、边处理、边保存的方式,从而实现结合成像自身特点,快速矢量的目的,达到高速、高品质、矢量化的需要。
大幅面扫描仪采集到的工程图线宽约为3-18个像素,所谓细化即将线条的宽度减少到只有一个像素,仅剩下能表征其特征的骨架。基于细化的方法最主要的优点是能够保持线段的连续性,最主要的缺点是丢失了线宽信息,在交叉区域处容易产生变形及错误的分支。在整个矢量化的系统中,针对大幅面扫描仪下采集的工程图,我们采用Hilditch经典细化算法的思想:每次扫描删除图像中目标的轮廓像素(这些像素满足一定的条件),直到图像上不存在可删除的轮廓像素为止。
本文将根据细化后单像素线条的特征,将图像划分为交叉点域和连通域,通过提取出交叉点后对连通段进行跟踪拟合,之后对不同直线方程中斜率和截距的比较,从而实现整个图形的完整矢量化。
如图1所示,与图像中任意像素P相邻的8个像素P0,P1,P2,P3,P4,P5,P6,P7 称为 P 的 8 邻域, 用 Pk 表示。 当 P的八邻域内的像素个数大于2时,我们认为P为交叉点。
图1 3×3的矩阵窗口Fig.1 3×3 matrix window
1)采用自上而下,自左向右的扫描顺序遍历图像,设定交叉点满足的条件,从而提取图像中的交叉点像素,并将交叉点像素置为0。
2)第一次遍历结束后,图像中仅剩连通段,再次对整个图像采用自上而下,自左向右的扫描顺序进行遍历,将扫描到的第一个黑色像素点P的八邻域进行判断,若八邻域内仅有一个像素点,则P作为起始点;若P的八邻域内有两个像素点,则沿着这两个像素的方向继续遍历,直到找到八邻域内仅有一个像素的点,才可以作为终止点。
3)若在P的八邻域内找不到黑色像素点,则可能是跟踪到断线的位置,或者是跟踪到交叉点处,此时记录下该点的坐标为Pf,根据寻找起点的规则遍历图纸,当找到起点时记录下起点的坐标为Pi。继续跟踪,为了防止对连通段的重复跟踪,将扫描过的像素点置0,直到图像中不再有黑色像素点为止。
4)读取记录的Pf,Pi图像信息,对图中断线或交叉点处,利用数学直线方程进行拟合。
若 Pi和 Pf的坐标分别为(xi,yi),(xf,yf),则直线 PiPf的两点式方程为:
又直线的一般方程为
则
令 k=-A/B,b=-C/B,建立一个二维数组,将计算得到的k,b的值进行存储。 之后,将(k,b)按照 k从小到大排序,同时,程序中令所有直线存储在变量allLines中,建立一个由vector<vector<pair<int,int> > >表示的对象 lines, 存储最终合并后的直线。
首先allLines中第一条直线存入lines,然后取第二条直线将其斜率和截距与第一条进行比较,设定阈值ε(ε>0),按如下规则判断直线是否进行合并及相应处理:
1)若|Δk|<ε,且|Δb|<ε,则认为两条直线是一条直线,应进行合并,记录下这4个坐标点中最大与最小的坐标点,从而拟合出完整的直线;
2)若不满足上述条件,则不是同一条直线,作为一条新直线存入lines。
对于allLines中第i条直线,将其斜率与lines中最后一条直线比较,按上述规则判断处理,直到遍历完allLines中所有直线。
对比图3,图4可以看出,采用本文所提出的直线矢量化方法,能够有效的解决交叉点畸变的问题,对矢量化跟踪的效果较好。
图2 细化图Fig.2 Thinning image
图3 去除交叉点的细化图Fig.3 Remove cross point
图4 矢量化后的效果图Fig.4 Vector image
由于在本文的算法中仅进行了直线的矢量化,还需要对直线线宽进行恢复,恢复方法如下:设直线线宽为w,其斜率为k=tanθ,l为该图像内直线水平扫描段的线宽,则直线的线宽为:w=l×sinθ,这里对于水平长直线和竖直长直线,w=l,l即为直线的线宽。
提出了利用直线方程对直线进行合并的方法,成功实现了工程图中直线的矢量化,制作了首台基于多线阵CCD的大幅面拼接型高精度一次性成像扫描仪。
实验分析及最后的编程测试结果表明:通过对直线的斜率和截距的比较,可以很好的将直线进行合并,不仅处理了交叉点的节点畸变问题,而且解决了细化后直线的断线问题,成功地对断线进行了修补。从而使大容量图像条件下,高速、高品质矢量化转换得以有效实现。
本实验验证采用PC配置条件如下:Intel酷睿i3及以上处理器,8GB DDR3 1066内存,500GB以上硬盘、主板配有两个及以上PCI-E X1插槽。在VS2008上编程测试,目前整个软件基本达到实用价值。但实现更高速度和精度的矢量转换依然是我们的研究重点,接下来的工作将对每一步进行不断的改进,使之成为更加实用的矢量转换软件。
[1]Hyuck C,Garmire D,Demmel J,et al.Simple Fabrication Process for Self-Aligned High-Performance Microscanners-Demonstrated Use to Generate a 2-D Ablation Pattern[J].Microelectro mechanical Systems,2007,16(2):260-268.
[2]WANG Jin-he.A Topology Set Method for Vectorization[C]//Eighth ACIS International Conference on Software Engineering,2007:229-234.
[3]Tao Hu,Ya-nan Chen.Design of the linear array CCD acquisition system that line frequency and integration time adjustable[C]//2011 International Conference on Electronics and Optoelectronics (ICEOE),2011:253-256.
[4]Stache N C,Stollenwerk A,Gedicke J,et al.Automatic calibration of a scanner-based laser welding system[J].Journal of Laser Applications,2009(21):10-15.
[5]Ben-Ezra M.High resolution large format tile-scan camera:Design,calibration, and extended depth of field[C]//2010 IEEE International Conference on Computational Photography(ICCP),2011:1-8.
[6]WANG Jin-he.A Topology Set Method for Vectorization[C]//Eighth ACIS International Conference on,2007:229-234.
[7]Kopf J,Uyttendaele M,Deussen O,et al.Capturing and viewing gigapixel images[J].ACM Transactions on Graphics,2007,26(3):93.
[8]Kumpulainen T,Latokartano J,Vihinen J,et al.Scanner test pattern for evaluation of beam manipulation accuracy[C]//2011 IEEE International Symposium on Assembly and Manufacturing (ISAM),2011:1-5.
[9]Al-Khaffaf H S M,Talib A Z,Salam R A.Enhancing saltand-pepper noise removal in binary images of engineering drawing[J].IEICE Transactions on Information and Systems,2009, E92-D(4):689-704.
[10]ZHAO Hua,YUAN Wen-jun,WANG Zhi-jian.A new watermarking Scheme for CAD engineering drawings[C]//Computer-Aided Industrial Design and Conceptual Design,2008:518-522.
[11]ZHOU Chang-yin,NayarS K. Computationalcameras:convergence of optics and processing[J].Image Processing,2011,20(12):3322-3340.