图像拼接
介绍
何谓图像拼接,顾名思义,就是把两张具有重叠区域的图片拼接在一起,形成一个更完整的图片,如下图:
我们把第一个图片和第二个图片拼接起来,形成了第三个图片。
图像拼接步骤
- 检测特征点
- 特征点匹配
- 确定对应关系
- 图像变换
- 图像缝合
检测特征点
基于SIFT,利用opencv里面的函数返回待拼接的两张图片的关键点和描述符;详细介绍见尺度不变特征变换(SIFT)
# setting SIFT
sift = cv2.xfeatures2d_SIFT().create()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1gray, None)
kp2, des2 = sift.detectAndCompute(img2gray, None)
特征点匹配
利用的是FLANN(Fast_Library_for_Approximate_Nearest_Neighbors)匹配器,他在面对大数据集的效果要优于BF(暴力匹配)
# FLANN parameters
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1, des2, k=2)
确定对应关系
通过cv2.fi