计算机如何识别角点?
- 任意方向上,像素变化率大的点。
计算机如何区分平坦区域,边缘区域,角点区域?
- 平坦的区域:在所有方向像素梯度变化不大。
- 边缘区域:只有在某个方向有明显的梯度不变化。
- 角度边缘:在各个方向梯度值有明显的变化。
为了防止武断,我们在判断是否为角点时,选取一个小领域进行判断,而不是一个点。这样就大大避免了判断失误的情况。
w(x,y) : 可取(窗口内为1,窗口外为0) 或者高斯核(体现了不同区域,影响程度不同)。
I(x+u,y+v) : 表示窗口内移动后的数值。
I(x,y):表示窗口移动之前的数值。
I(x+u,y+v)—I(x,y):为窗口值的变化
E(u,v)的值:即窗口值的变化加起来。表示了窗口移动后亮度的变化程度。
判断为角点:E(u,v)的值越大,为角点的可能就越大。
二维泰勒展开公式:
将E(u,v)展开:
Ix表示对灰度图x方向求导(用sobel核卷积)
用M表示中间的矩阵乘w(x,y)
- 如果λ1与λ2都比较大,并且近似相等时,则可能为角点;
- 如果λ1远小于λ2或者λ1远大于λ2,则为边;
- 否则为平坦区域。
det M 表示m的行列式,等于λ1乘λ2;
trace M 表示M的迹,等于λ1加λ2;
为了表示λ1与λ2同时很大,用以下表达式来体现:
R为每个像素点的得分,得分越高为角点的可能越大。