一种识别几何图形的方法

文档序号:6333107阅读:883来源:国知局
专利名称:一种识别几何图形的方法
技术领域
本发明涉及草图系统中对手绘的几何图形进行识别的方法。
技术背景
手绘几何图形的识别技术,在一些草图系统(如教育软件系统)中能起到很好的 辅助作用。该技术借助鼠标等输入工具,利用计算机进行绘图;然后对一些粗糙的几何图形 进行识别重画出标准的几何图形。目前,手绘几何图形的研究及识别的方法主要有以下几 类
(1)、统计方法,基于圆锥曲线方法的线性最下平方匹配法,能实时分类手绘笔画, 识别直线、椭圆弧和圆角;
O)、模糊推理方法,用模糊逻辑和模糊知识,从草图的位置、方向、速度和加速度 捕获绘图者的意图,实现草图识别;
(3)、几何方法,把手绘草图做为整体进行识别,需要进行平滑处理、提取圆弧、识 别节点、分解出直线段;
0)、神经网络方法,通过提取图素几何形状的内角特征,用二进制突触的权重算 法BSW进行识别的方法;
(5)、关键点查找方法,如在中国发明专利申请CN101393648A所公开的识别方法。
以上几种方法均勻一个共同的缺陷对几何图形进行识别的准确率都不是很高, 从而使讲解及演示的效率受到了一定的局限。发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种识别几何图形的方法, 解决了现有技术中几何图形识别的准确率偏低的问题。
本发明采用以下技术方案实现上述目的本识别几何图形的方法,包括以下步 骤
Si、获取鼠标移动过程中的点数据,并用数组m_p01dPOintS保存;
S2、进行点过滤,把过滤后的点放入数组m_pNewPoints中;
S3、对数组n^pNewPoints中的任意2点进行距离计算,然后找出距离最长的2点, 计算该距离最长的2点的连线与水平线的角度,计算几何图形的外围矩形;
S4、分析数组!10)彻补011^8内所有相邻两点连线之间的夹角,统计并保存角度在 0-140度之间的夹角个数;
S5、选取关键点,并保存到关键点数组nupKeyPoints中;
S6、根据步骤S5所选取的关键点个数及步骤S4所统计的夹角个数判断几何图形 的类型;
S7、根据步骤S6所判断的几何图形类型,以及步骤S3所得到的距离最长的2点的 连线与水平线的角度重画几何图形。
所述步骤S3包括如下步骤
S31、根据数组n^pNewPoints查找任意2点之间距离最长的2个点;
S32、计算距离最长的2个点的连线与水平线的夹角m ;
S33、根据数组!10)彻补0^^8计算出几何图形的外围矩形,然后通过查找所述外 围矩形的四个顶点确定外围矩形。
步骤S33所述确定外围矩形,包括如下步骤
S331、对数组n^pNewPoints里所有点横坐标进行标记及对比,选出横坐标最大的 点的值xl以及横坐标最小的点的值x2 ;
S332、对数组n^pNewPoints里所有点纵坐标进行标记及对比,选出纵坐标最大的 点的值yl以及纵坐标最小的点的值y2 ;
S333、根据步骤S331、S332所选出的值确定四个坐标点(xl, yl) (xl, y2) (x2, yl) (x2, y2),将所述四个坐标点连接组成外围矩形。
步骤S4包括以下步骤
S41、求数组n^pNewPoints内所有相邻两点连线之间的夹角并保存在数组m_ ρAngle 中;
S42、若数组m_pAngle中保存的夹角大于165度,则形成该夹角的两条相邻两点 连线所包含的相邻三个点之间的关系为“直线”;若数组110^叫16中保存的夹角小于140 度,则形成该夹角的两条相邻两点连线所包含的相邻三个点之间的关系为“角”;若数组m_ PAngle中保存的夹角大于140度且小于165度,则形成该夹角的两条相邻两点连线所包含 的相邻三个点之间的关系为“弧”;
S43、根据步骤S42,统计数组m_pAngl e中所有相邻三点之间的关系,把关系 为“角”、“直线”、“弧”的个数分别保存在数组m_NumClampS、数组m_NumLines和数组m_ NumRadians 中。
步骤S6包括以下步骤
1)、首先判断关键点有几个若是2个关键点的情况,则转入步骤2);若是3个关 键点的情况,则转入步骤幻;若是4个关键点的情况,则转入步骤4);若是大于4个关键点 的情况,则转入步骤5);
2)、直接连接2点画直线;
3)、直接连接3点画三角形;
4)、判断关键点间的夹角,把夹角大于155角的关键点过滤;若有关键点被过滤 掉,则转入步骤幻;若无关键点被滤掉,则根据步骤S42所统计的相邻三个点之间的“角”、 “弧”和“直线”关系的个数和大于20-28中的任一数值,并且数组m_NumClampS < = 1判 断是否是圆;若判断是圆则判断外围矩形是否为正方形,如果外围矩形为矩形则几何图形 为椭圆,通过外围矩形的大小、距离最长的2个点的连线与水平线的夹角m、以距离最长的 2个点为椭圆的中心轴来画椭圆,如果外围矩形为正方形则几何图形为圆,并以正方形的宽 为圆的半径画圆;若判断不是圆,如果4条边中相对的2条边相互平行,且相对的2条边的 长度相差在20个像素范围之内,则为平行四边形,如果任意其中一边水平或者垂直则为矩 形,如果没有边垂直或者水平,且4条边长度相差在20个像素范围之内,则为普通四边形;
5)、计算“直线”和“弧”占的比例;如果关系为“角”、“直线”、“弧”的个数大于20并且“直线”占的比例大于0. 5,则判断为多边形;若是多边形,当关键点间的夹角大于155 度时,滤去该关键点,然后判断关键点数目是否仍大于4个,若不大于4个则转入步骤4),若 大于4个则直接连接为多边形;若不是多边形,则判断外围矩形为矩形还是正方形,如果外 围矩形为矩形则几何图形为椭圆,通过外围矩形的大小、距离最长的2个点的连线与水平 线的夹角m、以距离最长的2个点为椭圆的中心轴来画椭圆,如果外围矩形为正方形则几何 图形为圆,并以正方形的宽为圆的半径画圆。
相对于现有技术,本发明具有如下优点及有益效果
在屏幕上画几何图形的时候,通过不断的采集鼠标移动的点,进行相关分析,得到 符合要求的特征点,在完成几何图形的绘画后,通过对特征点的分析计算,擦除原来手绘的 草图,重画出标准的几何图形。本发明基于中国发明专利申请CN200810198994. 7上的改 进,利用了该专利申请CN200810198994. 7上的获取关键点的部分技术特征,将几何图形识 别准确率从60%提高到90%以上。


