角点检测: 主要是检测一些边角突出来的点, 对于 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 轴的像素变化情况, 因此可以判断到底是什么边界
右边的是角点响应值, 用来进行实际的计算
在一个角点附近可能存在多个角点, 因此我们需要对角点做一个极大值抑制操作
来源: http://www.bubuko.com/infodetail-2962646.html