华工电信数学实验轮廓线的提取教材.docx_第1页
华工电信数学实验轮廓线的提取教材.docx_第2页
华工电信数学实验轮廓线的提取教材.docx_第3页
华工电信数学实验轮廓线的提取教材.docx_第4页
华工电信数学实验轮廓线的提取教材.docx_第5页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、题目:轮廓线的提取学院:电子与信息学院班级:2010 级信工五班学生:陈耿涛序号:3号一实验内容1任意选取一幅灰度图像和一幅彩色图像,对算法中若干关键语句中进行调整,得出不同的实验结果,对这些结果进行分析,并与 MATLAB自带的边缘检测做对比。2提出其它的轮廓线提取方法,与简单阈值法进行比较分析。二实验过程1. (1)代码灰度图轮廓线提取函数function linegray(pix,n)%灰度图的轮廓线提取figure;A=imread(pix);%读取指定的灰度图T=linecalculate(A,n);%计算矩阵轮廓线subplot(2,1,1);%将窗口分割为两行一列,下图显示于第一

2、行imshow(A);%显示原图像title(灰度图原图 );%图释axis image;%保持图片显示比例subplot(2,1,2);%下图显示于第二行imshow(T);%显示提取轮廓线后的图片title(提取轮廓线 );%图释axis image;%保持图片显示比例计算矩阵轮廓线函数(利用sin 函数进行非线性变换)function tlab=linecalculate(piclab,n) %计算矩阵轮廓线a,b=size(piclab);%a,b分别等于矩阵的行数和列数B=double(piclab);%将矩阵变为双精度矩阵D=40*sin(pi/2)*(1/255)*B);%将矩阵

