基于MATLAB的水果识别的数字图像处理 (1).docx
《基于MATLAB的水果识别的数字图像处理 (1).docx》由会员分享,可在线阅读,更多相关《基于MATLAB的水果识别的数字图像处理 (1).docx(31页珍藏版)》请在冰豆网上搜索。
图像处理(报告)
题目:
基于MATLAB的水果识别的数字图像处理
指导教师:
职称:
教授
学生姓名:
学号:
专业:
院(系):
完成时间:
2016年5月1日
目录
第一章绪论 1
第二章数字图像处理基础 2
2.1图像采集 2
2.1.1图像的采样 2
2.1.2图像的量化 5
2.2图像处理的编程基础 9
2.3图像的基本操作 9
2.3.1图像读入方法 9
2.3.2图像显示方法 10
第三章图像特征提取与分类 10
3.1总体设计思路 10
3.2图像预处理 11
3.2.1图像数据获取 11
3.2.2图像二值化处理 12
3.2.3图像边缘检测处理 15
3.3图像特征参数计算 17
3.4结论 20
3.5结束语 22
参考文献 23
第一章绪论
随着计算机的普遍使用,人类已经进入了一个高速发展的信息化时代,图像处理技术也愈来愈成为科学技术领域中必不可少的手段。
计算机图像处理及识别是计算机应用技术的一个重要方面,图像识别所提出的问题,是研究用计算机代替人们自动的去处理大量的物理信息,解决人类生理器官所不能识别的问题,从而部分代替人的脑力劳动。
它属于模式识别的范畴,也可以把模式识别狭义的理解为图像识别。
图像识别与图像处理的关系非常密切,互相交错,很难把它们截然分开。
为了进行图像识别,首先要进行图像处理,而有时候处理和识别是同时进行的。
一般来说,图像处理包括图像编码,图像增强,图像压缩,图像复原,图像分割等内容。
对图像处理环节来说,输入是图像(通常是处理过的图像),输出是类别和图像的结构分析。
在图像识别的特征提取过程中,常常也包括图像的分割。
我国是世界蔬菜,水果的生产大国,总产量均居世界第一位。
但由于品种结构不合理,产后商品化处理技术和设备落后,导致产品缺乏市场竞争力,出口数量少,价格低。
在我国,水果分级分类基本上仍由人工完成。
我国拥有世界最大的劳动力市场,人工拣选,分级果蔬产品是现代农副产品分类加工的主要方式。
这种方式虽然成本低廉,但却违背了解放生产力的根本目标,同时也带来了诸多无法客服的缺点:
劳动量大,生产率低。
机械分拣具有短时,高效等特点。
因此,研究和开发水果自动实时分类系统具有很重要的意义。
通过研究这个课题不但可以加深对图像处理基本思想的理解和对其方法的掌握,还熟悉了图像处理中的精髓内容-------目标分类识别。
本课题的研究具有分厂重要的经济和使用价值,应用前景十分广阔。
因此,很有必要对本课题进行深入细致的研究。
本课题以各种常见的水果识别为例,通过MATLAB编程,介绍了数字图像识别的一种基本方法,包括对图像的预处理以及特征提取,并根据不同水果的特征进行识别和分类,实现智能识别与处理的目的。
2
第二章数字图像处理基础
2.1图像采集
在进行图像处理之前,需要对图像进行采集,而图像经过采光设备采集后,得到的是连续的模拟信号,但计算机仅仅能够处理离散化的信息,因此,为了使图像能够在计算机里进行存储和处理,必须先将其进行数字化处理。
由于大多数传感器的输出是连续电压波形,所以为了产生一副数字图像,需要把连续的感知数据转化为数字形式,就要进行相应的处理,其处理分为两个步骤进行,即采样和量化。
采样就是将连续的图像空间的电压转换成离散采样集合的操作;量化就是图像函数值的数字化处理。
2.1.1图像的采样
对于图像的采样可以采取不同的措施,这些采样措施包括垂直方向的采样,水平方向的采样,二维采样等。
在实际应用时,要根据不同的需要选择适当的方式进行采样。
例如,在Vid-icon真空管摄像机中,采用行扫描方式形成一行行的视频信号结构,如图2-1和2-2所示。
在模拟信号送到采集卡后,要对其做垂直方向的采样,如图2-3所示,这就形成了矩形像元,称为Pixel点阵。
CCD摄像机由半导体光敏阵列组成,在使用CCD摄像机采样时,靶面直接对图像做点阵采样,将连续变化的二维图像投影到半导体光敏阵列,形成二维像元Pixel,如图2-3所示。
采样一般按等间距进行,称为均匀采样,如图2-4所示。
均匀采样是从空间上连续变化的图像中,按一定的数据和间隔采集数据,将图像在空间上分割成规则排列的一系列离散数据点的过程。
有时根据需要也可以采用非均匀采样,在变化比较剧烈,细节丰富的区域用较大的采样密度,在变化缓慢,细节较少的平缓区或背景区用较稀的采样密度,这种采样被称为自适应采样方法,如图2-5
图2-1
图2-2
图2-3
图2-4
图2-5
采样频率是指单位时间内采样的次数。
采样频率越高,得到的图像样本越逼真,图像的质量越高,但要求的存储量也越大。
实际应用中,原图像中的画面越复杂,色彩越丰富,则采样间隔应越小,即采样频率越高。
由于二维图像的采样时是一维的推广,要从取样样本中精确地复原图像,图像采样的频率必须大于或等于原图像最高频率分量的两倍,这就是图像采样的奈奎斯特定理。
2.1.2图像的量化
图像量化就是将采样得到的图像函数值(灰度值或颜色)进行数字化,通常每个像素的灰度值量化到0~255共256个灰度级。
以图2-6中的水平线AB的灰度值采样为例。
假设水平方向的像素个数为640,将水平方向分成640份,每一个等份中读取一个电压的采样值,作为对该像素采样的结果,见图2-7;再将采样的电压按照0~255之间的灰度值进行映射,便是图像量化的结果,见图2-8.从以上各图可以看出,该图像的水平扫描线AB经过采样和量化处理后,得到的是离散的,数值化的结果,便于在计算机内进一步存储,表达和处理。
图2-6物体的水平扫描线
图2-7AB上采样电压
图2-8AB上像素采样量化结果
图2-9给出了图像的采样,量化以及得到数字图像的过程,图像经过采样,量化处理后,便可以利用计算机对其进行处理了。
数字图像是真实场景的一种近似的表示结果。
如图2-10所示,。
从该图中可以明显的看出,数字图像中并不含有客观物体中的全部精确信息。
图2-9图像采样量化及显示示意图
图2-10数字图像是真实场景的近似表示
2.2图像处理的编程基础
利用软件实现图像处理时,常用的工具有MATLAB,OpenCV以及CDib类方法。
其中MATLAB是20世纪70年代美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程负担,用Fortran编写的;1984年由MathWorks公司正式推向市场。
目前,MATLAB已成为自动控制领域的标准计算软件,被广泛应用于工程计算及数值分析领域,并已成为国际公认最优秀的工程开发环境。
MATLAB是一个交互式软件系统,具有很强的数值计算功能和编程功能;具有结构控制,函数调用,输入输出等程序语言特征;有丰富的工具箱,图像处理就是其中一个功能强大的工具。
MATLAB利用M文件来实现图像处理功能,在命令窗口运行M文件并显示运行结果。
MATLAB支持灰度图像,二值图像,真彩图像和索引图像4种类型的图像,编程效率较其它高级语言高。
2.3图像的基本操作
图像处理的过程主要包括三个部分:
图像读入,图像处理过程以及图像的显示。
下面先介绍图像读入和显示方法,图像处理的相关方法将在下一章介绍。
2.3.1图像读入方法
为了便于阐述图像运算的实现方法,在每一种运算前要进行读入图像的操作。
用MATLAB读入图像的方法如下:
I=imread(‘x.bmp’);
或
I=imread(‘x’,‘bmp’)
MATLAB读入图像的类型包括强度图像(即灰度图像),二值图像,索引图像和真彩图像。
2.3.2图像显示方法
MATLAB常用imshow()显示各类图像,其功能如下
Imshow(BW)显示二值图像,BW为黑白二值图像矩阵
Imshow(X,map)显示索引图像,X为索引图像矩阵,map为色彩图示
Imshow(I)显示灰度图像,I为图像矩阵
Imshow(RGB)显示RGB图像。
RGB为RGB图像矩阵
Imshow(I,[lowhigh])将非图像数据显示为图像,这需要考虑数据是否超出了所显示类型的最大允许范围,其中[lowhigh]用于定义要显示数据的范围
第三章图像特征提取与分类
3.1总体设计思路
本课题的任务是基于苹果,桔子,香蕉,菠萝和桃子的不同图像特征,把需要的水果从中识别(提取)出来。
总体框架图如3-1所示:
图3-1框架图
(1)计算机读取图像
为了在计算机上进行处理,必须把作为处理对象的模拟图像转换成数字图像。
图像信息的获取一般包括图像的摄取,转换和数字化等几个步骤。
(2)图像去噪和对比度增强
图像有噪声和对比度较差的时候,这些会给最终的识别分类带来困难。
所以必须先对所给图像进行去噪和增强对比度的预处理。
(3)图像的二值化
所谓图像的二值化,就是使图像上所有点的灰度值只有两种可能,不为“0”就为“255”,也就是使整个图像呈现出明显的黑白效果。
(4)图像特征提取,特征参数计算
本课题中需要提取的图像特征有:
面积,周长,弧度,颜色等等。
利用这些参数就能将水果相互区分开来。
3.2图像预处理
3.2.1图像数据获取
计算机图像是图像以计算机文件的形式存在的,实质上是一些数字代码,它与通常所说的(传统意义上的)图像最大区别是计算机的图像是数据化的,而不是模拟化的(数字图像是模拟图像数据化的结果),它是一般图像的离散采样,因而具有一些传统图像中所没有的概念:
在计算机上,由更基本的单元构成,这些基本单元称为“像素”。
像素是被逐点描述的,具有一个明确的位置和色彩数值。
“计算机读取图像”就是把图像以数字代码形式存储起来。
用Matlab实现图像读取比C++简单,图像数据以矩阵的形式存放,其扫描规则是从左向右,从上到下。
程序如下:
functionShibie()
CaiTu=imread('D:
\图片\fruit01.jpg');%读取图像
HuiTu=rgb2gray(CaiTu);
YuanTu=im2double(HuiTu);
figure
(1);imshow(YuanTu);title('灰度图像');%显示原彩色图像的灰度图像
其中“D:
\MATLAB6p1\work\fruit01.jpg”是图像文件存放的路径,YuanTu是一个矩阵,它以数字形式表示图像。
Matlab以“%”后的文字作注释。
读取的灰度图像如图3-2所示:
图3-2灰度图像
3.2.2图像二值化处理
二值化就是把具有多级灰度的输入图像变换成灰度值只有0或1两种值的输出图像。
图像阈值分割是最常用的图像分割技术,主要利用图像中背景与对象之间的灰度差异。
理想状态下,背景与对象之间的灰度差异很大,且同一个对象具有基本相同的灰度值。
为了得到理想的二值图像,一般采用阈值分割技术。
它对物体与背景有较强对比的图像的分割特别有效,计算简单而且总能用封闭、连通的边界定义不交叠的区域。
二值化处理的关键是确定适当的阈值Th。
所谓的阈值,是指在图像分割时,作为区分物体与背景像素的门限,大于或等于阈值的像素属于物体,其他像素则属于背景。
如果阈值过大,过多的目标点被误认为背景点,目标被削弱,甚至会消失;如果阈值过小,过多的背景点