Получите трехмерные мировые координаты определенных точек из системы стереокамер

У меня есть две веб-камеры (назовем их левой веб-камерой и правой веб-камерой соответственно), которые я использую в качестве системы стереокамер. У меня есть следующая информация о моей установке:

  1. Характеристики камеры и коэффициенты искажения обеих веб-камер;
  2. Векторы поворота и перевода одной из веб-камер относительно другой;
  3. Фундаментальные и существенные матрицы;
  4. Матрицы перепроецирования для обеих веб-камер, чтобы изображения с веб-камер можно было перепроецировать таким образом, чтобы эпиполярные линии были горизонтальными.
  5. Карта диспаратности (с использованием StereoSGBM)

Теперь предположим, что с помощью обнаружения Харриса (или какой-либо другой техники обнаружения признаков) я получил список характерных точек с левого изображения с веб-камеры. Как получить трехмерные мировые координаты этих точек? Кроме того, как изменится процедура для этого, если у меня будут характерные точки на правом изображении с веб-камеры?

Я использую OpenCV 3.4.10 С++ на Ubuntu 18.04.


person Harshit Kaushik    schedule 19.07.2020    source источник
comment
по несоответствию вы можете вычислить глубину (ищите формулу, например, focusLength*baseline/disparity). с глубиной вы можете проецировать точки на 3D: calibratio/31266627#31266627" title="извлечение 3D-координат с учетом карты глубины 2D-точек изображения и калибровки камеры"> stackoverflow.com/questions/31265245/   -  person Micka    schedule 19.07.2020
comment
@Micka спасибо за ссылку. Но как сопоставить точку в левом (или правом) кадре изображения веб-камеры с соответствующей точкой на карте несоответствия? Точка изображения (8, 11), например, не будет соответствовать точке (8, 11) на карте несоответствия. Как получить эту переписку?   -  person Harshit Kaushik    schedule 20.07.2020
comment
он должен соответствовать одному из выпрямленных изображений, а с помощью несоответствия он будет соответствовать выпрямленному другому изображению. Вот в чем диспропорция. Можете ли вы показать некоторые изображения?   -  person Micka    schedule 20.07.2020
comment
не уверен в том, как это работает с фундаментальными и существенными матрицами. Если у вас нет выпрямленных изображений, может быть какая-то формула с эпиполярными линиями или использование фундаментальной матрицы для деформации от одного изображения к другому. Тем не менее я думаю, что карта несоответствия должна соответствовать одному из обоих изображений?!?   -  person Micka    schedule 20.07.2020
comment
взгляните на это: stackoverflow.com/questions/36172913/ может поможет   -  person Micka    schedule 20.07.2020
comment
@Micka, вы хотите сказать, что одно из исправленных изображений (либо с левой веб-камеры, либо с правой веб-камеры) выглядит как карта несоответствия (учитывая только границы, а не цвет или тип данных)? Это не имеет смысла для меня.   -  person Harshit Kaushik    schedule 20.07.2020
comment
Кроме того, @Micka, ссылки, которые вы мне предоставили, учат меня чему-то новому (спасибо вам за это), но они по-прежнему не отвечают на мой вопрос.   -  person Harshit Kaushik    schedule 20.07.2020
comment
карта несоответствия должна быть выровнена для одного из обоих изображений. Несоответствие говорит вам, как далеко от этого пикселя вы должны пройти, чтобы достичь пикселя другого изображения (это определение несоответствия). В исправленных изображениях несоответствие представляет собой перемещение пикселя по оси X. Как только вы узнаете, как рассчитать глубину по несоответствию, вы получите ответ на свой вопрос, не так ли? Может быть, просто добавьте несколько изображений (входные данные и несоответствие), чтобы мы могли выяснить, говорим ли мы об одном и том же.   -  person Micka    schedule 20.07.2020
comment
@Micka вот изображения, которые могут помочь. Кроме того, я знаю, что это очень неаккуратная карта диспаратности. Кроме того, я заметил, что некоторые столбцы слева от карты несоответствий совершенно пусты. Итак, это означает, что я не могу напрямую сопоставить точку на левом изображении с той же строкой, точкой столбца на карте несоответствия.   -  person Harshit Kaushik    schedule 20.07.2020
comment
хорошо, поэтому ваш вопрос о том, как получить 3D-точки для позиций 2d пикселей, где у вас нет значений несоответствия, но у вас есть соответствия пикселей на обоих изображениях (например, вы знаете, что функция A на одном изображении является функцией B на другом изображении) ? Тогда ответ такой: прострелить луч через каждый из пикселей и протестировать, где оба луча наиболее близко подходят друг к другу (теоретически они даже куда-нибудь попадут, но только теоретически).   -  person Micka    schedule 20.07.2020
comment
Нет, ты меня неправильно понимаешь. Мой вопрос: как мне получить 3D-мировые координаты определенной точки, используя карту несоответствия? Решение простое, если я могу получить глубину из карты несоответствия, но проблема в том, где искать точку на карте несоответствия. Из изображений ясно, что нельзя напрямую перейти к тому же положению строки, столбца на карте несоответствия, что и точка изображения.   -  person Harshit Kaushik    schedule 20.07.2020
comment
как вы говорите, что карта несоответствия не выровнена по одному из изображений? Для меня это выглядит так, как будто оно выровнено по исправленному левому изображению. Вы можете видеть с левой стороны чашки и угол мебели на заднем плане и с левой стороны мыши. Но качество карты диспаратности выглядит ужасно... очень шумно?   -  person Micka    schedule 21.07.2020
comment
@Micka размер изображения для левой веб-камеры такой же, как и у карты несоответствия (640 X 480), а большая левая часть карты несоответствия полностью черная. Таким образом, если удалить большую черную часть (которая кажется нам бесполезной) карты несоответствия, у нас останется изображение, размер которого меньше, чем изображение левой веб-камеры. Вот почему говорят, что карта несоответствия не полностью выровнена ни с одним из изображений, и что это несоответствие является причиной, по которой я не могу просто перейти к той же позиции строки, столбца на карте несоответствия, что и точка изображения.   -  person Harshit Kaushik    schedule 21.07.2020
comment
просто оставьте черную часть, где несоответствие не может быть вычислено.   -  person Micka    schedule 21.07.2020