Hessian 特征检测器是如何工作的?

信息处理 图像处理 计算机视觉 局部特征 峰值检测
2021-12-27 12:22:06

我知道 Harris 角点检测器,并且我了解它的二阶矩矩阵

M = \left[ \begin{array}{cc} I_x^2 & I_xI_y \\ I_xI_y & I_y^2 \end{array } \right]
,边和其他不稳定的点可以通过M来移除。

但是关于Hessian检测器,它使用Hessian矩阵来检测关键点并去除边缘,

H=[IxxIxyIxyIyy]
,我不明白 H 如何去除边缘并检测稳定点?它背后的直观基本思想是什么?

2个回答

我会尽量避免数学,因为很容易找到数学和“如何做”教程。

所以,我首先要指出一件非常重要的事情:不计算单个像素的哈里斯,而是计算该像素周围的附近(图像块)!I(i)xx,I(i)xy... 为点 i0 的导数,然后,

H=[iVI(i)xxw(ii0)iVI(i)xyw(ii0)iVI(i)xyw(ii0)iVI(i)yyw(ii0)]

w(t) 是一个高斯核。前面的 eq 告诉您在当前像素周围的 V 附近积分导数值。邻居的每个值都乘以一个随着距离的增加而缩小的值。递减规律遵循高斯,因为 w(t) 是高斯以 i0 为中心。数学就是这样。

现在,回到经验观察。如果您仅使用导数,并且该像素是线性结构(边缘)的一部分,那么您会得到对导数的强烈响应。另一方面,如果像素位于拐角处(两条边的交点),则微分响应将自行抵消。

话虽如此,Hessian 能够在没有“取消”效应的情况下捕获该附近的局部结构。但非常重要的是,您必须整合才能获得合适的 Hessian。

拥有使用 Harris 方法或通过其他方式获得的 Hessian 矩阵,您可能想要提取有关附近的信息。有一些方法可以获得关于当前像素、角落等处有边缘的可能性的数值。检查角落检测理论。

现在,关于“稳定点”或突出点。想象一下你在一个没有 GPS 并且只有一张好地图的外国小镇。如果您被“传送”在街道中间,您可能会在地图上找到这条街道,但您无法确定您在那条街道上的确切位置,或者您应该向左或向右移动的方向(在地图上) )。现在想象一下,你在一个十字路口。然后,您可以精确地在地图上指出您的位置!(当然,假设两条街道相交不超过一次)。

现在想象一下,您必须匹配两个图像。一个充当地图,另一个充当城市。您必须找到可以唯一描述的像素,以便进行匹配。检查此帖子上的图像,例如匹配。这些点称为突出点。此外,当图像被缩放、平移、旋转、倾斜等(仿射变换)时,角点往往不会改变它们的“角点”属性。这就是它们被称为“稳定”的原因。

图像中的某些点允许您唯一地识别它们。这些像素位于拐角处或线的交叉处。想象一下你附近的 $V$ 在一条线上。除了线路的方向外,您在该附近找不到任何其他东西。但是如果 $V$ 在一个拐角处,那么你可以找出相交线的方向,也许是角度等。V is on a line. Except for the orientation of the line, you cannot find anything else from that vicinity. But if V is on a corner, than, you can find out the directions of the lines that intersect, maybe the angle, etc.

并非所有的角点都是突出的,但只有角点才有很大的突出机会。

希望能帮助到你!

ps 如何判断一个点是否是角点,看看 Harris 论文。

pps 更多关于匹配,搜索 SIFT 或 SURF。

ppps Harris 方法有一个“概括”,称为结构张量。检查Knutsson的开创性工作!

对于使用的另一个观点,请记住一阶导数 ( ) 是某个点的斜率,并说明图像在方向。HIx,Iyxy

二阶导数是曲率——它们表明点周围的区域是向上还是向下凹。要记住它是如何使用的,请回忆多变量计算中的二阶导数测试以找到局部最大值/最小值:

https://en.wikipedia.org/wiki/Second_partial_derivative_test

测试是,这正是 SURF 的特征检测器(以及其他兴趣点检测器)中使用的。它被称为“Hessian 的行列式”,,因为它使用 2x2 矩阵的行列式来总结一个点的曲率。D=IxxIyyIxy2detH

时,该点看起来像一个向上或向下的碗,而看起来像一个鞍点。由于边缘看起来更像马鞍而不是碗,这是您可以使用 Hessian 将良好、稳定的兴趣点与边缘分开的一种方法(但您也可以使用做其他技巧) :D>0D<0H

碗对马鞍