matlab编程实现Harris角点检测算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

img=imread('Lena.bmp');[m,n]=size(img);tmp=zeros(m+2,n+2);tmp(2:m+1,2:n+1)=img;%扩展图像边缘1个像素Ix=zeros(m+2,n+2);Iy=zeros(m+2,n+2);Ix(:,2:n+1)=tmp(:,3:n+2)-tmp(:,1:n);%x方向上的差分Iy(2:m+1,:)=tmp(3:m+2,:)-tmp(1:m,:);%y方向上的差分Ix2=Ix(2:m+1,2:n+1).^2;Iy2=Iy(2:m+1,2:n+1).^2;Ixy=Ix(2:m+1,2:n+1).*Iy(2:m+1,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:mforj=1:nM=[Ix2(i,j)Ixy(i,j);Ixy(i,j)Iy2(i,j)];%构造Hessian矩阵R(i,j)=det(M)-0.06*(trace(M))^2;%角点判定公式endendRmax=max(max(R));loc=[];%记录角点位置tmp(2:m+1,2:n+1)=R;%扩展图像边缘1个像素fori=2:m+1forj=2:n+1iftmp(i,j)0.01*Rmax%要求矩阵R中的每个元素值大于0.01倍的最大值sq=tmp(i-1:i+1,j-1:j+1);sq=reshape(sq,1,9);sq=[sq(1:4),sq(6:9)];iftmp(i,j)sq%局部非极大值抑制loc=[loc;[j-1,i-1]];endendendend%以下代码显示获取的Harris角点X=loc(:,1);Y=loc(:,2);subplot(1,2,1);imshow(img);title('原图')subplot(1,2,2);imshow(img);title('角点检测')holdonplot(X,Y,'*','color','g');holdoff

1 / 2
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功