基于matlab的图像形状与分类毕业设计(含源文)

基于matlab的图像形状与分类



摘 要


数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务。数字图像处理是一种通过计算机采用一定的算法对图形图像进行处理的技术。数字图像处理技术已经在各个领域上都有了比较广泛的应用。图像处理的信息量很大,对处理速度的要求也比较高。MATLAB强大的运算和图形展示功能,使图像处理变得更加的简单和直观。本文介绍了MATLAB 语言的特点,基于MATLAB的数字图像处理环境,介绍了如何利用MATLAB及其图像处理工具箱进行数字图像形状的边缘提取和识别分类。论文主要论述了利用MATLAB实现对图像中的三角形,正方形,圆,椭圆,菱形的边缘提取和自动识别分类。


关键词:MATLAB;数字图像处理;图像形状;图像分类



目 录

扫描二维码关注公众号,回复: 15454538 查看本文章



1 引言 1

href="zhuanlan.zhihu.com/writ">1.1课题研究目的及意义 1

href="zhuanlan.zhihu.com/writ">1.2国内外研究现状 1

href="zhuanlan.zhihu.com/writ">1.3本课题研究工作与结构安排 2

2 数字图像形状及预处理 3

href="zhuanlan.zhihu.com/writ">2.1概述 3

href="zhuanlan.zhihu.com/writ">2.2 数字图像的预处理 4

ef="zhuanlan.zhihu.com/writ">2.2.1数字图像 4

ef="zhuanlan.zhihu.com/writ">2.2.2采样 6

ef="zhuanlan.zhihu.com/writ">2.2.3量化 7

ef="zhuanlan.zhihu.com/writ">2.2.4 采样、量化和图像细节的关系 7

href="zhuanlan.zhihu.com/writ">2.3几种典型的形状特征描述方法 8

3形状特征及提取分类 9

href="zhuanlan.zhihu.com/writ">3.1 矩形度 10

href="zhuanlan.zhihu.com/writ">3.2 圆形度 10

href="zhuanlan.zhihu.com/writ">3.3 矩 11

href="zhuanlan.zhihu.com/writ">3.4 不变矩 11

href="zhuanlan.zhihu.com/writ">3.5基于不变矩的形状特征提取 12

ef="zhuanlan.zhihu.com/writ">3.5.1 特征提取步骤 12

ef="zhuanlan.zhihu.com/writ">3.5.2 边缘提取算子的确定 12

ef="zhuanlan.zhihu.com/writ">3.5.3 边缘提取常用算子 12

ef="zhuanlan.zhihu.com/writ">3.5.4 Canny算子 13

href="zhuanlan.zhihu.com/writ">3.6 边缘提取实验结果及分析 15

ef="zhuanlan.zhihu.com/writ">3.6.1 边缘提取算法分析 15

ef="zhuanlan.zhihu.com/writ">3.6.2 图像形状识别结果 15

结 论 25

参考文献 26

致 谢 27

附录: 28


1 引言

本章简略介绍课题的研究目的及意义,该课题国内外研究现状以及论文内容安排等。

1.1 课题研究目的及意义

随着信息化多媒体时代的到来及世界范围内Internet的风行,人们在工作和生活中越来越多的接触到大量的各种各样的图像信息。图像作为一种重要的信息载体,具有直观、内容丰富、无语言限制和便于国际交流等特点,是组成多媒体信息的重要内容。图像处理技术已经广泛深入的应用于各行各业中。设计制造、医疗卫生、艺术文化、建筑工程、地理、公安等领域相继建立了各种图像库。

在浩如烟海的信息中,寻找感兴趣的资料是极其耗时的,人们对信息检索和系统的依赖日益加强。图像的特征提取是基于内容的图像检索系统部分的核心内容。

本文研究的重点就是如何从静态图像中提取出图像的形状特征。

典型框架是:对图像的形状进行人工标注分类。这种方法当图像数量不大时,不失为一种简单易行的方法。然而,当图像数据量非常庞大时,基于文本的图像检索存在着诸多困难,此时图像形状的自动识别就派上用场了。

1.2 国内外研究现状

因为图像特征提取及识别具有很强的实用性,国内外测绘界、计算机视觉、模式识别与人工智能等领域都对其进行了深入研究。国外如美国的Mckeown实验室、英国的VGG实验室、德国的波恩大学、奥地利的格拉茨大学等,国内如清华大学、北京大学、中科院等,在这方面都做了许多工作,取得了很大的成绩,有的成果己具备初步的实用价值。在上述研究的基础上,近年来国内外推出了一系列图形图像软件,它们具备了较强的图像特征提取和识别的功能。国外流行的图像特征提取及识别的软件,例如:德国softelec公司的VPStudio,日本日立公司的Imageseries,美国GTX公司的GTXRaster series,挪威Rasterex公司的RxAutoImage Pro 2000等。国内图像特征提取及识别软件,例如:东大阿尔派的SEAS系统,华中理工大学的EDIS工程图信息系统,西工大CAD中心的NPPU-EDRS工程图智能输入与识别系统,清华紫光的TH-DAIMS图纸处理系统等。

