两幅静态图片,有共同的像素或特征,就可以执行拼接。相对于其中运动的物体或微小的差异,背景部分往往比例更多,这些健壮的特征使得特征精确的被定位。以下为一些说明:
特征点匹配与提取
- 图像特征点应该足够多可检测、特征点应各不相同和稳定。
-
SURF(Speeded Up Robust Feature,加速稳健特征)速度更快,
SIFT(Scale Invariant Feature Transform,尺度不变特征变换)速度慢但更准确。
ORB(ORiented Brief 简称)分别快前面两种10倍和100倍,但不具备尺度不变形。
FAST(Features from Accelerated Segment Test,加速分割测试获得特征?),提取特征点,速度很快。
Harris,用于检测角点。
HOG,Harr,LBP。
- 选择优秀特征点时,距离比在0.4~0.6较好,较少更精准,较大匹配点更多。
- 特征提取可以分为特征点选择和特征点特征描述。
图像配准
根据特征点求得变换矩阵(opencv findHomography函数,返回矩阵;而getPerspectiveTransform函数获得透视变换矩阵,只用4个点),或许用到RANSAC筛选更可靠的匹配点。
将目的图片进行拷贝拼接。
图像融合
如上图,在中心边界处过度不自然(裂缝),需要按照权值相加融合成新的图像。可以使用重叠部分,逐列递增计算融合比例。这种情况,运动物体会出现诡影。融合形如代码:
for i in range(left, img.shape[1]):
alpha = (i - left) / process_width
output[:,i] = (img[:,i] * (1 - alpha) + frame[:,i - left] * alpha).astype(np.uint8)