图1是本发明的流程图2是点过滤过程示意图3是找任意2点之间距离最长的2个点的示意图4是外围矩形确定过程示意图5是通过统计数组m_pAngle内夹角来判断几何图形的示意图6为选取特征点时的采样曲线示意图7是根据关键点识别几何形状的过程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限 于此。
实施例
本发明为一种识别几何图形的方法,其实施过程如图1所示,具体包括以下步骤
1、获取鼠标移动过程中的点数据。即从鼠标按下后开始到鼠标抬起,保存鼠标移 动过程中系统发送过来的点数据,用数组m_p01dPOintS保存。
2、进行点过滤,把过滤后的点放入数组!10^冊 011^8中。即过滤比较密集的点, 以提高计算效率,具体为计算数组110)01(^011^8内相邻2点之间的距离,距离小于3-12 个像素(优选地,小于6个像素)时抛弃后面的点,把符合的点放入数组nupNewPoints中, 即将相距3-12个像素(优选地,相距6个像素)的点放入数组n^pNewPoints中。
如图2所示,当A、B的之间的距离小于3-12个像素(优选地,小于6个像素)时, B点被抛弃;系统继续判断A与C的距离是否小于3-12个像素(优选地,小于6个像素), 若是,抛弃C,否则保留C并将C放入数组nupNewPoints中;接着C又判断与D的距离是否 小于3-12个像素(优选地,小于6个像素),若是,抛弃D,否则保留D并将D放入数组m_ pNewPoints 中。
3、对数组n^pNewPoints中的任意2点进行距离计算,然后找出距离最长的2点,计算距离最长的2点的连线与水平线的角度,计算几何图形的外围矩形。本步骤包括以下 分步骤
31、根据数组!10)彻补01壯8查找任意2点之间距离最长的2个点,如图3所示的A 点和F点。本分步骤具体为开始计算A点分别与B、C、D、E、F点之间的距离,获取最长距 离为AF,保存A点和F点,继续计算B点分别与A、C、D、E、F点之间的距离,获取最长距离为 BF,然后对比BF与AF,由于AF大于BF,因此保留AF ;同理,继续往下计算到F点,得到最长 距离的两点为A点和F点。
32、计算距离最长的2个点的连线与水平线的夹角m,即连接A、F两个点形成直 线L,计算直线L与水平线的夹角m。
33、根据数组!10)彻补01壯8计算出几何图形的外围矩形,然后通过查找所述外围 矩形的四个顶点确定外围矩形。如图4所示,确定外围矩形的方法,包括以下步骤
331、对数组n^pNewPoints里所有点横坐标进行标记及对比,选出横坐标最大的 点的值xl以及横坐标最小的点的值x2 ;
332、对数组n^pNewPoints里所有点纵坐标进行标记及对比,选出纵坐标最大的 点的值yl以及纵坐标最小的点的值y2 ;
333、根据步骤331、332所选出的值确定四个坐标点(xl,yl) (xl,y2) (x2,yl) (x2, y2),将所述四个坐标点连接组成外围矩形。
4、分析数组!10^冊 011^8内所有相邻两点连线之间的夹角,统计并保存角度在 0-140度之间的夹角个数。本步骤包括以下分步骤
41、求数组n^pNewPoints内所有相邻两点连线之间的夹角并保存在数组m_ ρAngle 中。
42、统计数组!10^叫16内小于一定范围值并大于一定范围值的夹角,用来后续判 断几何图形。本分步骤具体为
421、判断数组!10^叫16中保存的夹角在哪个范围,根据判断结果来判断相邻三 个点之间的关系,所述相邻三个点之间的关系主要分为三种角、直线、弧。如图5中相邻三 个点A、B、C,相邻两点连线形成的夹角为a、b。就以a为例,如果a大于pl(pl范围为165 度到180度之间)则A、B、C三个点在一条直线上,即相邻三个点A、B、C之间的关系为“直 线”;如果a小于p2 (p2范围为0度到140度之间)则相邻三个点A、B、C之间形成“角”关 系;如果a大于p2且小于pl,则相邻三个点A、B、C之间形成“弧”关系。
422、根据步骤421,统计数组m_pAngle中所有相邻三点之间的关系,把关系 为“角”、“直线”、“弧”的个数分别保存在数组m_NumClampS、数组m_NumLines和数组m_ NumRadians中,以供后续进行判断使用。
5、选取关键点,并保存到关键点数组nupKeyPoints中。选取关键点方法如下(引 用了专利申请CN200810198994. 7中获取关键点的部分技术特征)
在鼠标弹起时就开始进行关键点的选取,其分析原理参见图6所示的采样曲线, 将第一个和最后一个采样点连成的线段用ab标记,计算出曲线中的点离线段ab最远的采 样点即为此曲线的一个折点,也即关键点,用c来标记,这样就得到了 2条新的线段ac和 cb ;再通过计算对应采样曲线上的采样点到这两条线段的距离来得到新的采样点。重复上 述步骤,就能把所有的关键点找出来。
需要注意的是,选取出的关键点应该分别在一个范围内,否则到最后就把采样曲线上所有采样点取出来了,没有任何意义。本发明中给出一个设定值,当采样曲线上的采样点到线段的距离大于该设定值时,才作为关键点取出,否则就不处理该采样点。本实施例中,这个设定值可以是整个曲线段的高或者宽的一个比例值,所述比例值的范围在由步骤3l计算出的最长距离AF长度的l/8到l之间,优先选择AF长度的l/6;设定为比例值也是为了适应不同大小的手绘图形的识别需要。
具体分析过程中使用如下的递归函数计算,由于取出的关键点的顺序对于识别非常重要,故需要考虑关键点的顺序问题,所以函数需要这样描述
Cr。SS(int left,int right)
{
.........Ioo.70]Cr。SS(1eff,tmp);I007]]m p。intCr。SS.puSh baCk(maXP。int) ;Ioo.72]Cr。SS(tmp,right);Ioo.73] }I0074] 其中参数left,right均为p。intS VeC中采样点的索引,C。rSS的具体计算描述如下Ioo.75] 首先检查p。intS VeC[1eft],p。intS VeC[right]之间是否还有采样点,如果没有采样点,就没有找关键点的必要,返回;否则就计算出采样点中距p。intS VeC[1eft],p。intS VeC[right]连成的线段距离最大并且满足距离大于设定值的采样点,记下该采样点的索引,并用变量tmp保存。然后计算Cr。SS(1eft,tmp),保存该点m—p。intCr。SS.puSn—baCk(maXP。int),向量m—p。intCr。SS保存的就是所选取的关键点。再计算Cr。SS(tmp,right)。这个顺序就保证了关键点是按顺序存储的。Ioo.76] 在本步骤中,对关键点的选取主要是计算出该点到线段的距离,然后和步骤5所述的设定值比较,大于就留下,否则就继续。步骤5所述设定值直接影响到识别的准确度,因为设定值越小关键点取的越多,很多应该忽略的关键点就保存了,这样很多应该识别的图形就无法识别,取出的关键点太少也就会在图形的区分上出现问题。例如将平行四边形识别成椭圆等。I0077] 6、根据步骤5所选取的关键点个数及步骤4所统计的夹角个数判断几何图形的类型。如图7所示,本步骤具体包括以下分步骤Ioo.78] 1)、首先判断关键点有几个若是2个关键点的情况,则转入步骤2);若是3个关键点的情况,则转入步骤3);若是4个关键点的情况,则转入步骤4);若是大于4个关键点的情况,则转入步骤5)。Ioo.79] 2)、直线,直接连接2点画直线。i-0080] 3)、三角形,直接连接3点画三角形。i-008、] 4)、判断关键点间的夹角,把夹角大于一定角度范围(该角度范围为155度到175度之间选择一个)的关键点过滤;若有关键点被过滤掉,则转入步骤3);若无关键点被滤掉,则根据步骤42所统计的“角”、“弧”和“直线”关系的个数和大于20一28中的任一数值,并且m—NumClampS<一l判断是否是圆,符合这些条件为圆,否则不是;若判断是圆则判断外围矩形是否为正方形(通过判断外围矩形长和宽是否接近相等,长和宽相差在10个像素 范围内),如果外围矩形为矩形则几何图形为椭圆,通过外围矩形的大小、AF两点连线与水 平线的夹角为m、以A、F两点椭圆的中心轴来画椭圆,如果外围矩形接近于正方形则几何图 形为圆,并以正方形的宽为圆的半径画圆;若判断不是圆,如果4条边中相对的2条边相互 平行,且相对的2条边的长度相差不大(相差在20个像素范围之内),则为平行四边形,在 上面的情况下,如果任意其中一边水平(该边与水平方向误差在0到10度之间或者170到 180度之间)或者垂直(该边与水平方向误差在80到90度之间)则为矩形,如果没有边垂 直或者水平,且4条边长度差距不大则为菱形(相差在20个像素范围之内),则为普通四边 形。
5)、计算“直线”和“弧”占的比例
直线占的比例为
LineProbability = m_NumLines/float(m_NumLines+m_NumRadians);
弧占的比例为
RadianProbability = m_NumRadians/fIoat (m_NumLines+m_NumRadians);其中, m_NumLines为“直线”的个数,m_NumRadians为“角”的个数,m_NumClamps为“弧”的个数。
如果根据步骤42所统计的“角”、“弧”和“直线”关系的个数和(m_NumLineS+m_ NumRadians+m_NumClamps)大于 20- 中的任一数值,并且 LineProbability 大于一定的值 (范围可以选在0. 5到0. 7之间),则判断为多边形,否则不是;若是多边形,当关键点间的 夹角大于指定角度(该角度范围为1阳度到175度之间)时,滤去该关键点,然后判断关 键点数目是否仍大于4个,若不大于4个则转入步骤4),若大于4个则直接连接为多边形; 若不是多边形,则判断外围矩形为矩形还是正方形(正方形通过判断矩形长和宽是否接近 相等,长和宽相差是否在10个像素范围内来判断),如果外围矩形为矩形则几何图形为椭 圆,通过外围矩形的大小、AF两点连线与水平线的夹角m、以A、F两点为椭圆的中心轴来画 椭圆,如果外围矩形接近于正方形则几何图形为圆,并以正方形的宽为圆的半径画圆。
7、根据步骤6所判断的几何图形类型,以及步骤3所得到的距离最长的2点的连 线与水平线的角度重画几何图形。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的 限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化, 均应为等效的置换方式,都包含在本发明的保护范围之内。
权利要求
1.一种识别几何图形的方法,其特征在于,包括以下步骤s1、获取鼠标移动过程中的点数据,并用数组m_p01dPOintS保存;s2、进行点过滤,把过滤后的点放入数组!10)彻补01壯8中;s3、对数组n^pNewPoints中的任意2点进行距离计算,然后找出距离最长的2点,计算 该距离最长的2点的连线与水平线的角度,计算几何图形的外围矩形;s4、分析数组!10)彻补0^^8内所有相邻两点连线之间的夹角,统计并保存角度在 0-140度之间的夹角个数;s5、选取关键点,并保存到关键点数组nupKeyPoints中;s6、根据步骤S5所选取的关键点个数及步骤S4所统计的夹角个数判断几何图形的类型;s7、根据步骤S6所判断的几何图形类型,以及步骤S3所得到的距离最长的2点的连线 与水平线的角度重画几何图形。
2.根据权利要求1所述的识别几何图形的方法,其特征在于,所述步骤S2为计算数 组110)01(^0丨1^8内相邻2点之间的距离,将相距3-12个像素的点放入数组nupNewPoints 中。
3.根据权利要求2所述的识别几何图形的方法,其特征在于,将相距6个像素的点放入 数组 m_pNewPoints 中。
4.根据权利要求1所述的识别几何图形的方法,其特征在于,所述步骤S3包括如下步骤s31、根据数组n^pNewPoints查找任意2点之间距离最长的2个点;s32、计算距离最长的2个点的连线与水平线的夹角m;s33、根据数组!10)彻补0^1^计算出几何图形的外围矩形,然后通过查找所述外围矩 形的四个顶点确定外围矩形。
5.根据权利要求4所述的识别几何图形的方法,其特征在于,步骤S33所述确定外围矩 形,包括如下步骤s331、对数组n^pNewPoints里所有点横坐标进行标记及对比,选出横坐标最大的点的 值Xl以及横坐标最小的点的值x2 ;s332、对数组m_pNeWP0ints里所有点纵坐标进行标记及对比,选出纵坐标最大的点的 值yl以及纵坐标最小的点的值y2 ;s333、根据步骤S331、S332所选出的值确定四个坐标点(xl,yl) (xl, y2) (x2, yl) (x2, y2),将所述四个坐标点连接组成外围矩形。
6.根据权利要求1所述的识别几何图形的方法,其特征在于,步骤S4包括以下步骤s41、求数组n^pNewPoints内所有相邻两点连线之间的夹角并保存在数组m_pAngle中;s42、若数组m_pAngle中保存的夹角大于165度,则形成该夹角的两条相邻两点连线所 包含的相邻三个点之间的关系为“直线”;若数组110^叫16中保存的夹角小于140度,则形 成该夹角的两条相邻两点连线所包含的相邻三个点之间的关系为“角”;若数组m_pAngle中 保存的夹角大于140度且小于165度,则形成该夹角的两条相邻两点连线所包含的相邻三 个点之间的关系为“弧”;S43、根据步骤S42,统计数组!10^叫16中所有相邻三点之间的关系,把关系为“角”、 “直线”、“弧”的个数分别保存在数组m_NumClamps、数组m_NumLines和数组m_NumRadians中。
7.根据权利要求6所述的识别几何图形的方法,其特征在于,步骤S6包括以下步骤1)、首先判断关键点有几个若是2个关键点的情况,则转入步骤幻;若是3个关键点 的情况,则转入步骤幻;若是4个关键点的情况,则转入步骤4);若是大于4个关键点的情 况,则转入步骤5);2)、直接连接2点画直线;3)、直接连接3点画三角形;4)、判断关键点间的夹角,把夹角大于155角的关键点过滤;若有关键点被过滤掉,则 转入步骤幻;若无关键点被滤掉,则根据步骤S42所统计的相邻三个点之间的“角”、“弧”和 “直线”关系的个数和大于20-28中的任一数值,并且数组m_NUmClampS <= 1判断是否是 圆;若判断是圆则判断外围矩形是否为正方形,如果外围矩形为矩形则几何图形为椭圆,通 过外围矩形的大小、距离最长的2个点的连线与水平线的夹角m、以距离最长的2个点为椭 圆的中心轴来画椭圆,如果外围矩形为正方形则几何图形为圆,并以正方形的宽为圆的半 径画圆;若判断不是圆,如果4条边中相对的2条边相互平行,且相对的2条边的长度相差 在20个像素范围之内,则为平行四边形,如果任意其中一边水平或者垂直则为矩形,如果 没有边垂直或者水平,且4条边长度相差在20个像素范围之内,则为普通四边形;5)、计算“直线”和“弧”占的比例;如果关系为“角”、“直线”、“弧”的个数大于20并且 “直线”占的比例大于0. 5,则判断为多边形;若是多边形,当关键点间的夹角大于155度时, 滤去该关键点,然后判断关键点数目是否仍大于4个,若不大于4个则转入步骤4),若大于 4个则直接连接为多边形;若不是多边形,则判断外围矩形为矩形还是正方形,如果外围矩 形为矩形则几何图形为椭圆,通过外围矩形的大小、距离最长的2个点的连线与水平线的 夹角m、以距离最长的2个点为椭圆的中心轴来画椭圆,如果外围矩形为正方形则几何图形 为圆,并以正方形的宽为圆的半径画圆。
全文摘要
本发明公开了一种识别几何图形的方法,解决了现有技术中几何图形识别的准确率偏低的问题,包括步骤获取鼠标移动过程中的点数据,并用数组m_pOldPoints保存;进行点过滤,把过滤后的点放入数组m_pNewPoints中,并对任意2点进行距离计算,找出距离最长的2点,计算该2点连线与水平线的角度、几何图形的外围矩形;分析数组m_pNewPoints内所有相邻两点连线之间的夹角,统计并保存角度在0-140度之间的夹角个数;选取关键点并保存到数组m_pKeyPoints中;根据关键点个数及夹角个数判断几何图形的类型;根据所判断的几何图形类型及距离最长2点的连线与水平线的角度重画几何图形。
文档编号G06T11/80GK102034254SQ201010298870
公开日2011年4月27日 申请日期2010年9月29日 优先权日2010年9月29日
发明者陈先志 申请人:广东威创视讯科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1