数学实验:5-轮廓线的提取

上传人:pu****.1 文档编号:570090628 上传时间:2024-08-01 格式:PPT 页数:32 大小:472.50KB
返回 下载 相关 举报
数学实验:5-轮廓线的提取_第1页
第1页 / 共32页
数学实验:5-轮廓线的提取_第2页
第2页 / 共32页
数学实验:5-轮廓线的提取_第3页
第3页 / 共32页
数学实验:5-轮廓线的提取_第4页
第4页 / 共32页
数学实验:5-轮廓线的提取_第5页
第5页 / 共32页
点击查看更多>>
资源描述

《数学实验:5-轮廓线的提取》由会员分享,可在线阅读,更多相关《数学实验:5-轮廓线的提取(32页珍藏版)》请在金锄头文库上搜索。

1、图形轮廓线的提取图形轮廓线的提取实验四实验四1一、实验目的一、实验目的掌握图像轮廓线提取的简单方法掌握图像轮廓线提取的简单方法 了解了解matlab中基本的图像处理方式中基本的图像处理方式 了解图像轮廓线提取的应用背景了解图像轮廓线提取的应用背景了解数字图像的基本概念了解数字图像的基本概念 2二、问题描述二、问题描述从原始图像中,采取一定的方法,从原始图像中,采取一定的方法, 将图片中的人物、动物、植物或者其他将图片中的人物、动物、植物或者其他任何对象的特征轮廓线提取出来,任何对象的特征轮廓线提取出来, 使之成为一幅独立的黑白线条图使之成为一幅独立的黑白线条图 从而达到将物体与背景分开,从而达

2、到将物体与背景分开,物体与物体分开的效果。物体与物体分开的效果。3三、问题分析三、问题分析图像轮廓线是图像中两图像轮廓线是图像中两区域交界线区域交界线, 可以通过图像特征(如形状、颜色、纹理等)可以通过图像特征(如形状、颜色、纹理等)的变化情况来检测。的变化情况来检测。最简单的方法就是采用最简单的方法就是采用阈值检测法阈值检测法, 即将当前检测点的特征与周围点的特征进行比较,即将当前检测点的特征与周围点的特征进行比较, 若发现有较大的差异,若发现有较大的差异, 则认为当前检测点属于两区域的交界点。则认为当前检测点属于两区域的交界点。4四、背景知识四、背景知识数字图像数字图像是用一个数字阵列来表

3、示的图像是用一个数字阵列来表示的图像 其中每个数字表示图像的一个最小单位,称为其中每个数字表示图像的一个最小单位,称为像素像素 一幅一幅640480的图像,的图像,一幅数字图像可以用一个整数矩阵来表示一幅数字图像可以用一个整数矩阵来表示 矩阵元素的位置矩阵元素的位置(i,j)对应数字图像上的一个像素点对应数字图像上的一个像素点 矩阵元素的值矩阵元素的值f(i,j)对应像素点上的颜色灰度值对应像素点上的颜色灰度值 表示在长、宽方向上各分成表示在长、宽方向上各分成640、480个像素个像素51. 二值图像二值图像 指每个像素不是黑就是白,指每个像素不是黑就是白,它的矩阵一般取值它的矩阵一般取值0(

4、黑黑),或,或1(白白)。 其灰度值没有中间过度,其灰度值没有中间过度,62. 灰度图像灰度图像 指每个像素由一个量化后的灰度级来描述,指每个像素由一个量化后的灰度级来描述, 灰度图像中不包含彩色信息。灰度图像中不包含彩色信息。可以是可以是0255(从纯黑到纯白从纯黑到纯白)之间的任何值,之间的任何值, 值越接近值越接近0就越黑,越接近就越黑,越接近255就越白,就越白, 73. 彩色图像彩色图像 图像彩色模式图像彩色模式一般情况下使用一般情况下使用RGB模式模式 所有的颜色都可以由所有的颜色都可以由R,G,B三基色组合而成三基色组合而成 三种基色的灰度分别用一个字节表示,三种基色的灰度分别用

