Деформация перспективы и сшивание / наложение изображений (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
, поскольку они перекрываются только частично, а не полностью. Я понимаю, что во втором случае где-то вокруг изображений может быть черное / пустое пространство.