Я пытаюсь сшить изображения, искажая изображения на основе гомографии между двумя изображениями.
Я рассчитываю свою гомографию и получаю точки совпадения между двумя изображениями через стандартный пример гомографии. Затем я пытаюсь деформировать изображения вместе, используя этот расчет с приведенным ниже кодом:
// Use the Homography Matrix to warp the images
cv::Mat result;
warpPerspective(I_1,result,H_12,cv::Size(800,600));
cv::Mat half(result,cv::Rect(0,0,I_2.cols,I_2.rows));
I_2.copyTo(half);
return result;
I_1 и I_2 — 2 изображения.
H_12 Гомография между ними.
Однако это приводит к изображению, как это:
Использование стандартного класса Stitcher приводит к тому, что оба изображения сшиты правильно:
Поэтому мне интересно, как я могу правильно деформировать свои изображения на основе омографии, чтобы объединить их.
Мой полный код Вот
РЕДАКТИРОВАТЬ:
То, как я рассчитал гомографию, приводит к смещению изображений. Я использовал BFMatcher вместо FlannBasedMatcher, и я работал с примером, связанным с skeller.
Я мог также заставить это работать с моим методом. Мне нужно было деформировать второе изображение вместо первого. Таким образом, приведенный выше код изменяется на этот
cv::Mat result;
warpPerspective(I_2,result,H_12,cv::Size(800,600));
cv::Mat half(result,cv::Rect(0,0,I_2.cols,I_2.rows));
I_1.copyTo(half);
return result;
Задача ещё не решена.
Других решений пока нет …