鉴于即将启程旅行,先上传篇简单的图像检索介绍,与各位一起学习opencv的同学共勉
一.特征检测
图片的特征主要分为角点,斑点,边,脊向等,都是常用特征检测算法所检测到的图像特征·
1.Harris角点检测
先将图片转换为灰度模式,再使用以下函数检测图片的角点特征:
dst=cv2.cornerHarris(src, blockSize, ksize, k[, dst[, borderType]])
重点关注第三个参数,这里使用了Sobel算子,简单来说,其取为3-31间的奇数,定义了角点检测的敏感性,不同图片需要进行调试。
k 是 Harris 角点检测方程中的自由参数,取值参数为[0,04,0.06].
2.DoG角点检测及SIFT特征变换
Harris角点检测在面对图像尺度性发生改变时极其容易丢失图像细节,造成检测失误。因此在检测图像特征时,常常我们需要一些拥有尺度不变性的特征检测算法。
DoG角点检测即将两幅图像在不同参数下的高斯滤波结果相减,得到DoG图。步骤:用两个不同的5x5高斯核对图像进行卷积,然后再相减的操作。重复三次得到三个差分图A,B,C。计算出的A,B,C三个DOG图中求图B中是极值的点。图B的点在当前由A,B,C共27个点组成的block中是否为极大值或者极小值。若满足此条件则认为是角点。
SIFT对象会使用DoG检测关键点,并对每个关键点周围的区域计算特征向量。事实上他仅做检测和计算,其返回值是关键点信息(关键点)和描述符。
#下列代码即先创建一个SIFT对象,然后计算灰度图像
sift = cv2.xfea