ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Matlab实现Moravec算子

2021-10-12 22:58:34  阅读:186  来源: 互联网

标签:5x5 end Moravec sum 兴趣 Matlab 算子 col row


Moravec算子在4个方向上计算非归一化的影像局部灰度差方差,将最小值作为兴趣值的测度。该算子检测的特征点是那些影响强度值在每个方向上变化剧烈的点。

步骤:1、计算各像素的兴趣值

2、选出候选点(给定一经验阈值,将兴趣值大于该阈值的点作为候选点)。

3、选取候选点中兴趣值极大的点作为特征点

代码如下:

function N=moravec(filename,G)
F=imread(filename);    %导入图像
M=rgb2gray(F);   %转为灰度图像
figure(1);
imshow(M);
[row,col]=size(M); 
N=zeros(row,col);
w=5;               %5x5的窗口
k=floor(w/2);   %k值,向下取整
for i=3:row-3
    for j=3:col-3
        for d=i-k:i+k      %在5x5的窗口中进行计算
            for e=j-k:j+k
                for x=-k:k-1                                %第一步:计算各像素的兴趣值
                      v1=(M(i,j+x)-M(i,j+x+1))^2;   %横向
                       V1=sum(v1);
                       v2=(M(i+x,j+x)-M(i+x+1,j+x+1))^2;    %捺向
                       V2=sum(v2);
                       v3=(M(i+k,j)-M(i+k+1,j))^2;           %竖向
                        V3=sum(v3);
                        v4=(M(i-x,j+x)-M(i-x-1,j+x+1))^2;   %撇向
                        V4=sum(v4);
                        D=[V1,V2,V3,V4];
                        IV=min(min(D));                    %找出最小的值
                        if IV>G              %第二步:给定的经验阈值
                            M(d,e)=255;  %符合条件的像素让它呈现白色
                            N(i,j)=IV;
                        end
                end
            end
        end
    end
end
figure(2);
imshow(M);
figure(3);
imshow(N);
Q=zeros(row,row);
for h=1:row            %在一定窗口选兴趣值最大的点作为特征点
    for l=1:col
        for d=i-k:i+k      %在5x5的窗口中进行计算
            for e=j-k:j+k
                  Q(d,e)=N(d,e);
                  MAX=max(max(Q));
                  if N(d,e)<MAX&&N(d,e)~=0
                     N(h,l)=0;
                  end
            end
        end
    end
end
  figure(4);
 imshow(N);
end

运行结果:

 注:代码可能有点烦,有能力的同学可以自己该一下。

Moravec的缺点需要注意以下:

1、对影像边缘部分的检测较敏感

2、影像旋转时,会产生一定的重复点

3、容易受噪声的影像

标签:5x5,end,Moravec,sum,兴趣,Matlab,算子,col,row
来源: https://blog.csdn.net/qq_53150861/article/details/120734093

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有