Сшивание изображений Python

Мне нужно сшить два или более изображений вместе, используя python и openCV. Я нашел этот код для поиска ключевых точек и совпадений, но не знаю, как продолжить. Помоги мне, пожалуйста!

import numpy as np
import cv2

MIN_MATCH_COUNT = 10

img1 = cv2.imread('a.jpg',0)          # queryImage
img2 = cv2.imread('b.jpg',0) # trainImage

# Initiate SIFT detector
sift = cv2.SIFT()

# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)

FLANN_INDEX_KDTREE = 0
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)

# store all the good matches as per Lowe's ratio test.
good = []
for m,n in matches:
    if m.distance < 0.7*n.distance:
        good.append(m)

person p0lly11    schedule 29.12.2013    source источник


Ответы (2)


Ваш вопрос не очень ясен, но я предполагаю, что вы имеете в виду, что у вас есть куча изображений, и вы хотите, чтобы opencv нашел соответствующие ориентиры, а затем деформировал/масштабировал каждое изображение, чтобы они могли сформировать одно большое изображение.

Метод без использования класса сшивателя, в основном перебирающий изображения и определяющий наиболее подходящий для каждой итерации, задокументирован в этом коде github.

person dirkjot    schedule 27.06.2014

Один из подходов к сшиванию изображений состоит из следующих шагов.

Во-первых, как вы уже поняли, вам нужен детектор характерных точек и какой-то способ найти соответствия между характерными точками на обоих изображениях. Обычно хорошей идеей является устранение большого количества соответствий, поскольку они, скорее всего, будут содержать много шума. Очень простой способ устранить много шума — искать симметрию в спичках.

Это примерно то, что ваш код делает до этого момента.

Затем, чтобы сшить изображения вместе, вам нужно деформировать одно из изображений, чтобы оно соответствовало перспективе другого изображения. Это делается путем оценки гомографии с использованием соответствий. Поскольку ваши соответствия, скорее всего, будут содержать много шума, мы обычно используем RANSAC для надежной оценки гомографии.

Быстрый поиск в Google дает множество примеров того, как это реализовано.

person Pavlin    schedule 02.03.2018