(1)sift算法,主要用于获取图片的特征点。
def detectAndDescribe(self, image):
# 将彩色图片转换成灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 建立SIFT生成器
descriptor = cv2.xfeatures2d.SIFT_create()
# 检测SIFT特征点,并计算描述子
(kps, features) = descriptor.detectAndCompute(image, None)
# 将结果转换成NumPy数组
kps = np.float32([kp.pt for kp in kps])
# 返回特征点集,及对应的描述特征
return (kps, features)
kps是一个列表,列表中的元素是keypoint 类,该类有
pt:特征点的坐标(x,y)
angle:特征向量的角度等属性
feature是一个128维的数组。
sift过程简介:
(1)构建高斯金字塔,每一层有多张图,为一组,是下层输出通过不同的高斯核得来。越往上,通过降采样来获取新的图
(2)构建差分金字塔,没组中的相邻的图相减
(3)相邻3层中找出极小值,由于是离散的