Harris角点算子

对角点从两个不同的角度定义:一是角点是两个边缘的角点,二是角点是邻域内具有两个主方向的特征点。角点所在的邻域通常也是图像中稳定的、信息丰富的区域,这些领域可能具有某些特性,如旋转不变性,尺度不变性、仿射不变性

和光照度不变性。对角点的检测一般分为两类:基于图像边缘的检测方法和基于图像灰度检测方法。Harris算子属于基于图像灰度检测的方法。

评价角点检测算法性能优劣主要从以下五个方面来考虑:

准确性、定位性、稳定性、实时性、鲁棒性。

Harris角点检测的性质:

1、参数a对角点检测的影响:a值越大,将减小响应值R,降低角点检测的灵敏性,减少被检测角点的数量。a越小,则相反

2、Harris角点检测算子对亮度和对比度的变化不敏感

3、Harris角点检测算子具有旋转不变性

4、Harris角点检测算子具有尺度不变性

下面是Harris角点检测的Matlab代码实现:

<span style="font-size:14px;">function [posr,posc]=Harris1(in_image,a)
in_image=rgb2gray(in_image);
ori_im=double(in_image);
fx=[-1 0 1];
Ix=filter2(fx,ori_im);
fy=[-1;0;1];
Iy=filter2(fy,ori_im);
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy;
h=fspecial('gaussian',[7 7],2);
Ix2=filter2(h,Ix2);
Iy2=filter2(h,Iy2);
Ixy=filter2(h,Ixy);
[height,width]=size(ori_im);
R=zeros(height,width);
for i=1;height
    for j=1:width
        M=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];
        R(i,j)=det(M)-a*(trace(M))^2;
    end
end
Rmax=max(max(R));
t=0.01*Rmax;
for i=1:height
    for j=1:width
        if R(i,j)<t
            R(i,j)=0;
        end
    end
end
corner_peaks=imregionalmax(R);
countnum=sum(sum(corner_peaks));
[posr,posc]=find(corner_peaks==1);
figure;
imshow(in_image)
hold on
for i=1:length(posr)
    plot(posc(i),posr(i),'r+');
end</span>
处理结果如下:



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值