前言
Parallax-Tolerant Image Stitching Based on Robust Elastic Warping 这篇论文的Python实现, 仅实现了两幅拼接。
J. Li, Z. Wang, S. Lai, Y. Zhai and M. Zhang, “Parallax-Tolerant Image Stitching Based on Robust Elastic Warping,” in IEEE Transactions on Multimedia, vol. 20, no. 7, pp. 1672-1687, July 2018, doi: 10.1109/TMM.2017.2777461.
代码地址 python-Robust_Elastic_Warping. 喜欢的朋友给个⭐哦
代码
main.py
import cv2 as cv
from load_data import load_data
from comp_KR import comp_KR
from mosaic_global import mosaic_global
from mosaic_local_ori import mosaic_local_ori
import matplotlib.pyplot as plt
# data_path = 'images/APAP-railtracks/'
# imfile1 = data_path + 'railtracks_01.jpg'
# imfile2 = data_path + 'railtracks_02.jpg'
data_path = 'images/DHW-temple/'
imfile1 = data_path + '4.jpg'
imfile2 = data_path + '5.jpg'
# data_path = 'images/ANAP-intersection/'
# imfile1 = data_path + 'intersection_01.jpg'
# imfile2 = data_path + 'intersection_02.jpg'
# data_path = 'images/REW_worktable/'
# imfile1 = data_path + 'worktable_01.jpg'
# imfile2 = data_path + 'worktable_02.jpg'
im1 = cv.imread(imfile1)
im2 = cv.imread(imfile2)
X1, X2 = load_data(im1, im2)
print("Number of matches: ", X1.shape[1])
H, X1_ok, X2_ok = comp_KR(im1, im2, X1, X2)
print("H =\n", H)
print("H normalize =\n", H/H[2,2])
mosaic = mosaic_global(im1, im2, H)
cv.imwrite(data_path+'mosaic_global.jpg', mosaic)
cv.imshow("mosaic_global", mosaic)
cv.waitKey(1)
mosaic = mosaic_local_ori(im1, im2, H, X1_ok, X2_ok)
cv.imwrite(data_path+'mosaic_REW.jpg', mosaic)
cv.imshow("mosaic_REW", mosaic)
cv.waitKey(0)
load_data.py
功能:使用opencv-python的sift进行特征提取与匹配,返回源图和目标图的匹配点。
comp_KR.py
功能:调用HM_ransac函数,用RANSAC方法计算全局单应性矩阵及内点。
mosaic_global.py
功能:求全局单应性拼接结果
mosaic_local_ori.py
功能:用弹性局部对齐方法得到拼接结果,提升重叠区域对齐精度。
运行结果
|
|
|
|
|
|
|
|