机器视觉与图像处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《机器视觉与图像处理》
课程大作业
专业:自动化
班级:1402
学号:************
姓名:***
2017.06.05
大作业说明
1.要求每位同学独立完成课程大作业;
2.鼓励组成课程小组,集体讨论研究,课程总结内说明小组成员;
3.允许借鉴网络、书籍上相关代码资源,但一定要切合题目内容;
4.根据题目要求,原理解释部分若需要公式,使用公式编辑器编辑;代码部分保证完整、可运行;结果部分黏贴原图;
5.作业鼓励将个人调试经验、学习心得等个性化内容总结。
题目1:高斯滤波器与拉普拉斯滤波器
1.1给出高斯滤波器与拉普拉斯滤波器数学表达式;
(1)给出高斯滤波器数学表达式:
(2)给出拉普拉斯滤波器数学表达式:
1.2使用Matlab绘制出高斯滤波器与拉普拉斯滤波器图形表达;图形表达:
alf=3;
n=7;%定义模板大小
n1=floor((n+1)/2);%确定中心
for i=1:n
a(i)= exp(-((i-n1).^2)/(2*alf^2));
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
subplot(121),plot(a),title('一维高斯函数' )
subplot(122),surf(b),title('二维高斯函数' )
1.3分别使用高斯滤波器和拉普拉斯滤波器对下列图片进行卷积
运算操作,是否有快速方法进行拉普拉斯滤波器卷积运算?
(1)高斯滤波:
I = imread('C:\Users\dell-5000\Pictures\lovewallpaper\25260-106.jpg'); H=rgb2gray(I);
Img = double(H);
alf=3;
n=10;
n1=floor((n+1)/2);
for i=1:n
for j=1:n
b(i,j) =exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
end
end
Img_n = uint8(conv2(Img,b,'same'));
K=uint8(imfilter(Img,b));
Img_n2=uint8(imfilter(Img,b,'conv'));
J=(Img_n2)-Img_n;
flag=mean(J(:))
subplot(131),imshow(I);title('原图')
subplot(132),imshow(Img_n);title('卷积运算图')
subplot(133),imshow(K);title('相关运算图')
(2)拉普拉斯滤波:
h1=fspecial('laplacian');
A=imread('C:\Users\dell-5000\Pictures\lovewallpaper\25260-106.jpg '); K=rgb2gray(A);
B=imfilter(K,h1);
subplot(131),imshow(A);title('原图')
subplot(132),imshow(K);title('灰度图')
subplot(133),imshow(B);title('相关运算图')
题目2:使用Canny算子边缘检测
2.1 列写出Canny算子检测边缘算法原理;
(1)图象边缘检测必须满足两个条件:一能有效地抑制噪声;二必须尽量精确确定边缘的位置。
(2)根据对信噪比与定位乘积进行测度,得到最优化逼近算子。这就是Canny 边缘检测算子。
(3)类似与Marr(LoG)边缘检测方法,也属于先平滑后求导数的方法。(4)Canny边缘检测算法:
step1:用高斯滤波器平滑图象;
step2:用一阶偏导的有限差分来计算梯度的幅值和方向;
step3:对梯度幅值进行非极大值抑制;
step4:用双阈值算法检测和连接边缘。
2.2 使用Canny算法对下图进行边缘检测,并对比其他边缘检测算法,如Sobel, Roberts等;
1.canny 算子:
I=imread('dazuoye02.jpg');
I=rgb2gray(I);
imshow(I);title('原图')
BW1=edge(I,'canny');
figure,imshow(BW1);
title('matlab canny检测')
2.Roberts 算子:
I=imread('dazuoye02.jpg'); K=rgb2gray(I);
BW1=[1,0;0,-1];
BW2=[0,1;-1,0];
J1=filter2(BW1,K);
J2=filter2(BW2,K);
K1=double(J1);
K2=double(J2);
M=(abs(K1) +abs(K2)); figure,imshow(uint8(M))
title('matlab Robert检测')
3.Sobel算子:
I=imread('dazuoye02.jpg'); K=rgb2gray(I);
BW1=[-1,-2,-1;0,0,0;1,2,1]; BW2=[-1,0,1;-2,0,2;-1,0,1]; J1=filter2(BW1,K);
J2=filter2(BW2,K);
K1=double(J1);
K2=double(J2);
M=(abs(K1) +abs(K2)); figure,imshow(uint8(M))
title('matlab sobel检测')