Деформация перспективы и сшивание / наложение изображений (C ++)

Я обнаруживаю и сопоставляю особенности пары изображений, используя типичную комбинацию «детектор-де-крип-сопоставитель», а затемfindHomography произвести матрицу преобразования.

После этого я хочу, чтобы два изображения перекрывались (второе (imgTrain) над первым (imgQuery), поэтому я деформирую второе изображение, используя матрицу преобразования, используя:

cv::Mat imgQuery, imgTrain;
...    
TRANSFORMATION_MATRIX = cv::findHomography(...)
...
cv::Mat imgTrainWarped;
cv::warpPerspective(imgTrain, imgTrainWarped, TRANSFORMATION_MATRIX, imgTrain.size());

С этого момента я не знаю, как создать изображение, содержащее оригиналimgQuery с деформированнымimgTrainWarped в теме. Я рассматриваю два сценария: 1) один, где размер конечного изображения равен размеруimgQuery 2) Тот, где размер конечного изображения достаточно велик, чтобы вместить обаimgQuery а такжеimgTrainWarped, поскольку они перекрываются только частично, а не полностью. Я понимаю, что во втором случае где-то вокруг изображений может быть черное / пустое пространство.

Ответы на вопрос(3)

Ваш ответ на вопрос