5、一个字节表示, 三基色间不同的灰度组合可以形成不同的颜色三基色间不同的灰度组合可以形成不同的颜色 8颜颜色色红红绿绿蓝蓝黄黄紫紫青青白白黑黑灰灰红红 R25500 25525502550 128绿绿 G0 2550 25502552550 128蓝蓝 B002550 2552552550 128每一个颜色,每一个颜色,由其红、绿、蓝三色的强度值联合决定由其红、绿、蓝三色的强度值联合决定4. 常见的颜色值常见的颜色值95. 图形文件的读取图形文件的读取Aimread(FILENAME,FMT)FILENAME:文件名文件名FMT:文件格式文件格式A=imread(c:matlab6p5worki

6、mage2color.jpg);数组数组A:返回的该图像的数据值返回的该图像的数据值B=imread(c:matlab6p5workimage3gray,jpg);例如例如:10可以用可以用 size 来来求数组的大小求数组的大小比如:比如:D = size( A )对二值图和灰度图,对二值图和灰度图,A是二维数组是二维数组对彩色图,对彩色图,A是三维数组是三维数组11imhist :显示数字灰度直方图显示数字灰度直方图 figure :新开一个图形窗口。新开一个图形窗口。image:显示数字真彩图像。显示数字真彩图像。6. 显示图片或者图形显示图片或者图形imshow:显示数字图像。显示数字

7、图像。pixval:读取光标所指像素的坐标和灰读取光标所指像素的坐标和灰度值。按住鼠标拖曳,可显示距离。度值。按住鼠标拖曳,可显示距离。 imwrite :将图像数据保存到图像文件中将图像数据保存到图像文件中 12五、实验过程五、实验过程图像轮廓线提取:图像轮廓线提取:指从原始图像中,以手动或自动的方法,指从原始图像中,以手动或自动的方法,将图片中人物等对象的边界将图片中人物等对象的边界(轮廓线轮廓线)提取出来,提取出来,使之成为一幅独立的黑白线条图。使之成为一幅独立的黑白线条图。本实验利用本实验利用Matlab强大的矩阵运算功能,强大的矩阵运算功能,将一般图像处理化为对矩阵的运算变换,将一般

8、图像处理化为对矩阵的运算变换,从全新的角度研究提取图形轮廓线。从全新的角度研究提取图形轮廓线。131. 灰度图轮廓线提取灰度图轮廓线提取轮廓线上点,与其相邻点的灰度值有一定的跳跃,轮廓线上点,与其相邻点的灰度值有一定的跳跃,故通过灰度值的对比,就可以将这些点提取出来。故通过灰度值的对比,就可以将这些点提取出来。为了简单,去掉了图像边框上所有象素点,为了简单,去掉了图像边框上所有象素点,每个象素点,与其周围的每个象素点,与其周围的8个点作比较,个点作比较,若若灰度灰度差值大于某规定值,就是轮廓线上的点。差值大于某规定值,就是轮廓线上的点。14算法的关键部分算法的关键部分1. 将矩阵从将矩阵从8位

9、无符号型变成双精度的数值,位无符号型变成双精度的数值,2. 将每个值除以将每个值除以255,调整为,调整为01之间的小数,之间的小数,3. 将这些值用正弦函数做变换,再放大将这些值用正弦函数做变换,再放大40倍,倍,其目的是为了在进行比较灰度值的时候,其目的是为了在进行比较灰度值的时候,方便自定义各种差值。方便自定义各种差值。15读取指定的图片读取指定的图片进行非线性变换进行非线性变换提取轮廓线计算与判断提取轮廓线计算与判断显示轮廓线图形显示轮廓线图形提取图像轮廓线流程提取图像轮廓线流程16运行程序运行程序:linegray(flower.jpg,20)参数参数1:灰度图名:灰度图名 参数参数

