matlab怎么调用Harris角点检测函数

如题所述

您好,我来为你解答:closeall;clearall;clc;img=imread('rice.png');imshow(img);[mn]=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);E=zeros(m+2,n+2);Ix(:,2:n)=tmp(:,3:n+1)-tmp(:,1:n-1);Iy(2:m,:)=tmp(3:m+1,:)-tmp(1:m-1,:);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);Rmax=0;R=zeros(m,n);fori=1:mforj=1:nM=[Ix2(i,j)Ixy(i,j);Ixy(i,j)Iy2(i,j)];R(i,j)=det(M)-0.06*(trace(M))^2;ifR(i,j)>RmaxRmax=R(i,j);endendendre=zeros(m+2,n+2);tmp(2:m+1,2:n+1)=R;img_re=zeros(m+2,n+2);img_re(2:m+1,2:n+1)=img;fori=2:m+1forj=2:n+1iftmp(i,j)>0.01*Rmax&&tmp(i,j)>tmp(i-1,j-1)&&tmp(i,j)>tmp(i-1,j)&&tmp(i,j)>tmp(i-1,j+1)&&tmp(i,j)>tmp(i,j-1)&&tmp(i,j)>tmp(i,j+1)&&tmp(i,j)>tmp(i+1,j-1)&&tmp(i,j)>tmp(i+1,j)&&tmp(i,j)>tmp(i+1,j+1)img_re(i,j)=255;endendendfigure,imshow(mat2gray(img_re(2:m+1,2:n+1)));如果我的回答没能帮助您,请继续追问。
温馨提示:答案为网友推荐,仅供参考
相似回答