MATLAB——Harris角点检测

本文介绍了使用MATLAB进行Harris角点检测的方法,适用于棋盘标板的角点检测。通过计算图像梯度、形成矩阵M、计算响应值R并进行非极大值抑制来找出角点。实验显示,该方法对规则棋盘标板检测准确,但对不规则棋盘及边缘区域可能产生误差,且同一角点可能会被重复检测。
摘要由CSDN通过智能技术生成

为完成对棋盘标板的角点检测,特此记录。

角点:最直接的定义为在水平、垂直两个方向上变化均较大的点

最常用的角点检测算法为Harris角点检测方法,原理如下:

  1. 计算图像I(x,y)在X和Y两个方向的梯度Ix、Iy
  2. 计算图像两个方向梯度的乘积
  3. 使用高斯函数对Ix^2、Iy^2和Ixy进行高斯加权(取σ=1),生成矩阵M的元素A、B和C
  4. 计算每个像素的Harris响应值R,并对小于某一阈值t的R置为零
  5. 在3×3或5×5的邻域内进行非最大值抑制,局部最大值点即为图像中的角点

在matlab中对该方法进行了实验,代码如下:

function [posr,posc]=Harris1(in_image,a)
% 功能:检测图像harris角点
% in_image-待检测的rgb图像数组
% a--角点参数响应,取值范围:0.04~0.06
% [posr,posc]-角点坐标
in_image=rgb2gray(in_image);
I=double(in_image);
%%%%计算xy方向梯度%%%%%

fx=[-1,0,1];%x方向梯度模板
Ix=filter2(fx,I);%x方向滤波
fy=[-1;0;1];%y方向梯度模板(注意是分号)
Iy=filter2(fy,I);
%%%%计算两个方向梯度的乘积%%%%%
Ix2=Ix.^2;
Iy2=Iy.^2;
Ixy=Ix.*Iy;
%%%%使用高斯加权函数对梯度乘积进行加权%%%%
%产生一个7*7的高斯窗函数,sigma值为2
h=fspecial('gaussian',[3,3],2);
IX2=filter2(h,Ix2);
IY2&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值