我有兩個重疊的圖像。我想要對齊這兩個圖像。我目前的做法是在兩幅圖像中找到一個共同的特徵(標記)。然後,我想根據要素重疊的位置對齊這兩個圖像。如何根據匹配模板的共同特徵對齊兩個圖像
圖像並不完美,所以我正在尋找一些基於'最佳'擬合(最重疊)對齊的方式。最初我嘗試通過SIFT使用特徵匹配對齊圖像,但特徵匹配通常不正確/太少。
這是我用來尋找template代碼:
template = cv2.imread('template.png', 0)
template = template - cv2.erode(template, None)
image1 = cv2.imread('Image to align1.png')
image2 = cv2.imread('Image to align2.png')
image = image2
img2 = image[:,:,2]
img2 = img2 - cv2.erode(img2, None)
ccnorm = cv2.matchTemplate(img2, template, cv2.TM_CCORR_NORMED)
print(ccnorm.max())
loc = np.where(ccnorm == ccnorm.max())
print(loc)
threshold = 0.1
th, tw = template.shape[:2]
for pt in zip(*loc[::-1]):
if ccnorm[pt[::-1]] < threshold:
continue
cv2.rectangle(image, pt, (pt[0] + tw, pt[1] + th),
(0, 0, 255), 2)
你想簡單地移動圖像並重疊,還是想扭曲它(可能縮放,旋轉和透視失真)? –
你可以參考這個[post](http://www.pyimagesearch.com/2016/01/11/opencv-panorama-stitching/ – ZdaR
@AlexanderReynolds我使用手持相機/掃描儀通過玻璃屏幕捕捉圖像 – Bprodz