计算机如何识别角点?

  • 任意方向上,像素变化率大的点。

计算机如何区分平坦区域,边缘区域,角点区域?

  • 平坦的区域:在所有方向像素梯度变化不大。
  • 边缘区域:只有在某个方向有明显的梯度不变化。
  • 角度边缘:在各个方向梯度值有明显的变化。

为了防止武断,我们在判断是否为角点时,选取一个小领域进行判断,而不是一个点。这样就大大避免了判断失误的情况。

Harris Corner Detection(角点检测)——笔记

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)的值越大,为角点的可能就越大。

 

二维泰勒展开公式:

Harris Corner Detection(角点检测)——笔记

将E(u,v)展开:

Harris Corner Detection(角点检测)——笔记

Ix表示对灰度图x方向求导(用sobel核卷积)

用M表示中间的矩阵乘w(x,y)

Harris Corner Detection(角点检测)——笔记

Harris Corner Detection(角点检测)——笔记

Harris Corner Detection(角点检测)——笔记

  • 如果λ1与λ2都比较大,并且近似相等时,则可能为角点;
  • 如果λ1远小于λ2或者λ1远大于λ2,则为边;
  • 否则为平坦区域。

det M 表示m的行列式,等于λ1乘λ2;

trace M 表示M的迹,等于λ1加λ2;

为了表示λ1与λ2同时很大,用以下表达式来体现:

Harris Corner Detection(角点检测)——笔记

R为每个像素点的得分,得分越高为角点的可能越大。

相关文章: