У меня две картинки (A и B) слегка искажены одна от другой, где между ними есть различия в переводе, ротации и масштабах (например, эти изображения:)
Ssoooooooo, что мне нужно, - это применить какое-то преобразование в pic B, чтобы он компенсировал искажение/перевод/поворот, который существует, чтобы сделать оба изображения с одинаковым размером, ориентацией и без перевода.
Я уже извлек очки и нашел "Гомографию", как показано ниже. Но я не знаю, как использовать Гомографию для преобразования Mat img_B
, чтобы она выглядела как Mat img_A
. Любая идея?
//-- Localize the object from img_1 in img_2
std::vector<Point2f> obj;
std::vector<Point2f> scene;
for (unsigned int i = 0; i < good_matches.size(); i++) {
//-- Get the keypoints from the good matches
obj.push_back(keypoints_object[good_matches[i].queryIdx].pt);
scene.push_back(keypoints_scene[good_matches[i].trainIdx].pt);
}
Mat H = findHomography(obj, scene, CV_RANSAC);
Приветствия,