基于C语言的形状识别

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于C语言的形状识别

1、CDIO设计目的

在学习了数据图形的基础上,进行编写摄像头采集程序,对采集的程序进行预处理,对预处理的图像进行特征提取,如分散度,拒不变量等特征,进行模式识别,区分各种形状。

2、CDIO设计正文

2.1图像识别

图像分析技术分类的三种基本范畴

(1) 低级处理:图像获取、预处理,不需要智能

(2) 中级处理:图像分割、表示与描述,需要智能

(3) 高级处理:图像识别、解释,缺少理论,为降低难度,设计得更专用。

对于一个数字图形的识别可以分为以下四个步骤:

(1) 数码图片的获取,

(2 ) 图像的彩色边缘检测、图像的分割,

(3) 图象的颜色特征和形状特征提取

(4) 图像的分类识别。

我们的设计主要是根据图形的边缘特征,以此来与机器记忆中的特征值进行比较,如果比较相近,那么就可以认为是指定的图形形状。

边缘是图像的一个基本特征,携带了图像中的大量信息,边缘检测不仅能得到关于边界的有用的结构信息,而且还能极大地减少要处理的数据,很多图像处理和识别算法都以边缘检测为重要基础。

边缘按其颜色特征可分为灰度边缘和彩色边缘。

(1)灰度图像可由图像亮度函数来描述,灰度边缘可以定义为图像亮度函数的具有边缘特征的不连续点的集合,它描述了灰度函数的局部突变。

(2)彩色图像可由图像色彩函数来描述,彩色边缘可以定义为图像色彩函数的具有边缘特征的不连续点的集合,它描述了色彩函数的局部突变。

长期以来人们主要致力于灰度边缘的研究并取得了很好的效果。但彩色边缘能比灰度图像提供更多的信息。有研究表明,彩色图像中,大约有90%的边缘与灰度图像中的边缘相同,也就是说,有10%的边缘在灰度图像中是检测不到的。因此,彩色边缘的检测受到越来越多的重视。

彩色边缘检测的方法:

(1)输出融合法

分别对红,绿,蓝三个颜色通道(或其他颜色空间分量)执行边缘检测,

最后的输出是这三幅边缘图像的合成

对于特征提取。我们可以根据形状特征或者颜色进行提取。(1)形状特征:

图像经过边缘提取和图像分割等操作,就会得到边缘和区域,也

就是获得了目标的形状。

任何物体的形状特征均可由其几何属性(如长度、面积、距离、凹凸等),统计属性(如投影)和拓扑属性(如连通、欧拉数)来进行描述。

可以用来表示形状的特征包括几何特征和矩特征。

(2)颜色特征:

由于颜色特征具有旋转不变性和尺度不变性,因而,在图象识别技术,颜色是使用最广泛的特征之一。而颜色特征的提取是利用颜色特征进行图象识别的关键之一。目前,大部分系统都采用颜色比例分布作为颜色基本特征,这就是图象领域中的直方图法。

颜色特征提取后,如何用数值来有效的表示图像在颜色上的相似程度,这便是相似度量问题

相似度量也是直接影响识别效果的重要环节,在模式识别技术中,特征的相似度量均采用距离法,即特征的相似程度用特征向量的空间距离来表示。

经过彩色边缘检测,图像分割和特征提取,对分割后的图像进行模式匹配,并制作出用户界面,最终实现图像的分类和识别。

2.1.1 图形识别系统的设计

在了解了图形识别的原理的基础之后就是系统的设计,对于图形的识别matlab 是一个比较好的工具,里面集成了关于凸图像处理的函数库,比较方便,但是如果可以把做成的系统使用更加广泛的编程java或者.Net中的C#的话,它的实用性就比较的强了,考虑到系统调用摄像头,以及可以方便的进行已有图形的识别,我们选择使用.Net 开发环境中的C#作为系统开发设计的语言,对于图像处理.Net 类库里面已经有了比较多的方法,同时作为一个比较流行的开发平台,一些开源的进行图像处理的第三方类库,对于我们来说也是比较实用的,最总我们选择了一个比较有名的开源类库。

是一个专门为开发者和研究者基于C#框架设计的,他包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,模糊系统,机器人控制等领域。

这个框架由一系列的类库组成。主要包括有:

AForge.Imaging ——一些日常的图像处理和过滤器

AForge.Vision ——计算机视觉应用类库

AForge.Neuro ——神经网络计算库AForge.Genetic -进化算法编程库

AForge.MachineLearning ——机器学习类库

AForge.Robotics ——提供一些机器学习的工具类库

AForge.Video ——一系列的视频处理类库

AForge.Fuzzy ——模糊推理系统类库

AForge.Controls——图像,三维,图表显示控件

我们使用其中的AForge.Imaging 进行了图形的识别,因为在此命名空间里面包括了我们进行简单图形识别的类,所以我们的操作相对就比较简单了,直接使用其中的类进行操作即可,在识别出对应的形状之后,我们使用颜色进行标记,以此显示出,所对应的形状。

为了比较方便的对于一些纸质的图片进行是识别,我们使用了其中的视频处理类AForge.Video,可以很方便的调用摄像头,进行拍照,并对拍照的图片进行识别。

2.1.2系统界面

本系统直接利用窗体设计实现,界面简单友好,方面用户使用,如图3所示。

图3 图像识别系统界面

本系统通过编程实现调用笔记本电脑的摄像头,利用摄像头拍摄

图片作为系统检测的图像,之后通过编程检测图像的轮廓确定为何

种图形。在拍摄图片的过程中,由于摄像头像素有限,拍摄的图片存在各种干扰,因此尽量在光线较好的环境下进行拍摄。在后续编程过程中,也可以先将图片进行降噪处理,再对图片进行轮廓检测,提高本系统的精确率,系统调用摄像头的界面如图4所示。

图4 系统调用摄像头界面

2.1.3 系统识别效果

调用摄像头并进行识别的识别效果,如图5所示

相关文档
最新文档