机器视觉与图像处理Word下载.docx
《机器视觉与图像处理Word下载.docx》由会员分享,可在线阅读,更多相关《机器视觉与图像处理Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
1.2使用Matlab绘制出高斯滤波器与拉普拉斯滤波器图形表达;
图形表达:
alf=3;
n=7;
%定义模板大小
n1=floor((n+1)/2);
%确定中心
fori=1:
n
a(i)=exp(-((i-n1).^2)/(2*alf^2));
forj=1:
b(i,j)=exp(-((i-n1)^2+(j-n1)^2)/(4*alf))/(4*pi*alf);
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;
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);
卷积运算图'
subplot(133),imshow(K);
相关运算图'
(2)拉普拉斯滤波:
h1=fspecial('
laplacian'
A=imread('
\Users\dell-5000\Pictures\lovewallpaper\25260-106.jpg'
K=rgb2gray(A);
B=imfilter(K,h1);
subplot(131),imshow(A);
subplot(132),imshow(K);
灰度图'
subplot(133),imshow(B);
)
题目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);
BW1=edge(I,'
canny'
figure,imshow(BW1);
matlabcanny检测'
2.Roberts算子:
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))
matlabRobert检测'
3.Sobel算子:
BW1=[-1,-2,-1;
0,0,0;
1,2,1];
BW2=[-1,0,1;
-2,0,2;
-1,0,1];
matlabsobel检测'
结论:
Roberts算子:
边缘定位准,但是对噪声敏感。
适用于边缘明显且噪声较少的图像分割。
Roberts边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。
经分析,由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。
Sobel算子:
其主要用于边缘检测,在技术上它是以离散型的差分算子,用来运算图像亮度函数的梯度的近似值,缺点是Sobel算子并没有将图像的主题与背景严格地区分开来,换言之就是Sobel算子并没有基于图像灰度进行处理,由于Sobel算子并没有严格地模拟人的视觉生理特征,所以提取的图像轮廓有时并不能令人满意
Canny算子:
该算子功能比前面几种都要好,但是它实现起来较为麻烦,Canny算子是一个具有滤波,增强,检测的多阶段的优化算子,在进行处理前,Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。
题目3角点与斑点检测
3.1使用Harris算法检测下图中角点(harris算法实现)
Harris算法:
[filename,pathname,~]=uigetfile('
dazuoye03.jpg'
if~ischar(filename)
return
end
str=[pathnamefilename];
pic=imread(str);
iflength(size(pic))==3
img=rgb2gray(pic);
[m,n]=size(img);
tmp=zeros(m+2,n+2);
tmp(2:
m+1,2:
n+1)=img;
Ix=zeros(m+2,n+2);
Iy=zeros(m+2,n+2);
Ix(:
2:
n+1)=tmp(:
3:
n+2)-tmp(:
1:
n);
Iy(2:
m+1,:
)=tmp(3:
m+2,:
)-tmp(1:
m,:
Ix2=Ix(2:
n+1).^2;
Iy2=Iy(2:
Ixy=Ix(2:
n+1).*Iy(2:
n+1);
h=fspecial('
gaussian'
[77],2);
Ix2=filter2(h,Ix2);
Iy2=filter2(h,Iy2);
Ixy=filter2(h,Ixy);
R=zeros(m,n);
fori=1:
m
forj=1:
n
M=[Ix2(i,j)Ixy(i,j);
Ixy(i,j)Iy2(i,j)];
R(i,j)=det(M)-0.06*(trace(M))^2;
Rmax=max(max(R));
loc=[];
n+1)=R;
fori=2:
m+1
forj=2:
n+1
iftmp(i,j)>
0.01*Rmax
sq=tmp(i-1:
i+1,j-1:
j+1);
sq=reshape(sq,1,9);
sq=[sq(1:
4),sq(6:
9)];
sq
loc=[loc;
[j-1,i-1]];
X=loc(:
1);
Y=loc(:
2);
subplot(1,2,1);
imshow(pic);
subplot(1,2,2);
holdon
plot(X,Y,'
*'
holdoff
3.2使用Log算子检测下图中斑点(Matlab:
log_Blob)
(1)构造LoG_Blob函数:
(2)构造draw函数:
(3)算法实现:
img=imread('
dazuoye04.jpg'
imshow(img);
pt=LoG_Blob(rgb2gray(img));
draw(img,pt,'
LOG'
个人体会:
在做题时,通过查找网上的资料才做出来,我觉得难点在于函数的书写上,函数写出来了,题目就做出来了。
题目4特征点匹配
4.1完成下列两图中的特征点检测与匹配
(1)算法实现:
>
i1=imread('
dazuoye05.jpg'
i2=imread('
dazuoye06.jpg'
i11=rgb2gray(i1);
i22=rgb2gray(i2);
imwrite(i11,'
v1.jpg'
'
quality'
80);
imwrite(i22,'
v2.jpg'
match('
Findingkeypoints...
879keypointsfound.
2163keypointsfound.
Found337matches.
(2)算法函数及结果:
如有侵权请联系告知删除,感谢你们的配合!