从上面特征提取和识别的研究现状来看,由于特征提取及识别问题本身的多样性和复杂性,现有的理论和方法离实际要求还有相当距离,一些根本的问题还有待进一步深入研究。现有的特征提取和识别算法基本上还是处于实验阶段,其实用性、通用性、准确性等方面离大规模实际应用的要求还有一定差距。所有这些应用都是和问题的性质密不可分的,至今还没有发展成统一、有效的可应用于所有模式识别的理论。虽然各特征提取与识别算法的处理能力、特征提取能力、特征识别能力的效果方面各有所长,但是仍然在算法的性能、通用性、自动化程度、准确率方面存在很多不足。因此,为了弥补这些不足,对于图像特征提取及识别技术的研究需要更多的关注,付出更多的努力。

1.3 本课题研究工作与结构安排

本文主要以MATLAB为工具来实现数字图像形状方面的研究与分类。全文共分3章,结构安排如下:

第一章 引言,介绍了课题研究目的及意义和国内外研究现状。

第二章 介绍了对数字图像进行预处理的基本步骤。

第三章 介绍了图像形状的基本特征及其分类识别。

2 数字图像形状及预处理

2.1 概述

形状特征是对图像中边界清晰的目标的最好表达方式。是图像目标的一种显著特征,在实际中通常利用形状特征或主要边界对图像进行检索和分类。图像分类(识别)属于模式识别的范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类。图像分类常采用经典的模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来的模糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视。

人的视觉系统对于景物的最初认识是物体的形状,能从二维图像中识别出许多物体。在人的视觉感知、识别和理解中,形状是一个重要参数。形状是刻画物体的本质特征之一,也是描述图像内容的一个重要特征。对图像的形状描述是一个非常复杂的问题,在二维情况下,形状可以定义为二维范围内一条简单连接曲线位置和方向的函数。因此形状的描述涉及到对封闭曲线的描述,或对轮廓所包围区域的描述。图像目标的边缘称为轮廓。轮廓是形状知觉中最基本的概念,它与形状有密切的联系。人在知觉一个形状以前一定先看到轮廓。当我们看到一个物体的形状时,就是看见了一个轮廓,这个轮廓把该物体与视野中的其它部分区分开来。直观的说,对形状的知觉要求在亮度不同的可见区域之间有一个线条分明的轮廓。轮廓的构成用数学语言来说是轮廓对应亮度的二阶导数,仅仅有亮度的线性变化并不产生轮廓。当人注意物体的形状时,倾向于固定的看某一些区域;而当人注意轮廓时,则把轮廓看成一条要追踪的路线,所以从轮廓到形状的知觉有一个“形状构成”的过程。可以这么说,轮廓只是边界,是一个局部概念,而形状是全体,是一个总体概念。

Matlab是非常好用的图像处理软件。Matlab是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。

Matlab的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用Matlab来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。

Matlab包括拥有数百个内部函数的主包和三十几种工具包(Toolbox)。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充Matlab的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。

开放性使Matlab广受用户欢迎。除内部函数外,所有Matlab主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。

本文正是要使用Matlab从“轮廓”这个局部中找出特征来判断“形状”这个总体。

2.2 数字图像的预处理

2.2.1 数字图像

所谓数字图像就是把传统图像的画面分割成如图2-1所示的被成为像素(picture element, 简称pixel。有时候也用pel这一简写词)的小的离散点,各像素的灰度值也是用离散值即整数值来表示的。数字图像(digital imagine)和传统的图像即模拟图像(picture)是有差别的。


v2-55c82baee08e1da730057d1b30e11018_b.jpg


图2-1 数字图像

常见的数字图像格式有以下几种:

(1)PCX(Windows Paintbrush)格式。可处理1,4,8,16,24位等图像数据。文件内容包括:文件头(128字节),图像数据、扩展颜色映射表数据。

(2)BMP(Windows Bitmap)格式。有1,4,8,24位非压缩图像,8位RLE(Run-length Encoded )图像。文件内容包括:文件头(一个BITMAP FILEHEADER数据结构),位图信息数据块(位图信息头BITMAP INFOHEADER和一个颜色表)和图像数据。

(3)HDF(Hierarchical Data Format)格式。有8位,24位光栅数据集。

(4)JPEG(Joint Photographic Experts Group)格式,是一种成为联合图像专家组的图像压缩格式。

(5)TIFF(Tagged Image File Format)格式。处理1,4,8,24位非压缩图像,1,4,8,24位packbit压缩图像,一位CCITT压缩图像等。文件内容包括:文件头,参数指针表与参数域,参数数据表和图像数据四部分。

(6)XWD(X Windows Dump)格式。1,8位Zpixmaps,Xybitmaps,1位Xypixmaps。

(7)PNG(Portable Network Graphics)格式。

