Можем ли мы умножить 2 или более гомографических матриц, чтобы получить еще одну с учетом преобразования гомогенных в гетерогенные - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь сделать панораму, и, поскольку существует общий метод поиска преобразования ч / б двух изображений, а затем выполнить деформацию в зависимости от преобразования в координатах предыдущего изображения. H1 - матрица гомографии 3x3 image1Frame = H1 * image2Frame

(image2Frame = [x2, y2, 1], image1Frame = [x1, y1, 1], учитывая это, нам нужно разделить H1 * image2Frame [: 2] / H1 * image2Frame [2])

Из этой методологии я пытался преобразовать несколько изображений в мои координаты 1-го изображения, а для определения матриц гомографии я использовал линейное преобразование. image1Frame = H1 * H2 * image3Frame учитывая: - image2Frame = H2 * image3Frame

после выполнения этой задачи для всех моих изображений я преобразовал координаты (x, y) (то есть координаты пикселей) и получил диапазон (x, y) координирует и затем устанавливает finalImageShape = (макс у-мин у, макс х-мин х) . Использование здесь -ve знака для мин х и у, потому что я получил их -ve .

и установите матрицу перевода для перевода -ve координат изображения, чтобы я мог получить всю панораму, но даже тогда я получаю большую часть моего изображения пустым, а также некоторую часть моего базового изображения (image1) также вырезают, хотя Я установил это H матрица np.eye (3).

Мой код для создания панорамы: -

`

imgBase = np.zeros((dsize[0], dsize[1], 3), dtype='uint8')
for i in finalData[1:]:
    # i = [index of image, H]
    # H = multiplication of corrsponding H as describes above 

    img = cv2.warpPerspective(Data['DataCV'][i[0]], i[1]@shiftMat,(dsize[1],dsize[0]))
    print(img.shape)
    imgBase = cv2.addWeighted(img, 5, imgBase, 0.5, 1)
cv2.imshow('img',imgBase)
cv2.waitKey()
cv2.destroyAllWindows()

`

Вот некоторые строки кода из документации opencv, которые я использую с некоторыми изменениями.

H, mask = cv2.findHomography(imgAccRejPts, imgBasePts, cv2.RANSAC)

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

Спасибо,

...