角点检测:主要是检测一些边角突出来的点,对于A和B这样的面上的点而言,一个卷积框在上面移动,框中的基本像素点不发生变化, 对于像C和D边界点,只有x或者y轴方向上的平移,像素框内的像素会发生偏移,而对于E和F这样的角点而言,不管是像x轴或者向y轴平移,像素框内的像素都会发生偏移, 就好比图中的绿色方框一样
角点检测的基本原理,使用一个3*3的卷积框,在图上每一点进行平移操作,对于当前位置,在向上或者向下,向左或者向右平移一个像素点后的,两个图像像素点之间的差异,即w表示的是加权值,可以全部都是1,也可以使用高斯卷积,以此对中心点的像素改变做加权
使用一阶泰勒展开对I(x+?x, y+?y) 进行泰勒展开 等于 I(x, y) + Ix * ?x + Iy*?y + o(x, y) Ix表示?I(x, y) / ?x 即该点对x方向上的梯度,同理Iy
对上述式子进行化解操作
c(x, y, ?x, ?y) = (Ix * ?x + Iy*?y) ^ 2
将上述式子进行拆分 c(x, y, ?x, ?y) = (Ix * ?x + Iy*?y) ^ 2 = [?x, ?y] * M * [?x, ?y]
那么上述的式子就化解乘了A?x ^ 2 + 2C*?x * ?y +?y ^ 2 这是一个斜椭圆方程,对M(x, y)进行特征变换, 获得特征值λ1和λ2,即最终的表示为λ1*?x ^ 2 + λ2*?y ^ 2
即对斜椭圆做了一个变化,使得其是一个正椭圆,结果不变
举例说明,λ1越大,那么x轴的方向上?x变化,所引起的变化也就越大,即像素的变化越大
根据λ1和λ2的对比,我们可以知道x方向和y轴方向的y轴的像素变化情况,因此可以判断到底是什么边界
右边的是角点响应值,用来进行实际的计算
在一个角点附近可能存在多个角点,因此我们需要对角点做一个极大值抑制操作
原文:https://www.cnblogs.com/my-love-is-python/p/10411263.html