3、进行非线性变换tlab=piclab;%新建同等大小矩阵for p=2:a-1%计算矩阵轮廓线for q=2:b-1if abs(D(p,q)-D(p,q+1)n|abs(D(p,q)-D(p,q-1)n|abs(D(p,q)-D(p+1,q)n|abs(D(p,q)-D(p-1,q)n|abs(D(p,q)-D(p-1,q+1)n|abs(D(p,q)-D(p+1,q-1)n|abs(D(p,q)-D(p-1,q-1)n|abs(D(p,q)-D(p+1,q+1)ntlab(p,q)=0;%置轮廓线点为黑色elsetlab(p,q)=255;%置非轮廓线点为白色end;end;end;所得图

4、像:1、linegray(E:pixx.jpg,1)灰度图原图提取轮廓线2、linegray(E:pixx.jpg,3.5)灰度图原图提取轮廓线计算矩阵轮廓线函数(利用log 函数进行非线性变换)function tlab=linecalculate1(piclab,n) %计算矩阵轮廓线a,b=size(piclab);%a,b分别等于矩阵的行数和列数B=double(piclab);%将矩阵变为双精度矩阵D=40*log(B./255+1)% 将矩阵进行非线性变换tlab=piclab;%新建同等大小矩阵for p=2:a-1%计算矩阵轮廓线for q=2:b-1if abs(D(p,q)

5、-D(p,q+1)n|abs(D(p,q)-D(p,q-1)n|abs(D(p,q)-D(p+1,q)n|abs(D(p,q)-D(p-1,q)n|abs(D(p,q)-D(p-1,q+1)n|abs(D(p,q)-D(p+1,q-1)n|abs(D(p,q)-D(p-1,q-1)n|abs(D(p,q)-D(p+1,q+1)ntlab(p,q)=0;%置轮廓线点为黑色elsetlab(p,q)=255;%置非轮廓线点为白色end;end;end;所画图像如下:1、linegray(E:pixx.jpg,2)灰度图原图提取轮廓线2、 linegray(E:pixx.jpg,4)灰度图原图提取轮

6、廓线彩色图轮廓线提取函数function linecolor(pix,n)%彩色图片轮廓线提取函数figure;A=imread(pix);%读取指定彩色图片subplot(3,3,2);imshow(A);title(彩色图原图 );axis image;T=A;T(:,:,2)=0;T(:,:,3)=0;subplot(3,3,4);imshow(T);axis image;title(红色强度原图 );T=linecalculate(A(:,:,1),n);%计算红色矩阵轮廓线subplot(3,3,7);imshow(T);axis image;title(红色强度轮廓线 );T=A;

7、T(:,:,1)=0;T(:,:,3)=0;subplot(3,3,5);imshow(T);axis image;title(绿色强度原图);T=linecalculate(A(:,:,2),n);%计算红色矩阵轮廓线subplot(3,3,8);imshow(T);axis image;title(绿色强度轮廓线);T=A;T(:,:,1)=0;T(:,:,2)=0;subplot(3,3,6);imshow(T);axis image;title(蓝色强度原图);T=linecalculate(A(:,:,3),n);%计算红色矩阵轮廓线subplot(3,3,9);imshow(T);

8、axis image;title(蓝色强度轮廓线);1、利用sin函数进行非线性变换,所画图像为:linecolor(E:/pingguo.jpg,3)彩色图原图红色强度原图绿色强度原图蓝色强度原图红色强度轮廓线绿色强度轮廓线蓝色强度轮廓线linecolor(E:/pingguo.jpg,3)彩色图原图红色强度原图绿色强度原图蓝色强度原图红色强度轮廓线绿色强度轮廓线蓝色强度轮廓线3、利用 log 函数进行非线性变换,所画图像为:linecolor(E:/pingguo.jpg,1)彩色图原图红色强度原图绿色强度原图蓝色强度原图红色强度轮廓线绿色强度轮廓线蓝色强度轮廓线linecolor(E:/

9、pingguo.jpg,2.5)彩色图原图红色强度原图绿色强度原图蓝色强度原图红色强度轮廓线绿色强度轮廓线蓝色强度轮廓线利用 MATLAB自带的边缘检测进行轮廓线提取。利用 canny 算子提取灰度图轮廓线function opegray(pix) %灰度图的轮廓线提取figure;A=imread(pix);%读取指定的灰度图B=A(:,:,1);T=edge(B,canny)%利用 nobel 算子计算矩阵轮廓线subplot(2,1,1);%将窗口分割为两行一列,下图显示于第一行imshow(B);%显示原图像title( 灰度图原图 );%图释axis image;%保持图片显示比例s

10、ubplot(2,1,2);%下图显示于第二行imshow(T);%显示提取轮廓线后的图片title( 提取轮廓线 ); %图释axis image;%保持图片显示比例所画图像为:灰度图原图提取轮廓线利用 laplace算子提取彩色图轮廓线function operator(pix)%彩色图片轮廓线提取函数figure;A=imread(pix);%读取指定彩色图片subplot(3,3,2);imshow(A);title(彩色图原图);axis image;T=A;T(:,:,2)=0;T(:,:,3)=0;subplot(3,3,4);imshow(T);axis image;title

11、(红色强度原图 );T=edge(A(:,:,1),log) %利用 laplace算子进行轮廓线提取subplot(3,3,7);imshow(T);axis image;title(红色强度轮廓线 );T=A;T(:,:,1)=0;T(:,:,3)=0;subplot(3,3,5);imshow(T);axis image;title(绿色强度原图 );T=edge(A(:,:,2),log) %利用 laplace算子进行轮廓线提取subplot(3,3,8);imshow(T);axis image;title(绿色强度轮廓线 );T=A;T(:,:,1)=0;T(:,:,2)=0;s

12、ubplot(3,3,6);imshow(T);axis image;title(蓝色强度原图 );T=edge(A(:,:,3),log) %利用 laplace算子进行轮廓线提取subplot(3,3,9);imshow(T);axis image;title(蓝色强度轮廓线 );所画图像为:彩色图原图红色强度原图绿色强度原图蓝色强度原图红色强度轮廓线绿色强度轮廓线蓝色强度轮廓线( 3)所得结论通过实验的过程我们可以发现:在利用简单阀值法进行轮廓线的提取时,n的取值不同对结果是有很大影响的。当n 比较小时,得到的边沿线比较粗,图像颜色比较深, n 比较大时,得到的边沿比较细,但是n 取太大

13、又容易使边线模糊,所以必须通过多次尝试取出合适的n 值。另外一个方面,利用不同的非线性变换,得到的结果也会有差异,所以同样需要多次尝试,选用合适的非线性变换,才能得到较好的轮廓线提取结果。利用matlab 自带的边缘检测函数进行轮廓线的检测时,使用不同的算子,得到的结果也是不同的。但是利用这种方法取出的边框质量比较粗糙。2.以上是用简单阀值发来提取图像的轮廓,通过上网的查找资料,我尝试了其他的一些方法。比如以下这一种:对于图像矩阵中的每一个点,我们可以计算出该点的梯度,即灰度值在该点的最大变化率,如果该梯度值大于我们预先设置的某个值,我们就认为该点是图像中边界上的点,否则就不是。这样,就可以实现图像中轮廓线的提取。至于每一点梯度的运算,由于图像矩阵中的数据是离散的,且每个点都有 8 个变化的方向,综合考虑这两种因素,我们可以将某一点的梯度定义为:Gf(x,y)=|xf(x,y)|+| yf(x,y)|;其中: xf(x,y)= f(x-1,y+1) + 2f(x,y+1) + f(x+1,y+1)- f(x-1,y-1) - 2f(x,y-1) - f(x+1,y-1); yf(x,y)= f(x-1,y-1) + 2f(x-1,y) + f(x-1,y+1)- f(x+1,y-1) - 2f(x+1,y) - f(x+1,y+1);三、总结分析这次的数学实验的内容相对比较难,所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论