机器视觉与图像处理

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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检测')

相关文档
最新文档