Найдите соответствующую 2-ю точку на правом изображении в стереокамере.

У меня есть точка (xl, yl) на левом изображении в стереокамере. Я хочу определить, где эта же точка отображается на правильном изображении, скажем, точка (xr, yr) на правильном изображении. У меня есть все матрицы вращения и матрицы перевода, использующие калибровку камеры с использованием opencv.


person Aizen    schedule 18.07.2013    source источник
comment
На какой глубине? Пиксель на одном изображении определяет трехмерный луч из своей камеры, который сопоставляется с линией на другом изображении (эпиполярная линия первого пикселя). Выбирая глубину (или оценивая ее с помощью одного из многих методов стереосопоставления), вы фиксируете точку на луче, следовательно, соответствующий пиксель на эпиполярной линии.   -  person Francesco Callari    schedule 19.07.2013
comment
На самом деле, я пытался не делать карту несоответствий, используя cvstereocorrespondencebm, я думал, есть ли какая-то функция или какая-то матрица, которую мы умножаем, чтобы получить ту же соответствующую точку на правом изображении. Наконец, я хочу (x2 - x1), вывод несоответствия.   -  person Aizen    schedule 19.07.2013
comment
Нет, такого не бывает — этого явно не может быть.   -  person Francesco Callari    schedule 19.07.2013
comment
@Айзен, тебе удалось это понять? Я пытаюсь сделать то же самое без везения   -  person Luke Zammit    schedule 06.04.2015


Ответы (1)


Вы можете сделать это с помощью простого 2D-сопоставления точек. У меня есть что-то вроде этого в OpenFrameworks:

cv::Ptr<cv::DescriptorExtractor> ext = cv::DescriptorExtractor::create("ORB");

cv::Mat descriptors_1, descriptors_2;

//The images are cv::Mat and the Points are std::vector<cv::KeyPoint>> which I got from cv::FASTX()
ext->compute(_leftImage, _leftPoints, descriptors_1);
ext->compute(_rightImage, _rightPoints, descriptors_2);

cv::BFMatcher matcher;

std::vector<cv::DMatches> matches;
matcher.match(descriptors_1, descriptors_2, matches);

Затем matches содержит ссылки на подходящие пары точек на каждом изображении. Все еще потребуется некоторая очистка, чтобы избавиться от выбросов (все правильные совпадения должны быть параллельны друг другу ;)), но с некоторой работой вы сможете исправить два изображения друг к другу.

person Gregor A. Lamche    schedule 14.04.2017