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;