华工数学实验一作业5一图像轮廓线提取技术.docx

华工数学实验一作业5一图像轮廓线提取技术.docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华工数学实验一作业5一图像轮廓线提取技术

《数学实验》报告学 院: 电子与信息学院专业班级:通信工程4班学 号:201130301443姓 名:李腾辉实验名称: 图像轮廓线提取技术实验日期:2013.05.03第五次实验实验内容任意选取一幅灰度图像和一幅彩色图像,对算法中若干关键语句中进行调整,得出不同的实验结果,对这些结果进行分析,并与MATLAB自带的边缘检测做对比。2.实验过程首先,用imread()函数将图像读取为矩阵,为便于程序运算,舍弃图像边缘的点,这样对图像的影响效果很小,可忽略。第二步是对矩阵上的点进行非线性化(用sin或cos或tan等函数都可以),离散为从0到100的值。其目的是为了在进行比较灰度值的时候,方便自定义各种差值。最后,用户给定一个差值,根据这个值来比较检测点与其周围8个点的灰度值,若大于给定差值,则认为检测点位于轮廓线上,否则,不在轮廓线上。开始使用sin进行非线性化,但是发现效果不佳,噪点太多,如下图然后尝试改用tan进行非线性化,效果好很多,如下图同样用tan进行非线性化的另一幅图像源代码如下:(上图中n的取值为8,其它的取值不太合适)function tlab=linecalculate(piclab,n) %计算矩阵轮廓线,引用参数在里面填入图片名.后缀,n为比较参数(取值为1-100),越大阈值取得越高[a,b]=size(piclab); %a,b分别等于矩阵的行数和列数B=double(piclab); %将矩阵变为双精度矩阵D=100*tan((pi/4)*(1/255)*B); %将矩阵进行非线性变换tlab=piclab; %新建同等大小矩阵for p=2:a-1 %计算矩阵轮廓线 for q=2:b-1 if 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))n tlab(p,q)=0; %置轮廓线点为黑色 else tlab(p,q)=255; %置非轮廓线点为白色 end endend再与系统自带的三种方法进行对比由图可以看出,简单阈值法对于提取对比鲜明的图片轮廓线上具有一定的可行性,但是是算法效率较低,运行程序时经常出现假死状态;而系统自带的三种方法在运行效率方面就要快很多了,然而这些算法在图片的某些地方出现间断,不连续,因而要根据所选择的图像选择恰当的算法进行处理,才能取得好的效果。下面是彩色图片的处理效果使用简单阈值法分别对三种颜色的图像进行轮廓处理使用系统自带函数与简单阈值法对比图结论:对于难以区分轮廓的图片,可以将原图分别变为R、G、B三原色图再进行轮廓提取,然后再选择效果最佳的一幅源代码如下:function linecolor(pix,n) %彩色图片轮廓线提取函数figure;A=imread(pix); %读取指定彩色图片T=A;T(:,:,2)=0;T(:,:,3)=0;subplot(3,5,1);imshow(T);axis image;title(红色原图); W1=edge(A(:,:,1),roberts); subplot(3,5,2); imshow(W1) ; title(Roberts); W2=edge(A(:,:,1),sobel); subplot(3,5,3); imshow(W2) ; title(Sobel ); W3=edge(A(:,:,1),log); subplot(3,5,4); imshow(W3) ; title(拉普拉斯高斯); T1=linecalculate(A(:,:,1),n); %计算红色矩阵轮廓线 subplot(3,5,5);imshow(T1); title(简单轮廓);T=A;T(:,:,1)=0;T(:,:,3)=0;subplot(3,5,6);imshow(T);axis image;title(绿色原图); W7=edge(A(:,:,2),roberts); sub

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档