目录
一 Harri角点检测
1.1 何为角点检测?
1.2 Harri算子的数学表征
1.3 Opencv实现Harri角点检测
1.4 参考资料
二 背景建模
三 光流估计
一 Harri角点检测
1.1 何为角点检测?
定义:角点就是轮廓之间的交点。如果从数字图像处理的角度来描述就是:像素点附近区域像素无论是在梯度方向、还是在梯度幅值上都发生较大的变化。
基本思想:选取一个固定的窗口在图像上以任意方向的滑动,如果灰度都有较大的变化,那么久认为这个窗口内部存在角点。
1.2 Harri算子的数学表征
将图像的窗口函数,平移,那么滑动前与滑动后对应的窗口中的像素点灰度变化描述如下:
其中灰度变化部分:
因此得到:
这里窗口函数,最简单的取值为1,一般为以中心为原点的二元正态分布。
因此角点与其他类型区域的不同之处:
* 平坦区域:梯度方向各异,但是梯度幅值变化不大
* 线性边缘:梯度幅值改变较大,梯度方向改变不大
* 角点:梯度方向和梯度幅值变化都较大
将M对角化,产生两个特征值,判断条件如下:
* 平坦区域:两个特征值都很小
* 线性边缘:特征值一个大一个小
* 角点:两个特征值都较大
进一步可以用下方的公式评价角点:
其中,
1.3 Opencv实现Harri角点检测
import cv2
import numpy as np
filename = '****.jpg'
img = cv2.imread(filename)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,blockSize,ksize,k)
"""
其中,
gray为灰度图像,
blockSize为邻域窗口的大小,
ksize是用于Soble算子的参数,
k是一个常量,取值为0.04~0.06
也可以通过scipy.ndimage.filters的库自己计算
"""
1.4 参考资料
[1] https://zhuanlan.zhihu.com/p/67770305
[2] https://blog.csdn.net/lwzkiller/article/details/54633670
网友评论