为了从一般的照片,景物等模拟图像中得到数字图像,需要对传统的模拟图像进行采样与量化两种操作(二者统称为数字化)。数字图像处理(Digital Image Processing)是通过计算机对图像进行去除噪声、增强、复原、分割、提取特征等处理的方法和技术。数字图像处理的产生和迅速发展主要受三个因素的影响:一是计算机的发展;二是数学的发展(特别是离散数学理论的创立和完善);三是广泛的农牧业、林业、环境、军事、工业和医学等方面的应用需求的增长。

对数字图像经行处理要用到Matlab程序,它在数字图像方面的用处巨大。

图像处理工具包是由一系列支持图像处理操作的函数组成的。所支持的图像处理操作有:图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等) 、图像分析和统计、二值图像操作等。下面就Matlab 在图像处理中各方面的应用分别进行介绍。

(1) 图像文件格式的读写和显示。Matlab 提供了图像文件读入函数 imread(),用来读取如:bmp、tif、tiffpcx 、jpg 、gpeg 、hdf、xwd等格式图像文;图像写出函数 imwrite() ,还有图像显示函数 image()、imshow()等等。

(2) 图像处理的基本运算。Matlab 提供了图像的和、差等线性运算 ,以及卷积、相关、滤波等非线性算。例如,conv2(I,J)实现了I,J两幅图像的卷积。

(3) 图像变换。Matlab 提供了一维和二维离散傅立叶变换(DFT) 、快速傅立叶变换(FFT) 、离散余弦变换 (DCT) 及其反变换函数,以及连续小波变换(CWT)、离散小波变换(DWT)及其反变换。

(4) 图像的分析和增强。针对图像的统计计算Matlab 提供了校正、直方图均衡、中值滤波、对比度调整、自适应滤波等对图像进行的处理。

(5) 图像的数学形态学处理。针对二值图像,Matlab 提供了数学形态学运算函数;腐蚀(Erode)、膨胀(Dilate)算子,以及在此基础上的开 (Open)、闭(Close)算子、厚化 (Thicken) 、薄化 (Thin) 算子等丰富的数学形态学运算。

以上所提到的 Matlab在图像中的应用都是由相应的Matlab函数来实现的,使用时,只需按照函数的调用语法正确输入参数即可。具体的用法可参考Matlab丰富的帮助文档。图像边缘对图像识别和计算机分析十分有用,在Matlab中,函数 edge()用于灰度图像边缘的提取,它支持六种不同的边缘提取方法,即Sobel方法、Prewitt 方法、Robert 方法,Laplacian2Gaussian方法、过零点方法和Canny方法。

基本的图像类型分为以下几种:

(1)索引图像

索引图像包括图像矩阵与颜色图数组,其中,颜色图是按图像中颜色值进行排序后的数组。对于每个像素,图像矩阵包含一个值,这个值就是颜色图中的索引。颜色图为m*3双精度值矩阵,各行分别指定红绿蓝(RGB)单色值。Colormap=[R,G, B],R,G,B为值域为[0,1]的实数值。

图像矩阵与颜色图的关系依赖于图像矩阵是双精度型还是uint8(无符号8位整型)类型。如果图像矩阵为双精度类型,第一点的值对应于颜色图的第一行,第二点对应于颜色图的第二行,依次类推。如果图像矩阵是uint8,有一个偏移量,第0点值对应于颜色图的第一行,第一点对应于第二行,依次类推;uint8长用于图形文件格式,它支持256色。

(2)灰度图像

在MATLAB中,灰度图像是保存在一个矩阵中的,矩阵中的每一个元素代表一个像素点。矩阵可以是双精度类型,其值域为[0,1];也可以为uint8类型,其数据范围为[0,255]。矩阵的每个元素代表不同的亮度或灰度级。

(3)二进制图像

二进制图像中,每个点为两离散值中的一个,这两个值代表开或关。二进制图像保存在一个由二维的由0(关)和1(开)组成的矩阵中。从另一个角度讲,二进制图像可以看成为一个仅包括黑与白的灰度图像,也可以看作只有两种颜色的索引图像。

二进制图像可以保存为双精度或uint8类型的双精度数组,显然使用uint8类型更节省空间。在图像处理工具箱中,任何一个返回二进制图像的函数都是以uint8类型逻辑数组来返回的。

(4)RGB图像

与索引图像一样,RGB图像分别用红,绿,蓝三个亮度值为一组,代表每个像素的颜色。与索引图像不同的是,这些亮度值直接存在图像数组中,而不是存放在颜色图中。图像数组为M*N*3,M,N表示图像像素的行列数。

2.2.2 采样

采样(sampling)就是把在时间上和空间上连续的图像变成离散点(采样点,即像素)的集合的一种操作。

