基于Freeman链码的几何图形识别算法

基于Freeman链码的几何图形识别算法

文章目录

  • 基于Freeman链码的几何图形识别算法
  • 前言
  • 一、Freeman链码技术
  • 二、算法描述
    • 1. 去噪、二值化
    • 2. 顶点搜索
    • 3. 确定顶点个数
    • 4. 图形的判定


前言

目前关于几何图形识别的算法存在的问题主要有准确率低,计算复杂度较高,运行时间较长等。利用简洁高效的Freeman链码算法结合几何图形特有的几何属性设计出新的算法,使其能够快速识别几何图形的顶点分布,并反映在一张边界震荡(boundary vibration,BV)曲线图上。该曲线图能够刻画几何图形的属性,如顶点的个数、距离分布,角度的大小,线段的曲直和图形的周长等。因此通过对曲线图的特征分析可以准确识别对应的几何图形。该算法不受图形的平移、旋转、放缩、噪声影响。为了测试算法的稳定性,仿真试验针对九种不同的随机生成且带噪声的几何图形,结果识别率较高,运行速度较快,达到了预期的效果。


一、Freeman链码技术

Freeman链码技术是一种用来刻画数字图像的边界的方法。该方法首先需要定义一个方向坐标,常用的两个方向坐标是四方向和八方向坐标。然后根据坐标来对图像的边界按照Moore边界追踪算法 进行数字编码,使得图像的边界被一一地转换成一个数字序列。

二、算法描述

算法将考虑九种不同形状的几何图形,分别是圆、椭圆、正方形、长方形、菱形、三角形、五边形、六边形,以及不规则图形。把整个图形的识别过程分为四个步骤。

1. 去噪、二值化

在实际的图像识别中,经常会出现噪声的干扰,如模糊的监控画面等。为了增加算法的适用范围,考虑随机生成的带有椒盐噪声和高斯噪声的几何形状,采用均值滤波来处理高斯噪声、中值滤波来处理椒盐噪声。由于二值图像比灰度图像更容易处理,所以通过设定阈值来进行二值化。但是多次运行程序发现,二值化后的图像有时会出现孔洞,于是进行孔洞填充,取得了不错的效果。

2. 顶点搜索

基于Freeman链码技术的边界搜索启发,设计了顶点搜索算法,其思想是:构造一个大小合适的正方形,将正方形中心沿图形边界移动,用y来记录正方形落入图形的面积,即正方形与图形重合的部分,随着正方形中心沿着边界移动,y的值也在不断的变化。分析发现,当正方形中心在几何图形的边上时,y的值大约为正方形面积的一半;当正方形中心靠近到图形的顶点时,y的值会迅速变小。我们根据y的值来判断图形顶点的个数。

通过简单的平面几何的知识,在理论上证明了:当正方形的中心移动到矩形的顶点时,正方形与矩形重合的面积正好是正方形的1/4,不受矩形旋转的影响。这个事实将帮助在后续区分矩形和菱形。

正方形中心沿图形边界移动的过程中,模仿Freeman链码的边界点的搜索来操作。首先模仿Freeman链码中的八方向:1为右上,2为右,3为右下,4为下,5为左下,6为左,7为左上,8为上。搜索过程类似Freeman链码:

(1)起始点为左上角边界点,起始方向为起始点的下边。

(2)当前点取为起始点,当前方向取为起始方向,记录一次y的值。

(3)在当前点的八连通邻域内从当前方向顺时针搜索到下一个边界点。

(4)当前点改为搜索到的点,当前方向改为搜索方向的反方向的下一个方向,并记录y的值。

(5)若当前点和当前方向为起始点和起始方

向,则终止搜索,否则重复3和4。

相应的,在具体的代码中,取图像左上方的点作为初始点,设该点坐标为(I,J),同时也为正方形的中心,起始方向设为direct=4。如果(I-1,J+1)=1,即检测到在(I,J)的右上方有一个边界点,则将当前点(I,J)取为(I-1,J+1),当前方向direct=4取为direct=1;否则(I,J)顺时针移到下一个检索点(I,J+1),如果(I,J+1)=1,则当前点(I,J)取为(I,J+1),当前方向direct=4取为direct=2;以此类推直到检索完当前点(I,J)所有的相邻点。

3. 确定顶点个数

通过上述操作,在每一个边界点上都得到一个y值,这就将图形的边界转化成一个数字序列,将序列反映在坐标轴上,横坐标表示图形的周长area,纵坐标表示正方形与几何图形重合的面积y。称该图像为边界震荡曲线(BV曲线),用该曲线就能分析出图形顶点的个数。首先对曲线做预处理,以便后续的判定。

(1)由于比较毛糙,因此对曲线进行多值化,多值化的目的除了使曲线平滑外,还为了后续判定图形角度的大小。
(2)通过算法的设计知道,图像的波谷代表顶点出现的位置。由于几何图形的边界都是闭合的,所以BV曲线的头部与尾部应当是相接的,故将靠近头部和尾部的波谷算成同一个波谷。

4. 图形的判定

对曲线进行多值化后,仅波谷所在的位置会出现极小值点。如果极值点个数为2,判定为椭圆。如果极值点个数等于3,则几何图形为三角形。如果极值点个数等于4,但是最大波谷只有2个,则几何图形为菱形,因为菱形有2个大波谷,2个小波谷;否则,若波谷之间距离大致相同,则几何图形为正方形;若波谷之间距离明显不相同,则几何图形为长方形。如果极值点个数等于5,则几何图形为五边形。如果极值点个数等于6,则几何图形为六边形。如果极值点个数大于6,则几何图形为其它图形。否则,如果图形的偏心率小于0.1,则几何图形为圆;否则为椭圆。

学习使用,侵权联系速删
来源:基于比率的Freeman链码算法

你可能感兴趣的:(机器学习,机器学习)