zoukankan      html  css  js  c++  java
  • 手绘几何图形识别(下)

    四.图元识别

    图元是组成图形的最小单元,图元识别是图形识别的基础。在笔画分割的基础上,对分割出来的图元进一步识别。

    1.直线识别

    直线的特征具有线性化,假设收集的采样点是P(Xi,Yi),i=1,2,3...n。

    线性化判断有下面三种方法:

    1)图元首位点的距离,和采样点序列的累计弦长的比值,是否大于一个给定阈值

    2)图元上采样点到首位点连成直线的距离超过阈值的点的个数,是否在允许范围内

    3)图元的外接矩形长宽比是否小于某一阈值

    2.直线拟合(最小二乘法)

    直线拟合采用最小二乘法,设y=f(x)=a+bx为拟合直线方程。

    d为点序列S={p(Xi,Yi)|i=0,1,2...n}到拟合直线的距离。

    偏差平方和最小时,拟合度最高。

    将a、b值带入线性方程y=a+bx,即得到回归直线方程。

    2.提取几何特征参数

    凸包 外切矩形 最大内接三角形 最大内接四边形

    3.第一特征比值示例

    图形类型

    第一特征比值

    凸包周长平方/凸包面积

    线

    外切矩形高度/外切矩形宽度

    长方形

    凸包面积/外切矩形面积

    椭圆

    最大内切四边面积/凸包面积

    三角形

    最大内切三角形面积/凸包面积

    菱形

    最大内切三角形面积/最大内切四边形面积

    梯形

    最大内切四边形面积/外切矩形面积

    五角星

    最大内切三角形面积/外切矩形面积

    五.特征点选取

    识别出是哪种图形之后,相应的找出特征点,特征点选取的好坏,直接影响了最后绘制图形的好坏。主要参考的是绘制速度和曲率2个参数。

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

    其中:△φ表示切线倾角变化值,△S表示曲线的弧长。 △φ=atan(△y/△x)作为曲线在点P处角度变化值; 从曲率的定义可以看出,在切线倾角改变相同的情况下,两点间距离越小, 曲率越大。这一特性非常适用于判断特征点,因为笔划中特征点处采样点之间 的距离较小,而角度变化较大。

    但是当笔划含有较多噪声时,该方法计算出噪声点处的曲率较大,真正的特征点曲率也比较大,这就无法区分出真正的特征点和由噪声引起的特征点。 采用ODR(orthogonal distance regression)方法求曲线在某点的切线方向。该方法是用直线拟合的方法来寻找一条过该点直线,使得该点邻域内的各点到该直线的距离之和最小,然后取该直线与X轴的夹角作为该点的切线方向。 对于曲线上某点P。

    ODR方法求切线方向:

    再通过均值滤波法求出特征点。进行绘制。

  • 相关阅读:
    composer 安装laravel
    面向对象
    dedecms常用标签
    Illegal modifier for parameter *** , only final is permitted”
    import static和import的区别
    <<Effective Java>> 第四十三条
    java valueOf
    linux的shell编程
    DFA和NFA的区别
    发现一个正则网
  • 原文地址:https://www.cnblogs.com/SeekHit/p/5046475.html
Copyright © 2011-2022 走看看