图像基本上是在二维平面上连续分布的信息形式要把它输入到计算机中,首先要把二维信号变成一维信号,因此要进行扫描(scanning)。最常用的扫描方法是在二维平面上按一定间隔顺序地从上方顺序地沿水平方向的直线(扫描线)扫描,从而取出浓淡值(灰度值)的线扫描(Laster扫描)。对于由此得到的一维信号,通过求出每一特定间隔的值,可以得到离散的信号。对于运动图像除进行水平,垂直两个方向的扫描以外,还有进行时间轴上的扫描。

通过采样,如设横向的像素数为M,纵向的像素数为N,则画面的大小可以表示为“M*N”个像素。

2.2.3 量化

经过采样,图像被分解成在时间上和空间上离散分布的像素,但是像素的值(灰度值)还是连续值。像素的值,是指白色-灰色-黑色的浓淡值,有时候也指光的强度(亮度)值或灰度值。把这些连续的浓淡值或灰度值变为离散的值(整数值)的操作就是量化。

如果把这些连续变化的值(灰度值)量化为8bit,则灰度值被分成0-255的256个级别,分别对应于各个灰度值的浓淡程度,叫做灰度等级或灰度标度。

在0-255的值对应于白-黑的时候,有以0为白,255为黑的方法,也有以0为黑,255为白的方法,这取决于图像的输入方法以及用什么样的观点对图像进行处理等,这是在编程时应特别注意的问题。但在只有黑白二值的二值图像的情形,一般设0为白,1为黑。

对连续的灰度值赋予量化级的,即灰度值方法有:均匀量化(uniform quantization),线性量化(liner quantization),对数量化,MAX量化,锥形量化(tapered quantization)等。

2.2.4 采样、量化和图像细节的关系

上面的数字化过程,需要确定数值N和灰度级的级数K。在数字图像处理中,一般都取成2的整数幂,即:


v2-f10962025354097b8aa6c6960a525838_b.jpg

(2-1)


v2-71e2bdf3d60235dd2533a60d2846f69b_b.jpg

(2-2)

一幅数字图像在计算机中所占的二进制存储位数b为



v2-b0ea2ef9993720a9f98a79da7cccf803_b.jpg

(2-3)


例如,灰度级为256级(m=8)的512×512的一幅数字图像,需要大约210万个存储位。随着N和m的增加,计算机所需要的存储量也随之迅速增加。

由于数字图像是连续图像的近似,从图像数字化的过程可以看到。这种近似的程度主要取决于采样样本的大小和数量(N值)以及量化的级数K(或m值)。N和K的值越大,图像越清晰。

2.3 几种典型的形状特征描述方法

对形状分析和分类的方法技术有许多。通常来说,形状特征表示方法可以分为两类:基于边界的和基于区域的。前者使用形状的外部边界,而后者使用整个区域。这两类形状特征的最典型的方法分别是傅立叶描述符、变形模板匹配和形状不变矩。此外轮廓匹配方法还有几何参数法、边界方向直方图法、小波重要系数法和小波轮廓表示法等。

几种典型的形状特征描述方法:

(1)边界特征法

该方法通过对边界特征的描述来获取图像的形状参数。其中Hough 变换检测平行直线方法和边界方向直方图方法是经典方法。Hough 变换是利用图像全局特性而将边缘像素连接起来组成区域封闭边界的一种方法,其基本思想是点—线的对偶性;边界方向直方图法首先微分图像求得图像边缘,然后,做出关于边缘大小和方向的直方图,通常的方法是构造图像灰度梯度方向矩阵。

(2)傅里叶形状描述符法

傅里叶形状描述符(Fourier shape descriptors)基本思想是用物体边界的傅里叶变换作为形状描述,利用区域边界的封闭性和周期性,将二维问题转化为一维问题。由边界点导出三种形状表达,分别是曲率函数、质心距离、复坐标函数。

(3)几何参数法

形状的表达和匹配采用更为简单的区域特征描述方法,例如采用有关形状定量测度(如矩、面积、周长等)的形状参数法(shape factor)。在 QBIC 系统中,便是利用圆度、偏心率、主轴方向和代数不变矩等几何参数,进行基于形状特征的图像检索。

需要说明的是,形状参数的提取,必须以图像处理及图像分割为前提,参数的准确性必然受到分割效果的影响,对分割效果很差的图像,形状参数甚至无法提取。

(4)形状不变矩法

利用目标所占区域的矩作为形状描述参数来进行分类。

(5)其它方法

近年来,在形状的表示和匹配方面的工作还包括有限元法(Finite Element Method 或 FEM)、旋转函数(Turning Function)和小波描述符(Wavelet Descriptor)等方法。

3 形状特征及提取分类

本文主要采用的是几何参数法来判断给出的的图像是什么形状。

对于图像分类问题,特征提取的好坏是决定分类性能的关键因素。提取物体的形状特征前,首先要对图像进行边缘提取,以获得物体的轮廓边界,然后需要把轮廓边界区域的特征抽取出来。在这些特征里面,有一部分可以用数字量值来描述,但更多的特征是一些没有明显特征的几何图形。为了便于图像的匹配,需要对这些几何图形进行进一步的描述。图像中物体的性质不能因为图像的平移、旋转、比例尺度的改变而发生变化。所以,在进行形状描述时,选择的描述符应具有平移不变性、旋转不变性、尺度不变性等特点。不但如此,选择的描述符还应该能够刻画形状的本质特点,使得该描述符具有良好的可分辨能力。