10、2:自定义的灰度差值:自定义的灰度差值 17运行程序运行程序:linegray(image3gray.jpg,6)参数参数1:灰度图名:灰度图名 参数参数2:自定义的灰度差值:自定义的灰度差值 182. 彩色图轮廓线提取彩色图轮廓线提取彩色图片经过彩色图片经过imread函数读取后,函数读取后,每个象素点都由红绿蓝三色的强度值一起定义,每个象素点都由红绿蓝三色的强度值一起定义,所以生成的是一个所以生成的是一个3维的(维的(M,N,3)矩阵矩阵,矩阵平面(:,:,矩阵平面(:,:,1)是红色强度值,)是红色强度值,矩阵平面(:,:,矩阵平面(:,:,2)是绿色强度值,)是绿色强度值,矩阵平面(:

11、,:,矩阵平面(:,:,3)是蓝色强度值。)是蓝色强度值。19在算法上,采用与灰度图类似的原理,在算法上,采用与灰度图类似的原理,对每个单色矩阵作轮廓线计算和判断,对每个单色矩阵作轮廓线计算和判断,针对三种颜色,可以提取生成相应的轮廓线针对三种颜色,可以提取生成相应的轮廓线20运行程序运行程序:linecolor(image3color.jpg,20)参数参数1:彩色图名:彩色图名 参数参数2:自定义的灰度差值:自定义的灰度差值 21运行程序运行程序:linecolor(image2color.jpg,6)参数参数1:彩色图名:彩色图名 参数参数2:自定义的灰度差值:自定义的灰度差值 22六、

12、结论与应用六、结论与应用1. 在前面算法中,事先排除边框上的点,在前面算法中,事先排除边框上的点,位置都不相同,这样就造成了算法的累赘冗余。位置都不相同,这样就造成了算法的累赘冗余。是为了得到比较精简实用的算法,是为了得到比较精简实用的算法,因为对于边框上的点,其参考点的数量和因为对于边框上的点,其参考点的数量和232. 在前面灰度图和彩色图的算法中,在前面灰度图和彩色图的算法中,对图片数据矩阵进行了非线性变换,对图片数据矩阵进行了非线性变换,是为了更好的调节自定义强度值的差值,是为了更好的调节自定义强度值的差值,控制变换后的数值都在控制变换后的数值都在040的范围,的范围,也可以使用其他离散

13、方式。也可以使用其他离散方式。243. 由于噪声和模糊的存在,由于噪声和模糊的存在,轮廓线可能会变宽或在某些点处发生间断。轮廓线可能会变宽或在某些点处发生间断。可以通过减小可以通过减小n值来减少断点,值来减少断点,但是轮廓线会变粗,甚至出现了模糊的散点。但是轮廓线会变粗,甚至出现了模糊的散点。因此需要寻找一个合适的因此需要寻找一个合适的n值,值,使断点不至于太多,轮廓线也不会太黑糊。使断点不至于太多,轮廓线也不会太黑糊。25原图原图n2n5n10264. 导数算子具有突出灰度变化的作用,导数算子具有突出灰度变化的作用,灰度变化较大的点,对应的导数值比较高,灰度变化较大的点,对应的导数值比较高,

14、因此可用导数值作为像素点的边界强度,因此可用导数值作为像素点的边界强度,通过设置门限的方法,提取边界点集,通过设置门限的方法,提取边界点集,对于数字图像,应该采用差分运算代替求导。对于数字图像,应该采用差分运算代替求导。275. 梯度是方向导数取得最大值的方向,梯度是方向导数取得最大值的方向,方向导数的最大值是称为梯度模,方向导数的最大值是称为梯度模,利用梯度模算子来检测边缘是一种很好的方法,利用梯度模算子来检测边缘是一种很好的方法,它不仅具有位移不变性,还具有各向同性。它不仅具有位移不变性,还具有各向同性。286. MATLAB图像工具箱中的图像工具箱中的edge函数函数edge函数可以实现

15、检测边缘的功能,函数可以实现检测边缘的功能,例如例如:BW = edge(I,sobel,direction)采用采用Sobel算子进行边缘检测算子进行边缘检测Direction:可以指定算子方向可以指定算子方向取值:取值:horizontal、vertical、both29例子:用三种算子进行边缘检测例子:用三种算子进行边缘检测I=imread(image3gray.jpg);subplot(2,2,1); imshow(I) ; title(原图原图)W1=edge(I,roberts);subplot(2,2,2); imshow(W1) ; title(用用Roberts算子算子)30例子:用三种算子进行边缘检测例子:用三种算子进行边缘检测W2=edge(I,sobel); subplot(2,2,3); imshow(W2) ; title(用用Sobel算子算子 )W3=edge(I,log);subplot(2,2,4); imshow(W3) ; title(用拉普拉斯高斯算子用拉普拉斯高斯算子)317. 图像轮廓线提取类似于边缘检测,图像轮廓线提取类似于边缘检测,提取轮廓线被应用于许多方面,提取轮廓线被应用于许多方面,比如比如机器视觉、模式识别机器视觉、模式识别等。等。32

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号