电气原理草图语义理解系统开发
2016-11-17孔令滨张火明方贵盛
孔令滨,张火明,方贵盛,徐 敏
(1.中国计量学院 浙江省流量计量技术重点实验室,杭州 310018;2.浙江水利水电学院 机械与汽车工程学院,杭州 310018)
电气原理草图语义理解系统开发
孔令滨1,张火明1,方贵盛2,徐 敏1
(1.中国计量学院 浙江省流量计量技术重点实验室,杭州 310018;2.浙江水利水电学院 机械与汽车工程学院,杭州 310018)
针对目前市面上现有的手绘草图识别系统对用户的手绘习惯仍有较大限制的现状,提出了一种基于图元以及图元数量的单个电气元件的识别方法;系统使用MATLAB做为软件开发平台;首先通过在线采集的方式来获取手绘图每个笔画的始终点坐标以及每个笔画上所有的采样点的坐标,然后通过简单的平滑处理以及去重处理来降低因输入时的抖动噪音等因素对识别结果造成的影响;其次针对识别对象的结构特征相对稳定的特点,并且考虑到图库中所有的电气元件也都是由相同的几个基本图元组成的,实现了基于图元以及图元数量的单个电气元件的识别方法;实验结果表明,系统能够有效地减少用户在手动绘制时的限制,降低了因用户手绘习惯而造成的识别出错率;并且能够实现较高准确率的识别效果。
手绘电路图识别;计算机视觉;图元;电气元件符号
0 引言
在便携式硬件设备日益普及的今日,人们不再局限于通过鼠标键盘输入,基于笔触(或触屏)的人机交互被越来越多的用户接受[1]。手绘草图识别(sketch recognition)系统能够完成从笔迹空间到认知空间的映射,即在某个特定应用领域内赋予草图具体的语意表达,实现从用户手绘草图到计算机标准制图的转换。该研究在几何画图、物理教学、电路分析、力学教学等研究领域有极大的实际应用意义。
手绘草图存在信息模糊性和输入随意性两个缺陷。所以为了提高识别的成功率,现有的草图识别软件往往会对用户的手绘输入进行限制[2]:如要求用户在输入语义符号时单笔完成;或者要求用户在输入完一个语义符号后有一个明显的时间停顿;再或者只允许用户输入特定线元元素,这些限制使得用户在进行手绘输入时很不方便,极大的限制了用户的输入自由。此外,现有的草图识别软件的识别算法普遍的比较繁琐,导致软件的运行时间较长。因此,本系统主要从系统的识别方式以及识别算法上进行改进[3-4]。
本系统主要以35个常用电气元件的手绘识别为研究对象,深入研究目前草图识别与语义理解存在的若干关键问题:如手绘草图的意图捕捉问题;草图符号之间的分割与识别问题;电气元件符号与导线的区分问题;整幅草图的语意理解问题;以及草图或符号在识别出错时的修正问题等[5]。
本文所研究的内容可以为便携式设备提供一个实用的软件工具,在改进目前的草图识别系统的绘图性能、方便工程师设计思想的表达与交流、以及辅助课程教学,提高相关软件图形输入的自然性等方面具有重要的理论和实际意义。
1 当前国内外研究现状
当前,对手绘草图识别的研究工作可以总结为以下三个层面的内容:最基础的基本图元的识别、更进一步的相关符号的识别,以及最高层面的手绘草图的识别与电路草图的语义理解。其中最为成熟的仍是基于基本图元的草图识别。
在基层图元识别的研究中,孙建勇等人提出了一种使用引力模型来识别已输入的笔画的办法[6],直接将输入进去的笔划划分成简单基本的多边形、基本的折线以及基本弧线这三种不同类型。燕山大学的姚海浩在其硕士生论文中提出了一种通过判别、拟合、规整来完成基本的图元识别的分层识别方法[7],但识别流程较为繁琐。而西北工业大学的宋保华等人则实现了利用不同的识别器以识别单个笔划以及在上下文的基础之下来实现对于手绘草图的规整[8],但其最终的实验结果尚不明确,有待考究。
2 数据采集
通过鼠标拖拽来进行草图的绘制,以电阻元件为例,如图1所示。然后将所有的笔划以及每个笔划的所有点坐标以矩阵的形式保存于IXT.txt,IYT.txt中。
然后通过遍历这些X,Y坐标来获取那些每行只有一个数据的特征值,将所有的特征值对应的行号以单行矩阵式保存在数组stroke中。
图1 数据采集示例
以图2为例,第2行~第35行之间的所有值为第一个笔划的全部取样点坐标,然后是第36~第62行,以此类推。
图2 各笔划初始点行编号组
3 手绘草图识别中的语义理解
语义理解包括两个层面上的内容:对图形形状的分析以及针对不同专业领域的形象思维。第一个层面主要集中在用户在输入时对图形的预处理,同时为图形做标记分类;第二个层面则要运用领域语言对图形做出整体的推理和协调,而这一过程的实现是很有难度的,需要前期进行大量的准备工作以提高识别准确率。本文所研究的语义理解主要是指第一个层面的内容,即对图形形状的分析,具体包括对图形的预处理以及图形的标记分类两部分的内容。
3.1 图形的预处理
本文在对用户手绘输入的草图的预处理操作主要包括平滑处理和去重处理两部分,具体的处理方法如下。
3.1.1 平滑处理
众所周知,用户手绘的草图不可避免的存在“抖动”现象,这会给后续的识别操作带来很大的影响。因此,为了降低因“抖动”而造成识别出错的概率,必须在识别操作前进行平滑处理,以尽可能地消除“抖动”带来的影响。接下来将给出一种简单有效地平滑处理方法:
(1)
然后根据通过公式(1)计算所得到的新的坐标点用来代替原先的相应点坐标。
图3 手绘图形的抖动现象 图4 平滑处理的示意图
3.1.2 去重处理
由于在绘制过程中,用笔的粗细以及绘制时候的停顿会导致采样点中出现横纵坐标一致的两个或几个点[10]。这些点就是所谓的重点,它们对于识别并没有什么真正意义上的影响,所以我们将它们去除,由于算法过于简单,在此就不花篇幅去描述。
3.2 图形的标记与分类
本文对图形进行分类的主要依据是基于图元以及图元的数量。由于组成一个基本电器元件或者一张完整电路原理图的所有线元都可以分解成三种最基本的线元:直线、半圆以及圆。通过一定的拟合操作即可在识别系统中将所有的线元进行分类,从而达到对图形进行标记与分类的目的。具体的方法将在后续的线元识别部分中进行阐述。
4 手绘元件的线元识别
在数据采集和预处理之后,我们将得到很多的简单线元,我们需要对这些线元分别进行相应的拟合。组成一个电气元件符号乃至整张电原理图的所有线元大致只有三种最为基本的线元:直线、半圆以及圆。半圆和圆都是圆弧,故二者可以通过一种拟合方式处理。基本线元的拟合是草图识别的重要过程,下面对三种基本线元的拟合方法进行说明。
4.1 直线拟合
(1)一般斜率下的直线的最小二乘法拟合算法:
直线在进行最小二乘法拟合的时候,数学模型的复杂程度会极大程度上的受到拟合曲线的表达式的影响。在使用真实几何距离来进行最小二乘法拟合时,其数学模型以及曲线之间的各种约束和表达都是很复杂的[11-12]。但是直线拟合可以用代数的距离总和最小为目标函数的方式,相对应的直线表达式可写成如下形式:
ax-y+b=0
(2)
在这种表达式的情况下,若已知数据点的横纵坐标,则直线拟合的目标函数可表示成:
(3)
(4)
由此可计算得出参数a和参数b的值为:
(5)
此时参数a的表达式也可以改写成公式(6)中所示的等价的计算公式:
(6)
(7)
把式(7)中代入式(6)中即可得到参数a的最终表达式:
(8)
而当得到参数a的表达式后,参数b则可以根据公式(2)即直线的一般表达式来计算。
(2)当斜率为0,-1,1或者是不存在这四种特殊的斜率的最小二乘法拟合算法:
当拟合直线的斜率为0,-1,1或者不存在四种特殊情况时,拟合直线的表达式比较容易写出。此时,直线的目标拟合函数可根据最小二乘法原理得到,记为E。当导数dE/db取0时,此时参数b的取值视为最佳值。如表1所示。
表1 特殊斜率时的最小二乘法拟合算法
经过上面的步骤,即可得到直线的拟合算法,并能求出理想条件时的参数a和b。接下来,将每个笔划的所有坐标点分别以如图所示的行矩阵的形式保存在strokex,strokey中。再利用p=polyfit(strokex(1,:),strokey(1,:),1)来对该笔画进行直线拟合。
4.2 圆拟合
我们可以从圆的通用表达式入手:
x2+y2+a1x+a2y+a3=0
A=[sum(x) sum(y) n ; sum(xy) sum(yy) sum(y) ; sum(xx) sum(xy) sum(x)];
B=[-sum(xx+yy) ; -sum(xx.*y+yy.*y) ; -sum(xx.*x+xy.*y)]; R=sqrt((a1^2+a2^2)/4-a3);
(9)
式中,xx即为x的平方,yy即为y的平方,xy为x与y的乘积,R值即为半径[13]。
此时圆弧拟合基本上已经完成,只剩下区分圆曲线以及半圆曲线的问题:如果绘者的意图是画一个圆,那么笔画起始坐标与终点坐标应当是一个很相近的范围内。同时通过循环遍历这个笔划中的所有的横纵坐标来找到它的最小和最大的横纵坐标的差值之和求平均再与所求得的拟合圆的半径的两倍作比较,其误差如果在一定范围内就可认定为其是一个圆。另外,为了提高识别的准确率,我们可以采集到该笔划的所有点的坐标,做遍历,取出其中横坐标的最大最小值的差值的绝对值,暂且叫他chax,再取纵坐标的最大最小的差值的绝对值,取名chay,那么如果是圆,那么chax,chay不会相差很大。但如果是半圆的话chax,chay之间就应该存在着一个接近于两倍的关系。
4.3 半圆拟合
具体方法按公式(9)来求。由于半圆弧两端点连线的距离近似为拟合半径的两倍,而直线段也符合,故应考虑消除直线段的影响:先进行圆弧拟合,遍历该笔划上的所有点的坐标来取得最大的纵坐标以及最小的纵坐标值然后取他们的差值的绝对值。将其与拟合半径作比较,因为直线通过圆拟合得到的拟合半径很大,故该方法能区分出半圆和直线。
5 图形用户界面(GUI)设计
5.1 GUI设计
本文设计了一个简易的GUI界面,用来实现手绘草图的识别操作。该界面包含了3个button,6个axes,另外还有5个text。具体的GUI界面设计如图6所示。
图5 GUI设计图
图6 手绘熔断丝FU草图
该界面具体的排版是:axes1用于显示最终识别出来的元件,axes2~6用于显示与所绘制的草图相匹配的所有元件图。如果相匹配的只有两个,那么这五个axes只会按顺序的显示在前面两个axes内。而text1~text5则用于告诉用户这几个匹配出来的元件示意图所对应的相应编号以及之后选择时候选的相应文件名。axes1~axes6,text1~text5的visible属性全部设置为off。并在之后的识别函数fit.m里面选择性的利用句柄将其改为on。
5.2 button设计
1)输入button:点击输入button,调出手绘输入框。通过鼠标来绘制草图,保存。
2)识别button:保存好输入的图,点击识别按钮,调用后台拟合识别函数fit.m。系统会对其进行拟合匹配,匹配合适的图显示在GUI右侧,并标以相应的序号和名称。
3)选择button:完成上一步骤之后,记下相应的序号,点击选择按钮,并在test文件夹目录下点开相应序号的文件。将所选图形显示在主窗口中,供之后使用。
6 试验结果与分析
图形用户界面(GUI)设计完成后,通过观测手绘电气元件的识别效果以及识别成功率,来验证本文所述算法、系统软件是否能够满足设计的要求。
首先,以熔断丝FU和行程开关SQ为例,来验证本文所述系统的识别效果。在手绘草图输入界面绘制一个保险丝电气原理图,符号为FU。再点击识别button,发现在系统主窗口中能够正确的显示出之前手绘的元器件。
图7 熔断丝FU识别效果
同理,在手绘草图输入界面上绘制一个SQ行程开关,得到的识别效果如图8、图9所示。
图8 手绘行程开关SQ草图
图9 行程开关SQ识别效果
通过几组草图识别的效果来看,尽管手绘的电器元件草图并不是很规范,但是在本次设计的软件系统中还是能够准确的识别出来,系统识别效果能够实现预期的目标。
但是,在试验中,发现有些元器件并不是每次都能准确的识别出来,总结可能造成识别出错的原因如下:
1)在数据采集方面,由于系统并没有外接手绘板等设备,而只是通过鼠标拖动来进行绘制,这会使得系统并不能准确、完整的采集到用户绘制的每一个数据;
2)在算法设计方面,由于本文采用的是基于图元特征的识别方式,而所使用的算法并不能采集到绘制时的笔倾斜角度等数据,使得系统在识别时可能会忽略这些图元特征,导致识别出现错误;
3)在人机交互方面,由于不同用户的手绘习惯不同,并且有的用户在某些笔画的绘制时过于随意,这也会在一定程度上导致系统识别出现错误。
7 总结
本文对基于图像处理的手绘电路元件的识别技术进行了分析和研究,并研究了图像识别过程中的常用算法。在充分了解了手绘图的识别技术的基础上,以35个基本电气元件作为研究对象。采用了基于特征比对识别的识别方法,建立了一个简单的手绘电路元件识别系统。相较于以前的草图识别系统,本系统在以下几个方面有了较大的改进:
1)在图形的预处理方面,对用户手绘的草图进行了平滑处理和去重处理,降低了诸如“抖动”现象等可能对识别结果造成影响的概率;
2)在基本图元的识别方面,采用了一种自己定义的根据绘图的习惯来进行图元分类与识别的方法。在一定程度上提高了原来基础的图元拟合的识别准确率;
3)在基本电气元件识别方面,采用了系统识别加上人为主动辅助识别的方式,使系统具有一定的容错率。
尽管本文已能实现在一定准确率下的手绘草图识别功能,但仍面临在输入相对误差较大的情况下识别准确率偏低以及用户使用流程尚需简化两方面的问题,故还需作进一步的研究和改进。
[1] 罗新武.基于WDM的多功能鼠标和键盘驱动的设计与实现[D]. 广州市:中山大学, 2009.
[2] 张 斌,孙正兴,孙建勇,等. 在线草图识别中用户手绘习惯建模方法[J]. 计算机科学, 2004, 31(6):194-198.
[3] 尹建峰,孙正兴,邱庆华,等. 基于笔序的手绘草图识别方法[J]. 计算机科学, 2005, 32(1):198-201.
[4] 吴孔银,王立涛,汪洪峰,等. 手绘草图识别技术及其建模方法研究[J]. 成组技术与生产现代化, 2007, 24(4):25-29.
[5] 孙正兴,邱庆华,张莉莎,等. 在线手绘草图识别的相关问题研究[C].第一届中国情感计算及智能交互学术会议论文集, 2003.
[6] 孙建勇,金翔宇,彭彬彬,等. 一种快速在线图形识别与规整化方法[J]. 计算机科学, 2003, 30(2): 172-176.
[7] 姚海浩. 基本符号组成的手绘电路图识别研究[D]. 燕山大学, 2012.
[8] 宋保华,叶 军,于明玖,等. 笔输入草图的分层识别[J]. 计算机辅助设计与图形学学报, 2004, 16(6): 753-758.
[9] 孙苗钟. 基于MATLAB的振动信号平滑处理方法[J]. 电子测量技术, 2007, 30(6):55-57.
[10] 孔素然. 基于模糊匹配思想的网页去重算法[D]. 上海:复旦大学, 2006.
[11] 宋秀勇. 实验数据的直线拟合[J]. 中国石油大学学报:自然科学版, 1994, (5):130-134.
[12] 党兴菊,吴文良. 最小二乘法拟合直线公式的初等推导[J]. 重庆科技学院学报:自然科学版, 2010, 12(4):185-187.
[13] 刘元朋,张定华,桂元坤,等.用带约束的最小二乘法拟合平面圆曲线[J]. 计算机辅助设计与图形学学报, 2004, 16(10):1382-1385.
Development of the Semantic Understanding System of the Electric Principle Sketch
Kong Lingbin1,Zhang Huoming1,Fang Guisheng2,Xu Min1
(1.Zhejiang Provincial Key Laboratory of Flow Measurement Technology, China Jiliang University,Hangzhou 310018, China; 2.Mechanical and Automotive Engineering College, Zhejiang Water Conservancy and Hydropower College, Hangzhou 310018, China)
At present, there are still some limitations on the existing hand drawn sketch recognition systems. We presented a recognition method of a single electrical components based on primitives and the number of primitives. The system uses MATLAB as software platform. Firstly, we get the coordinates of each stroke of the hand drawn map and the coordinate of the sampling points on each stroke. Then, we reduce the influence of the noise by simple smoothing and repeat removing processes. In addition, our recognition object's structure features are relatively stable, and all electrical components are consisting of a single or some primitives. So we realized the recognition method based on primitives and the number of primitives. Experimental results show that the system can effectively reduce the limitations of users , and reduce the identification error rate. In addition, this system can achieve a higher accuracy of recognition results.
hand draw circuit diagram recognition; computer vision; primitives; electrical components symbols
2015-08-18;
2015-11-04。
浙江省自然科学基金项目(Y14E090034, Y13F020140),浙江省青年科学家培养计划项目(2013R60G7160040),国家自然科学基金资助项目(51379198)。
孔令滨(1992-),男,硕士,主要从事流体检测与仿真技术方向的研究。
方贵盛(1973-),男,博士,教授,主要从事草绘设计及CAD技术方向的研究。
1671-4598(2016)06-0206-04
10.16526/j.cnki.11-4762/tp.2016.06.057
TP391
A