图像特征选择的原则特征提取是对模式所包含的输入信息进行处理和分析,将不易受随机因素干扰的信息作为该模式的特征提取出来。特征提取过程是去除冗余信息的过程,具有提高识别精度,减少运算量和提高运算速度的作用。良好的特征应具有四个特点:

(1)区别性

在理想情况下,分属于不同类别的对象的特征值应有明显差异。不同类别的某一特征值相差越大,则以这个特征区分不同类别的能力越强,特征的可区别性可以用类间距离来度量。

如三角形和圆这两类,有面积计算得到的类间距比较小,而形状指数的类间距离非常大,由于两类样本各自内部的形状指数基本相同,特征方差接近为0,因此类间距离表现为比较大。如果选择特征“形状指数”作为分类的依据,其可区别性较高;如果选择特征“面积”作为分类依据,其可区别性就较低。

(2)可靠性

在同一类别内的所有对象的某一特征值应尽可能地接近。类内特征值越接近,表明用这个特征值来识别这类对象的可靠性越高。

如一组不同大小的圆,若选择特征“面积”作为将其和其他类别相区分的依据,其可靠性较低,同一圆类内的不同样本的面积相差较大,而选择特征“形状指数”作为分类的依据,其可靠性就很高,同一圆类内各个个样本的形状指数基本相同。特征的可靠性是类别内样本属性趋同性的直接表现。

(3)独立性

如果必须采用多个特征进行分类时,这些特征之间应当尽可能是互不相关的。如两个高度相关的特征基本上反映了对象的同一属性,则可将其组合,而不宜单独采用。

如在几何形状分类时,形状面积和周长这两个特征之间高度相关,而形状面积和形状指数之间也有一定的相关性,但相关程度比较低。在一个识别系统中,特征的可区别性、可靠性和独立性都是针对整个系统的组成而言。对于单个对象,特征的可区别性、可靠性没有参照和对比意义。

3.1 矩形度

用目标图像的面积和包围该图像的最小的矩形面积之比作为目标矩形度的一种度量参数,记为


v2-99b29d39b06b64c033d7ee4b257d51e7_b.jpg

(3-1)


其中

v2-0667d5748736f72095fe8c196aa22beb_b.jpg

表示目标图像的面积,

v2-6f79d8cd3af975586322110027c933a6_b.jpg

表示包围该图像的最小矩形的面积。R的大小能反映目标物体和矩形的接近程度。矩形度的值限定在0到1之间。

3.2 圆形度

对于面积一定的图形,一般周长越小,圆形表面越光滑,越接近圆;反之,周长越大,则圆形表面褶皱越多,形状也就越复杂。基于这个原因,一般采用圆形度来衡量图形偏向圆形状的程度。形状的圆形度是指目标物体的周长平方和其面积之比,记为



v2-8107753043bb5fd008cdf97f3262b775_b.jpg

(3-2)



v2-3865c9be8e00f8c448d910cf7e26ca29_b.jpg

其中:P表示图形的周长,A表示周长所围的面积。理论上讲,圆的圆形度为1.0,正方形的圆形度为 =0.79,正三角形的圆形度为

v2-3cb364be6cf8fc2fc13eb358d7bbc14d_b.jpg

=0.60.

另外,圆形度还有两个计算公式:



v2-83fef0ac0aedc607e90f2f14aed5b417_b.jpg

(3-3)


其中,A为区域面积,

v2-4b37456bb3a9df0cdb6a0cbdb36cad32_b.jpg

为区域最小外接圆面积。该指标同样认为圆形区域最紧凑,其紧凑度为1。在计算中采用最小外接圆面积作为衡量区域形状的标准。



v2-2f8b924e7eca113f89809ad40d5b8380_b.jpg

(3-4)

其中,A为区域面积,L为区域最长轴长度。该指标噎人为圆形为标准形状,但它只考虑了最长轴的长度,只能概略地反映连通区域的形状。

3.3

当物体是一些简单的几何图像,用以上的形状描述参数物体比较合适。如果图像的边界特征复杂,用以上的参数来描述物体的形状比较困难。对于复杂的物体,我们可以通过矩和轮廓描述符来描述复杂物体。矩特征是建立在对一个区域内部灰度值分布的统计分析基础上的,是一种统计平均的描述,可以从全局观点描述对象的整体特征。矩是一种线性特征,矩特征对于图像的旋转、比例尺度、平移具有不变性,因此可以用来描述图像中区域的形状特性。

3.4 不变矩

二维矩不变量理论是在1962年由美籍华人学者胡贵明提出的,并将矩用于形状识别。对于连续图像二维函数f(x,y),其(p+q)阶矩定义为如下黎曼积分形式:



