华工数学实验作业5图像轮廓线提取技术.docx
- 文档编号:18520343
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:8
- 大小:214.41KB
华工数学实验作业5图像轮廓线提取技术.docx
《华工数学实验作业5图像轮廓线提取技术.docx》由会员分享,可在线阅读,更多相关《华工数学实验作业5图像轮廓线提取技术.docx(8页珍藏版)》请在冰点文库上搜索。
华工数学实验作业5图像轮廓线提取技术
《数学实验》报告
学院:
电子与信息学院
专业班级:
通信工程4班
学号:
201130301443
姓名:
李腾辉
实验名称:
图像轮廓线提取技术
实验日期:
2013.05.03
第五次实验
1.实验内容
任意选取一幅灰度图像和一幅彩色图像,对算法中若干关键语句中进行调整,得出不同的实验结果,对这些结果进行分析,并与MATLAB自带的边缘检测做对比。
2.实验过程
首先,用imread()函数将图像读取为矩阵,为便于程序运算,舍弃图像边缘的点,这样对图像的影响效果很小,可忽略。
第二步是对矩阵上的点进行非线性化(用sin或cos或tan等函数都可以),离散为从0到100的值。
其目的是为了在进行比较灰度值的时候,方便自定义各种差值。
最后,用户给定一个差值,根据这个值来比较检测点与其周围8个点的灰度值,若大于给定差值,则认为检测点位于轮廓线上,否则,不在轮廓线上。
开始使用sin进行非线性化,但是发现效果不佳,噪点太多,如下图
然后尝试改用tan进行非线性化,效果好很多,如下图
同样用tan进行非线性化的另一幅图像
源代码如下:
(上图中n的取值为8,其它的取值不太合适)
functiontlab=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;%新建同等大小矩阵
forp=2:
a-1%计算矩阵轮廓线
forq=2:
b-1
ifabs(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
end
end
再与系统自带的三种方法进行对比
由图可以看出,简单阈值法对于提取对比鲜明的图片轮廓线上具有一定的可行性,但是是算法效率较低,运行程序时经常出现假死状态;而系统自带的三种方法在运行效率方面就要快很多了,然而这些算法在图片的某些地方出现间断,不连续,因而要根据所选择的图像选择恰当的算法进行处理,才能取得好的效果。
下面是彩色图片的处理效果
使用简单阈值法分别对三种颜色的图像进行轮廓处理
使用系统自带函数与简单阈值法对比图
结论:
对于难以区分轮廓的图片,可以将原图分别变为R、G、B三原色图再进行轮廓提取,然后再选择效果最佳的一幅
源代码如下:
functionlinecolor(pix,n)%彩色图片轮廓线提取函数
figure;
A=imread(pix);%读取指定彩色图片
T=A;T(:
:
2)=0;T(:
:
3)=0;
subplot(3,5,1);imshow(T);
axisimage;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);
axisimage;title('绿色原图');
W7=edge(A(:
:
2),'roberts');
subplot(3,5,7);imshow(W7);
title('Roberts');
W8=edge(A(:
:
2),'sobel');
subplot(3,5,8);imshow(W8);
title('Sobel');
W9=edge(A(:
:
2),'log');
subplot(3,5,9);imshow(W9);
title('拉普拉斯高斯');
T2=linecalculate(A(:
:
2),n);%计算红色矩阵轮廓线
subplot(3,5,10);imshow(T2);
title('简单轮廓');
T=A;T(:
:
1)=0;T(:
:
2)=0;
subplot(3,5,11);imshow(T);axisimage;title('蓝色原图');
W7=edge(A(:
:
2),'roberts');
subplot(3,5,12);imshow(W7);
title('Roberts');
W8=edge(A(:
:
2),'sobel');
subplot(3,5,13);imshow(W8);
title('Sobel');
W9=edge(A(:
:
2),'log');
subplot(3,5,14);imshow(W9);
title('拉普拉斯高斯');
T3=linecalculate(A(:
:
3),n);%计算红色矩阵轮廓线
subplot(3,5,15);imshow(T3);
title('简单轮廓');
第二题
1.实验内容
提出其它的轮廓线提取方法,与简单阈值法进行比较分析。
通过网上查阅资料,得知轮廓提取的方法还有很多,传统的轮廓提取方法主要是利用边缘检测算子进行边缘的提取,然后根据目标物体的轮廓特点去除杂散的冗余边缘并进行边缘的修补,但提取的轮廓不一定是连续和单像素宽的,不便于计算机的下一步处理;还有数学形态学法,具有单像素宽、抗干扰等优点,但由于噪声随机分布的特征,物体边界领域受噪声干扰的点幅值接近阈值的像素点被检漏或误检,所以,提取的轮廓有时有断点的出现,并不是连续的轮廓,不能把轮廓的特征完全表达出来,给图像的进一步处理带来麻烦。
通过查阅万方数据库查到,现在比较先进的方法有先验知识法、水平集方法、活动轮廓模型方法、神经动力学方法、Randon变换法等,由于本人知识能力有限,无法一一列举个中利弊,但通过这次的查阅学习,让我大开眼界,看似简单的轮廓检测竟包含了如此多的数学理论,数学真是个无比强大的工具啊!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华工 数学 实验 作业 图像 轮廓 提取 技术