Harris特征点检测算法在matlab中的实现(xk)

标签:
harris算法matlab特征点代码 |
分类: 技术博文 |
Harris特征点检测算法在matlab中的实现(xk)
一、Harris特征点检测算法是一种经典的特征提取算法。其思想是:
1、指定一图像,设该图像函数为f(x, y),图像像素点为(x, y),分别取像素点在x,y方向上的一阶微分导数Ix,Iy,由这两个导数及滤波函数相卷积构造Harris相关矩阵M。
2、将图像中的像素点划分为三种,普通点,边缘点,特征点(也叫角点,以下统称特征点)。
3、矩阵M有两个特征值。并且这这个矩阵为半正定矩阵,所以两个特征值大于等于0。根据这两个特征值的大小可以区分这三种点,找出特征点。
如果两个特征值都比较小,则该点是普通点;
如果两个特征值一个很大,一个很小,则该点为边缘点;
如果两个特征值都较大,则该点是特征点。
说明:Harris算法不受图像的平移旋转、光照变化等的影响,能够稳定的检测特征点。
二、Harris算法的数学表达式及说明如下:
(1)像素点分别在x,y方向上的一阶微分导数:
http://s3/bmiddle/b11f59aftd4a8aa3bca02&690
http://s15/mw690/b11f59aftd4a8ad60c28e&690
说明:① w为滤波函数,是均值为零、方差为σ的高斯模板,用于进行高斯平滑,消除孤立噪声点的影响。
(3)构造Harris算子:
http://s2/mw690/b11f59aftd4a8b1580af1&690
三、matlab代码及注释说明:
clear;
filename='1.jpg';
X =
imread(filename);
imshow(X);
Info = imfinfo(filename);
if (Info.BitDepth > 8)
end
newim = double(f) /
255;
fx = [-2 -1 0 1
2];
Ix = filter2(fx, newim);
fy = [-2; -1; 0; 1;
2];
Iy = filter2(fy, newim);
%-----------------------------------------------构造自相关矩阵------------------------------------------------
Ix2 = Ix .^ 2;
Iy2 = Iy .^ 2;
Ixy = Ix .* Iy;
clear
Ix;
clear Iy;
h=
fspecial('gaussian', [7 7], 2);
Ix2 =
filter2(h,Ix2);
Iy2 = filter2(h,Iy2);
Ixy = filter2(h,Ixy);
%--------------------------------------------------提取特征点---------------------------------------------------
height = size(newim, 1);
width = size(newim, 2);
result = zeros(height, width);
R = zeros(height,
width);
Rmax =
0;
k = 0.05;
for i = 1 : height
end;
T = 0.1 * Rmax;
%----------------------------在计算完各点的值后,进行局部非极大值抑制-----------------------------
for i = 2 :
height-1
for j = 2 : width-1
if (R(i, j) > T && R(i,
j) > R(i-1, j-1) && R(i, j) > R(i-1, j) &&
R(i, j) > R(i-1, j+1) &&R(i, j) > R(i, j-1)
&&R(i, j) > R(i, j+1) && R(i, j) > R(i+1,
j-1) && R(i, j) > R(i+1, j) && R(i, j) >
R(i+1, j+1))
result(i, j) = 1;
end;
end;
end;
i = 1;
for j = 1 :
height
for k = 1 : width
if( result(j, k) == 1)
corner (i, 1) = j;
corner (i, 2) = k;
i = i + 1;
end;
end;
end;
[posc, posr] =
find(result == 1);
figure,imshow(newim);
hold
on;
plot(posr, posc,
'r+');
四、结果截图
http://s12/mw690/b11f59aftd4a8969d3d2b&690
http://s5/mw690/b11f59aftd4a898e0d4f4&690
五、参考文献
【1】舒远,胡钊政,谈正.彩色图像特征点检测算子.微电子学与计算机.
【2】徐贤锋,檀结庆.一种改进的多尺度Harris特征点检测方法.计算机工程.