v2-1bc8f5926680e37f70cff0c339f934cb_b.jpg

(3-5)


式中p,q=0,1,2,L。根据唯一性定理(Papoulis,1965),若f(x,y)是分段连续的,即只要在xy平面区域有非零值,则所有的各阶矩均存在,且矩序列{

v2-54cb7fb5ee39fb526f1cfd0d40f16a4c_b.jpg

}

唯一的被f(x,y)所确定。反之,{

v2-54cb7fb5ee39fb526f1cfd0d40f16a4c_b.jpg

}也唯一的确定了f(x,y)。

将上述矩特征量进行位置归一化,得到图像f(x,y)的中心矩:

对于数字图像f(x,y),用双重求和的形式代替上述积分,点(x,y)处的(p+q)阶矩定义为:



v2-6eae513890e18fa772987b6dcc0b8fd2_b.jpg

(3-6)


由此可见该中心几何矩也符合尺度不变性的特性。

3.5 基于不变矩的形状特征提取

3.5.1 特征提取步骤









图3-1 形状特征提取系统流程


1.确定用Canny算子对图像进行边缘提取,得到边缘图像;

2.对边缘图像进行轮廓跟踪,得到外轮廓图像;

3.对外轮廓图像进行预处理:首先平滑轮廓线得到连续的轮廓线,采用自

适应二值化的方法二值化该轮廓线,再细化轮廓线。最后得到清晰的连续

平滑、单像素、二值化的外轮廓图像;

4.进行种子填充,得到图像的外轮廓线所包围的目标区域;

5.计算目标区域的七个不变矩,构成这幅图像的形状特征向量;

6.对形状特征向量进行内部归一化处理,将特征值存入图像特征库。

3.5.2 边缘提取算子的确定

图像边缘蕴含了丰富的信息,是抽取图像形状特征的重要属性。因此,边缘算子必须能做到清晰,准确。

3.5.3 边缘提取常用算子

边缘提取的主要计算方法是基于方向导数掩模求卷积的方法,得到横向纵向的梯度图像和模值图像,然后根据梯度方向来进行模的极大值提取,获得需要的物体边缘。它是对目标轮廓线或边界的检出。常用的有Roberts算子、Prewitt算子、Sobel算子和Laplacian算子。在实际应用中,因为一些实际的因素,如光照、随机噪声的影响,往往会使图像模糊或出现孤立的边缘点,使边缘检测遇到很多难题。前面的几种方法在不同程度上存在着对噪声敏感的缺点。我们需要精确的检测出图像的边缘点,意味着以下三点:

1、低失误率,既要少将真正的边缘丢失,也要少将非边缘判为边缘;

2、高定位精度,检测出的边缘应在真正的边缘位置上;

3、对每个边缘有唯一的响应,得到的边缘为单边缘。

3.5.4 Canny算子

Canny算子是一类具有优良性能的边缘检测算子,它在许多图像处理领域得到广泛应用。从本质上讲,它并不只是简单的进行梯度运算来决定像素是否为边缘点,在决定一个像素是否为当前边缘点时,需要考虑其它像素的影响;也不是简单的边界跟踪,在寻找边缘点时,需要根据当前像素及前面处理过的像素来进行判断。它把边缘检测的问题转换为检测函数极大值的问题。其基本思想是:先对处理的图像选择一定的Gauss滤波器进行平滑滤波,然后采用一种称之为“非最大值抑制”(Non-maxSuppression)的技术,对平滑后的图像处理后,得到最后的边缘图像。Canny提出了判断边缘检测算子好坏的三个标准:

(1)信噪比准则

尽量做到不漏检又不误检使输出的信噪比最大。信噪比数值越大,提取的边缘质量越高;

(2)定位精度准则

检测出的边缘点位置距实际边缘点的位置最近,使得输出的图像定位精度高;

(3)单边缘响应准则

每个边缘点的响应是唯一的。每一个实际存在的边缘点和检测到的边缘点是一一对应的,得到的边缘宽度为单像素。以上面的准则为基础,利用泛函求导的方法导出一个由边缘定位精度和信噪比乘积组成的表达式,这个表达式近似于Gauss函数的一阶导数,此即为该函数的最好近似。Canny算子的算法实现主要包括5个部分:图像滤波、计算图像梯度、抑制梯度非最大点、搜索边界的起点、跟踪边界。

平滑图像时也用到高斯滤波器,用到的高斯函数为:


v2-50d300fe27a901d0c7e4c26b3151588e_b.jpg


(3-7)














图3-2 canny算子的基本流程

1、采用高斯滤波对图像进行滤波,滤波先对x方向进行,然后对y方向进

行,主要是用于去除图像中的噪声;

2、产生一个一维高斯分布函数,用来生成高斯滤波系数。理论上高斯数据

的长度应该是无限长的,但是实际的高斯数据只能是有限长的数据长度。

根据概率论的知识,选取[-3σ,3σ]之间的数据长度;

