机器学习进阶-图像特征harris-角点检测

角点检测:主要是检测一些边角突出来的点,对于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轴的像素变化情况,因此可以判断到底是什么边界

右边的是角点响应值,用来进行实际的计算

在一个角点附近可能存在多个角点,因此我们需要对角点做一个极大值抑制操作

猜你喜欢

转载自www.cnblogs.com/my-love-is-python/p/10411263.html