Изображения не отображаются правильно после гомографии Сшивание изображений OpenCV - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь сшить изображения вместе, рассчитывая гомографию между каждым изображением, а не используя класс openCV Stitcher.

У меня есть 4 изображения и я предварительно рассчитываю гомографию между всеми изображениями.

H_12 = //homography between image 1 and image 2
H_23 = //homography between image 2 and image 3

et c ...

Однако у меня есть некоторые проблемы с правильной деформацией изображений на основе гомографии. Это следующие шаги:

Шаг 1: Создайте холст, на который будут деформированы все изображения.

Шаг 2: Деформируйте изображения на основе расчета гомографии.

Шаг 3: Получите соответствующие области каждого изображения.

Шаг 4. Скопируйте соответствующую область на холст.

Это мой код:

Mat H_12, H_23, H_34;
  //Finding homography between each image
    H_12 = Homography(im_1,im_2);
    H_23 = Homography(im_2,im_3);
    H_34 = Homography(im_3,im_4);

    Mat warpImage2;
    Mat warpImage3;
    Mat warpImage4;

    //Canvas where images will be warped onto.
    Mat final(Size(im_1.cols*4, im_1.rows*2),CV_8UC3);
    //size is defined as the final video size
    warpPerspective(im_2, warpImage2, H_12, Size(im_1.cols*2, im_1.rows*2), INTER_CUBIC);
    warpPerspective(im_3, warpImage3, (H_23*H_12), Size(im_1.cols*2, im_1.rows*2), INTER_CUBIC);
    warpPerspective(im_4, warpImage4, (H_34*H_23*H_12), Size(im_1.cols*2, im_1.rows*2), INTER_CUBIC);
    //Getting the relivent (roi) areas of each image.
    Mat roi1(final, Rect(0, 0, im_1.cols, im_1.rows));
    Mat roi2(final, Rect(0, 0, warpImage2.cols, warpImage2.rows));
    Mat roi3(final, Rect(0, 0, warpImage3.cols, warpImage3.rows));
    Mat roi4(final, Rect(0, 0, warpImage4.cols, warpImage4.rows));

    //Copying relevant area to canvas
    warpImage4.copyTo(roi4);
    warpImage3.copyTo(roi3);
    warpImage2.copyTo(roi2);
    im_1.copyTo(roi1);

    imwrite("result.png", final);

    waitKey(0);
    return 0;

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

enter image description here

Однако, если я отображаю все изображения по отдельности, они выглядят правильно деформированными, как показано ниже.

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

enter image description here

...