3、计算方向导数,利用原图像计算图像像素的方向导数;

4、计算梯度,利用方向导数的计算结果,采用二阶范数计算梯度;

5、抑制局部像素非最大梯度点,这个函数是Canny算子的重要部分,Canny

算子认为梯度图中只有某些点才有可能成为边界点或者是边界的起点;

6、根据梯度计算及经过非最大抑制后的结果设定阈值,这个函数也是Canny算子的重要部分,阈值的设定直接涉及到哪些像素点可能成为边界点。参数设置的值越高,检测出来的边缘点数目会越少;

7、利用函数寻找边界的起始点;

8、根据以上步骤的执行结果,从一个像素点开始进行搜索,搜索以该像素

点为边界起点的一条边界的所有边界点,函数采用了递归算法。

3.6 边缘提取实验结果及分析

3.6.1 边缘提取算法分析

相对来说,用Sobel算子进行边缘检测得到的图像效果较好,因为Sobel算子提供了精确的边缘方向估计。但是,应用Sobel算子得到的边缘图像存在着不连续、定位精度低、对噪声敏感、以及边缘是多像素点的问题。而Canny算子提取的边缘很好的克服了以上的缺点,不仅能很好的检测边缘,而且能抑制点状噪声。

v2-4d29faee236aaf7d298cdfe61894fbf8_b.jpg

3.6.2 图像形状识别结果
















图3-3 原始图像的边缘提取结果


采用canny边缘提取算法队员图像进行边缘提取。

所用基本程序代码如下:

format long
i=imread('t2.bmp');
imshow(i);
a=rgb2gray(i);
bw=edge(a,'canny');
imshow(bw);



v2-43f9256c0ebfc0505309f84fe318be08_b.jpg






















图3-4 基于上图边缘提取及识别分类的结果


基于canny算法的边缘提取结果图,根据其圆形度及矩进行分类的结果,原图像的各种特征都不变,只是多出了形状的标注。

识别程序所用的核心程序代码如下:

a=max(khoangcach{k});
    b=min(khoangcach{k});
    c=dt(k).Area;
    dolech=a-b;
    vuong = c/(4*b^2)
    chunhat=c/(4*b*(a^2-b^2)^0.5);
    tamgiacdeu=(c*3^0.5)/((a+b)^2);
    elip =c/(a*b*pi);
    thoi= (c*( a^2 - b^2 )^0.5) / (2*a^2*b)
    if dolech < 10
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'圆')
    elseif (vuong < 1.05 ) & (vuong > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'正方形')
    elseif (elip < 1.05 ) & (elip > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'椭圆')
    elseif (thoi < 1.05 ) & (thoi > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'菱形')
    elseif ((chunhat <1.05) & (chunhat >0.95))
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'长方形')
    elseif  (tamgiacdeu < 1.05 ) & (tamgiacdeu > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'三角形')


其中a为图像中心到边缘的最大距离,b为图像中心到边缘的最小距离。如果图像为标准的话,各公式算出的结果应均为1。本程序允许有5%的误差,所以判断参数的范围都是在0.95到1.05之间。程序中各个公式都是根据各种形状的面积计算的特征来确定的。

如椭圆的面积为

v2-b99694f38723e5a9e8f5e0b325318855_b.jpg

程序先把图像的边缘提取出来,然后分别计算这几个参数,然后和预设的值逐个进行比较,直到判断出图像是什么形状。












v2-6485b4f0b247bcb4eb7446969f49f3b0_b.jpg























图3-5 基于sobel算法边缘提取及识别分类的结果


对椭圆进行边缘提取,并根据求出的圆形度判断出该图形为椭圆。

判断程序代码如下:

a=max(khoangcach{k});
b=min(khoangcach{k});
c=dt(k).Area;
elip =c/(a*b*pi);
elseif (elip < 1.05 ) & (elip > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'椭圆')





v2-35ca49dd7a14e865cc81f1ea97a34ddc_b.jpg
























图3-6 基于sobel算法边缘提取及识别分类的结果


对三角形进行边缘提取,并根据求出的圆形度和矩判断出该图形为三角形。

判断程序代码如下:

a=max(khoangcach{k});
b=min(khoangcach{k});
c=dt(k).Area;
tamgiacdeu=(c*3^0.5)/((a+b)^2);
elseif  (tamgiacdeu < 1.05 ) & (tamgiacdeu > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'三角形')


v2-fe08c045fd44040bfde49bfef74c38f2_b.jpg















对圆进行边缘提取,并根据求出的圆形度和矩判断出该图形为圆。

判断程序代码如下:

a=max(khoangcach{k});
b=min(khoangcach{k});
dolech=a-b;
if dolech < 10
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'圆')




v2-5f2f7f18307d77b6349e4d59f77935c6_b.jpg























图3-8 基于sobel算法边缘提取及识别分类的结果


对菱形进行边缘提取,并根据求出的圆形度和矩判断出该图形为菱形。

