精华内容
下载资源
问答
  • 2021-10-24 20:39:25

              本文所讲的内容已经开源,你可以在 这里 找到源代码。 


            一些工具软件有手绘图形功能,手画一个三角形、平行四边形,虽然画的歪歪扭扭,但是工具内部能够自动转换为数字化的几何图形。

            然而,这部分功能很少有开源代码,网上也找不到相关的算法说明,所以只能自己尝试实现。但是几个月来,一直没有一个完整的思路。

            前几天,突然发现 OpenCV 的一个函数 approxPolyDP,它能将一个曲线,转换为一个多边形(近似拟合)。

            其中的原理也很简单,就是计算所有点到起点、终点连线的距离,如果最大值超过一个设定值,就以最大值对应的点分割曲线,然后分别在两段曲线中递归上述算法;如果最大值不超过设定值,那么上述连线就是结果多边形的一部分。

            有了上面这个算法工具,实现手绘图形识别的思路,就豁然开朗了。

    关键思路

            如果输入是一张图片,那么需要先二值化(cv2.threshold),然后寻找轮廓(cv2.findContours),得到一个曲线(离散点)。

            如果是实时手绘(画笔),那么就是收集到一系列坐标点。

            将上面的一系列坐标点,用 approxPolyDP 近似为一个多边形。

            判断多边形首位是否相接,必须相接才能继续。

            根据多边形的边数,可以确定作为结果的几何图形是三角形、四边形,五边形 .......,如果边数 >=8,一般就可以认为是圆形(椭圆)了。

    算法细节

            关于 approxPolyDP  的设定距离阈值,可以用曲线长度的 1% 作为经验值。不同比例值的实验的效果是:

            1%:手绘时需要比较认真,手必须稳定,算法的抗抖动性不强

            2%:比较适中,绘图时可以稍微随意些,但是绘制圆形要小心,不是太圆的话,可能处理后的多边形会少于 8 条边

            3%:明明画的弯弯的也变成直边了

    特殊几何图形识别

            识别出一些特殊的图形,比如直角三角形,长方形等等,而不是普通的三角形、四边形。

            识别这些特殊图形,主要依赖各条边的长度,各个顶角的度数。

    特殊三角形

    • 等边三角形

            三条边相等,近似条件,边长两两之间的比例(短的:长的)都大于 0.9

    • 等腰三角形

            边长两两之间的比例,有一个超过 0.9

    • 等腰直角三角形

            边长两两之间的比例,有一个超过 0.9,且两边的夹角的 cos 值小于 0.15(大于 81°)

    • 直接三角形

            有一个顶角的 cos 值小于 0.15(81°)

    特殊四边形

    • 平行四边形

            两条对边都平行,方向矢量的夹角 cos 小于 -0.95 (反方向小于 11°)

    • 长方形

            在平行四边形的基础上,四个顶角中 cos值最大的一个小于 0.15(大于 81°)

    • 正方形

            在长方形的基础上,一个相对边的长度和与另一个对边的长度和的比例大于 0.9

    • 菱形

              在平行四边形的基础上,两个相邻边的长度比例大于 0.9

    • 梯形

            有一个对边平行,方向矢量的夹角 cos 小于 -0.95 (反方向小于 11°)

    • 直角梯形

            在梯形的基础上,四个顶角中 cos 值最小的一个小于 0.1(大于 84°),且与另一个平行线的夹角的 cos 值也小于 0.1(大于 84°)

    • 等腰梯形

            在梯形的基础上,非平行的一对边的边长比例大于 0.9

    特殊多边形

            边数大于等于 5,小于8,正多边形。一般手绘只能绘制五条边,但是这里面有一个特殊的:那就是五角星。

            判断是正多边形,可以用里面两个条件:

    • 最小边长与最大边长的比例大于 0.7
    • 最小夹角与最大的差小于 20°

            另外,正多边形有不同 Span 的区别,比如五角星是正五边形(Span = 2)。怎么计算 Span 呢?

    • 先计算中心点,即所有点的平均值
    • 计算所有以中心点为顶点,中心点到两个相邻点为边的角的角度
    • 角度的和是 360° 的多少倍,Span 就是多少

    椭圆(圆形)

            椭圆需要计算出中心点和长短轴的长度。用下面的方法(如下图):

    •  取任意边作为投影轴(它的垂线作为另一个投影轴)
    • 计算所有顶点在投影轴的位置,位置范围形成一个包围长方形
    • 长方形的长短边长即椭圆的长短轴的长度
    • 长方形的中心点就是椭圆的中心点
    • 取所有边作为投影轴时,长短轴的长度比最大的

            如果椭圆的长短轴的长度的比例大于 0.8,就作为圆处理,圆的半径是长短轴的长度的平均值。

            

    更多相关内容
  • 图形识别代码,可以识别多种颜色与形状,还可以计算面积与周长,形状包括三角形,正方形,长方形,梯形,平行四边形,菱形,其他四边形,五边形,五角星,六边形和其他多边形,椭圆,圆等,颜色包括蓝色,紫色,红色...
  • GUI实现简单图形识别.7z
  • 针对目前主要的形状识别算法大都存在计算量大、处理时间长、识别图形单一或需事先设定模板等缺点,提出了一种基于边缘像素点特征值的几何图形快速识别算法。该算法依据多边形顶点与其他边缘像素点特征值变化规律,...
  • 图形识别算法

    2016-03-29 16:25:51
    图形识别算法,其中包含每一步的细节运算以及演示。
  • 前段时间下载了一个字符图形识别的程序 http://download.csdn.net/detail/lndzh/2424224#comment 后来发现程序中集成了一个名为xpidea.neuro.net.dll的组件,无法看到算法内核, 网上抄了一个BP神经网络算法改写了...
  • 通过对大量岩样铸体薄片的图形特征反复观察与实验,设计了一种储层微观孔喉网络图形识别方法。该方法的关键是将原图片由RGB彩色空间转换到受亮度影响很小的YUV空间下,使待识别岩样孔喉网络产生很好的类聚,然后采用...
  • 行业文档-设计装置-图形识别用教具.zip
  • 联机几何图形识别, 实验中联合了3 种分类器, 每种分类器的机制各不相同, 并且都基于不同的模式 特征。将该分类器联合方法与现有的几种联合方法进行实验比较, 实验结果表明该方法具有较高的识别 率。</p>
  • 手绘几何图形识别(上)

    千次阅读 2019-10-06 09:55:10
    绘图工具中,需要在大量菜单,选项中选择所绘的图形,操作较为繁琐,在对手绘几何图形识别的过程中,通过计算机图形学,模式识别,人工智能,完成识别,重绘的过程,再完善人机交互的体验。 一.手绘几何图形介绍 ...

     

    手绘几何图形具有的特点是,随意、简单、可以迅速的表达设计师对产品的设想,有利于捕捉生活中得到的一些灵感。绘图工具中,需要在大量菜单,选项中选择所绘的图形,操作较为繁琐,在对手绘几何图形识别的过程中,通过计算机图形学,模式识别,人工智能,完成识别,重绘的过程,再完善人机交互的体验。

     

    一.手绘几何图形介绍

    手绘图识别分为联机和脱机两种

    脱机:通过特定的采集设备如摄像机、扫描仪将图形以图像的形式,采集并输入到计算机。

    联机:通过连接输入设备,如手写板,触摸屏,鼠标将笔的运动轨迹识别发送到计算机。

     

    识别方法不同:

    脱机:通常脱机识别的数据是用f(xi,yi)来描述,其中(xi,yi)为坐标(i,j)处的灰度值,所以在识别过程中,我们要对数据进行降噪,二值化等预处理;

    联机:联机识别中,获得的是一组二维数据,用来存放笔迹点的坐标,还可以存放笔的移动速度,加速度,笔压等信息,这些信息可以整合成多维的点的序列,比脱机识别更有优势。

     

    手绘几何图形识别和手写文字识别比较

    同属于模式识别和计算机视觉研究领域的分支。

    文字识别:将输入数据识别转化成词句,并显示出来。有固定的字符集合。对每个特定字符进行特征分析,在对整个字符集的整体特征进行分析,文字识别笔画形态相对简单,书写需要有严格的规范,便于建立鲁棒(Robust)的分类器。

    手绘几何图形识别:没有特定的字符集,笔画随意,特征不明显,但是图形具有很多几何特征,方向、尺寸、连接、交叉,这些几何特征可以在识别图形中进行判定。

     

     二.手绘图识别的研究方法

    手绘图识别主要的几类研究方法:

    模糊类方法:

    利用模糊逻辑,模糊知识,从笔迹的位置,方向,速度,加速度,来识别图形。

     

    几何方法:

    把图形作为整体识别,进行平滑处理,提取圆弧段,识别结点,分解出直线段,根据相邻3点的夹角角度作为圆弧和直线段的提取特征,找出实验阈值,进行分类。

     

    神经网类方法:

    通过提取图素几何形状的内角特征,用二进制突触的权重算法BSW(含一个隐层的前馈网)进行识别的方法。该方法以整体方式识别三角形、椭圆和矩形三种图素,但仅适用于绘图包和掌上电脑的自动草绘输入。

     

    图元分类:

    图元是组成图形的最小单元,其无法再被分割成其他几何线条。

    我们把基本的图元分为:直线,圆,圆弧,椭圆,椭圆弧。

     

    预处理:

    数据采集之后需要经过预处理操作,预处理是消除因输入设备的差异,或者是个人输入习惯  的不同产生的一些噪声,如图中,因为手的抖动,造成有很多毛刺,或者绘图着画的慢,造成有些点重复取样。这些噪声会影响后面识别的准确性。

    降低噪声的方法通常采用线性平滑算子或非线性平滑算子进行处理。可以通过每隔两点计算其中心点,然后连接这些中心点作为后续处理笔划的
    方法。也可以通过限定草图的点间距的方法过滤掉多余的草绘点。但方法可能会丢失草绘时的一些动态特征,如速度、加速度等。

     

    三.笔画分割

    笔画分割的目的是将用户画出的复杂图形分割成基本的图元。分割的好坏会直接影响到后面识别的部分。

    曲率:曲线上各点沿曲线方向的变化情况,借助曲率可以刻画曲线的几何特征。

    曲率几何特征
    连续零曲率直线段
    连续非零曲率弧线段
    局部最大曲率绝对值角点
    局部最大曲率正值凸角点
    局部最大曲率负值凹角点
     曲率过零点特征点 
      

     

    1.曲率的计算公式:k=△φ/△S

    其中:△φ表示切线倾角变化值,△S表示曲线的弧长。

    2.绘制速度
    用户绘图过程中,在拐角处绘制速度会变慢,所以绘图时的绘制速度也是我们进行特征点判断的重要依据。由于在绘图的过程中是等时采样,任意点的绘制速度,可以用相邻两点间的距离代替。

     

    根据曲率及绘制速度来检测笔划中的特征点进行分割。介绍两种分割算法:均值滤波和尺度空间滤波法。

    均值滤波发:

    数据的极值可能是数据的噪声产生的,所以我没要消除噪声所产生的极值,需要设置合适的阈值。如果是固定阈值,可能某种情况很好,某种情况又非常不好,均值滤波起到了一个很好的解决方案。先计算数据的平均值,然后乘以一个固定因子,获得一个合适的阈值。可以把数据分成大于和小于阈值的两个部分。

    均值滤波需要运用在曲率和速度上,找出合适的特征点,具体步骤如下:

    1)遍历所有采样点,计算出采样点的切线与x轴夹角,计算出曲率和平均曲率Ave_Curvature;

    2)特征点在全部点钟占的比例较小,为了提高分割的准确性,所以对Ave_Curvature进行放大,作为曲率极值的判断阈值。

    3)遍历所有曲率数据,比较找出大于阈值的电,加入到曲率特征点链表中。

    4)同样遍历采样点,计算出速度数据和Ave_Speed。

    5)对速度进行缩小,作为速度极值判断的阈值。

    6)找出比阈值小的点,加入到速度特征点链表

    7)比较2个链表,将重合或相近的电作为特征点输出。

     

    尺度空间法:

    尺度空间思想最早由lijima于1962年提出,但当时并未引起计算机视觉领域研究者们的足够注意,直到上世纪八十年代,Witkin等人的奠基性工作使得尺度空间方法逐渐得到关注和发展。此后,随着非线性扩散方程、变分法和数学形态学等方法在计算机视觉领域中的广泛应用,尺度空间方法进入了快速发展阶段。

    尺度空间方法的基本思想是:在视觉信息(图像信息)处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征。尺度空间方法将传统的单尺度视觉信息处理技术纳入尺度不断变化的动态分析框架中,因此更容易获得图像的本质特征。

     

    转载于:https://www.cnblogs.com/SeekHit/p/5027402.html

    展开全文
  • 使用图形与机器进行交互,将会提高交互...本文讨论了基于模糊特征提取的几何图形识别方法。重点研究了样本数据的模糊特征提取方法,提出了几个用于识别联机手绘单笔几何图形的特征,并且给出了分类器的算法和训练算法。
  • 基于模糊聚类对数字图形识别,谭军,,随着社会的不断发展,图形图像识别在现实生活中众多领域中参用的越来越广泛,在图形图像识别中最重要的环节就是对图形图像识别的
  • CAD_CAI中的图形识别研究.pdf
  • 针对工程图中具有某种特殊意义的图形符号(如粗糙度、标高符号等),研究了确定性有限自动机识别矢量图形的方法。从DFA出发,构造待识别图形符号的状态集合以及状态间的转换关系,然后通过搜索图形元素集合以及一定...
  • 手绘几何图形识别代码

    热门讨论 2012-11-20 10:21:12
    使用FSGRKit 做为手绘图形识别引擎;WTL做为图形界面 VS2005 可以编译通过 如需FSGRKit库,请联系作者
  • Delphi015图形识别和编辑计算机毕业设计.rar
  • 本人菜鸟一个,未学习过模式识别、计算机等学科,贻笑大方之处恳请谅解。这是自己学习中利用OpenCV,通过SVM识别图像中图形链码,完成图形识别的小程序,特分享一下。
  • 从理论上阐述了统计图形识别的风险最佳检验就是在一定的风险度下对一组统计量的有关特征做出诊断或决策,给出了统计图形识别的诊断和决策流程,以及最小风险诊断决策的规则和具体方法的实现。并以人体器官的医学诊断...
  • 将该方法应用于联机几何图形识别,实验中联合了3种分类器,每种分类器的机制各不相同,并且都基于不同的模式特征。将该分类器联合方法与现有的几种联合方法进行实验比较,实验结果表明该方法具有较高的识别率。
  • 胎心监护图形识别PPT学习教案.pptx
  • 基于OpenCV轮廓逼近的Android简单图形识别.pdf
  • 基于OpenCV在Android移动终端的图形识别.pdf
  • 基于模糊聚类的标识点图形识别方法.pdf
  • 一种基于图形识别的甲骨文分类方法.pdf
  • 基于 Java 的简单图形验证码识别
  • 重庆邮电大学图形识别毕业设计答辩PPT学习教案.pptx
  • 匹配滤波器 图形识别

    2019-01-01 16:41:19
    包含代码和说明文档,通过匹配滤波器实现图形识别,可用于匹配滤波器的学习
  • 一种基于Android平台的简单图形识别方法的研究.pdf
  • 基于图形识别和GRNN网络的照明设计自动化系统.rar
  • 基于图形识别和GRNN网络的照明设计自动化系统.pdf

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 195,973
精华内容 78,389
关键字:

图形识别