【特征检测】Harris角点检测中的数学推导

简介

本文主要是对Harris角点检测的数学公式进行推导,更加深入的掌握原理性的理论知识。

预备知识

椭圆的矩阵方程表示

在高中课本中,我们学习到标准椭圆及其方程(如下图所示):


其实,矩阵在运算中使用非常广泛,现将上述标准方程写成矩阵形式(方便接下来的处理):


椭圆半轴与系数矩阵的关系

         一个nxn的矩阵,可以求解其特征值,我们对上述系数矩阵(含a、b)进行求解,则可得到特征值与椭圆半轴(a、b)的关系,过程如下:


泰勒展开

一元函数的泰勒展开式:


二元函数泰勒展开式:


Harris角点检测原理

         Harris算法是利用的窗口内图像灰度的自相关性进行的,设定一个窗口,并在图像中移动,计算移动前与移动后窗口所在区域图像的自相关系数。


自相关函数计算如下,(x,y)为窗口中心位置,w(u,v)为权重(一般取高斯函数),L表示窗口,(u,v)表示窗口中的图像位置:



将近似值代入自相关函数,有:


将平方项展开并写成矩阵形式,有:


回到自相关表达式:


其中,

        经过上面的数学形式推导,已经得到了自相关函数的表达式。可以看得这也是一个椭圆的矩阵表示形式(非标准椭圆),因此其系数矩阵M的特征值与椭圆的半轴长短有关,这与上面预备知识中的结论一样。

假设M的特征值为λ1、λ2,则分以下三种情况:


通过上面的情况,计算出特征值后就可以判别是否是角点了。

当然,这样计算量非常大,因为图像中的几乎每个点都需要进行一次特征值的计算;下面给出一个经验公式:


detM表示M的行列式,traceM表示M的迹,R表示角点响应值。α为经验常数,一般在0.04至0.06之间取值。

判断准则:当R超过某个设定的阈值时,可认为是角点;反之,则不是。

如此,便可得到一幅图像中的角点了,最后在3x3或5x5的邻域内进行非极大值抑制操作即可。

参考文献

1、HarrisC,Stephens.M—A Combined Corner and Edge Detector[J],1988.

2、王永明、王贵锦,图像局部不变性特征与描述[M],2010.

  • 26
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
在MATLAB,可以使用Harris角点检测算法来进行特征匹配。Harris角点检测算法是一种经典的角点检测算法,它通过计算图像每个像素点的角点响应函数来识别角点。 下面是一个使用Harris角点检测特征匹配的示例代码: ```matlab % 读取两幅图像 image1 = imread('image1.jpg'); image2 = imread('image2.jpg'); % 转换为灰度图像 grayImage1 = rgb2gray(image1); grayImage2 = rgb2gray(image2); % 使用Harris角点检测算法检测角点 cornerPoints1 = detectHarrisFeatures(grayImage1); cornerPoints2 = detectHarrisFeatures(grayImage2); % 提取角点特征描述符 features1 = extractFeatures(grayImage1, cornerPoints1); features2 = extractFeatures(grayImage2, cornerPoints2); % 进行特征匹配 indexPairs = matchFeatures(features1, features2); % 选取匹配点对 matchedPoints1 = cornerPoints1(indexPairs(:, 1)); matchedPoints2 = cornerPoints2(indexPairs(:, 2)); % 可视化匹配结果 figure; showMatchedFeatures(image1, image2, matchedPoints1, matchedPoints2, 'montage'); ``` 注意,在使用该代码之前,需要将`image1.jpg`和`image2.jpg`替换为实际的图像文件路径。 这段代码,首先将两幅图像转换为灰度图像,然后利用`detectHarrisFeatures`函数检测图像的角点,接着使用`extractFeatures`函数提取角点的特征描述符,最后使用`matchFeatures`函数进行特征匹配,并利用`showMatchedFeatures`函数可视化匹配结果。 希望对你有所帮助!如果有任何问题,请随时追问。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值