判断程序代码如下:

a=max(khoangcach{k});
b=min(khoangcach{k});
c=dt(k).Area;
thoi= (c*( a^2 - b^2 )^0.5) / (2*a^2*b)
elseif (thoi < 1.05 ) & (thoi > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'菱形')



v2-70f7ea6ba9de711ed64636e17b7e4ca6_b.jpg
























图3-9 基于sobel算法边缘提取及识别分类的结果


对正方形进行边缘提取,并根据求出的圆形度和矩判断出该图形为正方形。

判断程序代码如下:

b=min(khoangcach{k});
c=dt(k).Area;
vuong = c/(4*b^2)
elseif (vuong < 1.05 ) & (vuong > 0.95 )
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'正方形')




v2-40d2a7ce93ce1013a31b067887213b13_b.jpg


图3-10 基于sobel算法边缘提取及识别分类的结果


对长方形进行边缘提取,并根据求出的圆形度和矩判断出该图形为长方形。

判断程序代码如下:

a=max(khoangcach{k});
b=min(khoangcach{k});
c=dt(k).Area;
chunhat=c/(4*b*(a^2-b^2)^0.5);
elseif ((chunhat <1.05) & (chunhat >0.95))
            text(s(k).Centroid(1)-20,s(k).Centroid(2),'长方形')








v2-9302fd05ab82622747abe6f964d2a9a7_b.jpg
























对图中各进行边缘提取,并根据求出的圆形度和矩分别判断出各为什么图形并输出显示。



结 论

图像的形状特征相对于其它特征是比较难以精确提取,同时也是难以匹配的,寻找符合人眼感知特性的形状特征不是一个简单的工作。这是因为一方面图像的形状难以用简单的参数来描述;另一方面,当前的计算机处理技术对形状提取的参数难以准确处理。另外,图像的形状特征往往会因图像的尺寸、图像的旋转及平移而发生变化,因而这些因素都制约了基于形状特征的图像检索系统的发展。形状特征的表达必须以对图像中物体或区域的分割为基础,这是计算机视觉的困难问题之一,至今没有很好的解决。因为目前的技术无法做到准确而稳健的自动图像分割。

本次论文根据边缘提取的算法,把各种图像的边缘提取出来,再根据各种形状的图像的圆形度,矩形度来判断出图中的图形是正方形还是三角形还是圆或是椭圆与菱形。从仿真结果来看,本次的程序基本达到题目的要求。

但本次仿真主要是根据图像的形状进行识别,在以后可以根据图像的纹理和色彩来对图像进行进一步的分类识别,可以把三者结合起来,这对提高图像识别的准确性会有很大的提升。这可以运用在图像自动识别分类上,会在图像智能检索领域有很大用处。

参考文献

[1]徐明远,刘增力,《MATLAB仿真在信号处理中的应用》,西安电子科技大学出版社,2007.11.

[2]于万波,《基于MATLAB的图像处理》,清华大学出版社,2008.3.

[3] Bing He, Tian-Yu Ma (2002) VC++ Digital Image Processing Techniques, People Post Pulishing, Beijing.

[4]飞思科技产品研发中心,《MATLAB 7.0辅助图像处理》,电子工业出版社,2003.1.

[5]章毓晋,《图像处理与分析》,北京清华大学出版社 2004.7.

[6]Ming-Yang Chern, Yi-Hsiang Lu (2005) Design an integration of parallelHough-transform chips for high-speed line detection. The 11th InternationalConference Digital Object Identifier, vol.2:42-46.

[7]张志涌,《精通MATLAB6.5》, 北京北航电子版,2002.12.

[8]孙家广,杨长贵,《计算机图形学》, 清华大学出版社,1995.5.

[9]L.G.Roberts, Machine Perception of Three-Dimension Solids, in Optical and Electro-Optimal Information Processing, J.t.Tippett.et al, Ed.Cambridge, MA: MIT Press, 1965, pp.159-197.

[10]闫敬文,《数字图像处理MATLAB版》,国防工业出版社,2007.2.

[11]陈杨,陈荣娟,《MATLAB6.X图像编程与图像处理》,西安电子科技大学出版社,2002.10.

[12]Byeong Rae Lee,Kyungsoo Park:Adaptive Local Binarization Method for Recognition of Vehicle License PIates.IWCIA 2009:646~655.

[13]周新伦,柳建,《数字图像处理》,国防工业出版社,1986.3.

[14]李信真,车明刚,《计算方法》,西安西北工业大学出版社,2000.8.

[15] Arno Löwe. MATLAB und SIMULINK . Chemische Reaktionstechnik,2009, 10(1002):5-24.

[16]陈桂明,张明照,《应用MATLAB语言处理信号与数字图像》,科学出版社,2000.5.

[17]程俊鑫.基于灰度图像的边缘检测方法研究:(硕士学位论文).太原:太原理工大学,2008.

猜你喜欢

转载自blog.csdn.net/TuTu998/article/details/120177049