Как получить плотные облака точек от стереокамер?

12

Я пытаюсь использовать стереокамеру для реконструкции сцены, но обычно могу получать только разреженные облака точек (т. Е. Более половины изображения не имеет надлежащей информации о глубине).

Я понимаю, что алгоритмы стерео обработки зависят от наличия текстуры в изображениях и имеют несколько параметров, которые можно настроить для получения лучших результатов, таких как диапазон диспаратности или размер окна корреляции. Однако, несмотря на то, что я настраиваю эти параметры, я никогда не смогу получить результаты, даже отдаленно близкие к тому, что можно получить с помощью активного датчика, такого как Kinect.

Причина, по которой я этого хочу, заключается в том, что очень часто облака точек, соответствующие соседним областям, не имеют достаточного перекрытия, чтобы я мог получить соответствие, поэтому реконструкция серьезно нарушена.

Мой вопрос к специалистам Computer Vision заключается в следующем: что я могу сделать, чтобы получить более плотные облака точек вообще (без произвольного изменения среды моего офиса)?

georgebrindeiro
источник
Это хороший вопрос, но я думаю, что нужно больше деталей. Какие алгоритмы вы пытались вычислить совпадения? Не могли бы вы уточнить, что вы подразумеваете под "смежными регионами" и "перекрытием"?
Джош Вандер Крюк
Когда я говорю «смежные области», я имею в виду участки физического пространства, которые не эквивалентны, но имеют непустое пересечение, которое я назвал «перекрытием». То есть тип областей, которые будут генерировать облака точек, которые могут быть сопоставлены и сшиты в алгоритме ICP.
Георгбриндейро
Что касается алгоритма, я все еще использую самое простое из возможных решений: узел ROS Stereo_image_proc , который применяет алгоритм глобального сопоставления блоков, доступный в OpenCV. Мне было бы очень интересно услышать о настройках параметров, которые могут быть недоступны для меня напрямую через узел ROS или другие алгоритмы, которые, как известно, обеспечивают лучшие результаты.
Георгбриндейро

Ответы:

4

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

Вы можете потерять масштабную инвариантность, но я думаю, что это не сильно повредит стереозрению, так как объекты будут иметь примерно одинаковый масштаб на обоих изображениях.

Другой подход может заключаться в объединении нескольких алгоритмов обнаружения выступающих точек: углов, ребер, пятен и т. Д. Затем вы должны использовать один и тот же алгоритм дескриптора объекта для всех обнаруженных точек, однако эту последнюю часть может быть несколько сложно реализовать.

muksie
источник
2

Таким образом, алгоритмы обработки стереоизображений, которые я использовал в прошлом, были реализованы попиксельно. Мы просто использовали модель камеры-обскуры и делали некоторые старомодные измерения с помощью измерительной ленты, пока наши оценки глубины не совпали с реальными.

Уравнения для пары параллельных камер:

  • d= половина расстояния между камерами
  • f= фокусное расстояние камер (предполагается одинаковым)
  • Координатные рамки:
    • x,y,z= координатный кадр между камерами (то есть базовый кадр камеры)
    • uR,vR камеры в правой камере с точки зрения робота (u в горизонтальном положении, v в вертикальном положении)
    • uL,vL координаты камеры в левой камере
    • Примечание: координаты камеры начинаются с координатной рамки между камерами (то есть оси u обращены в разные стороны)

uL=f(xd)z ,uR=f(x+d)z

zuR=f(x+d) ,zuL=f(xd)

z(uRuL)=2df

z=2dfuRuL

y=vLz+dff

x=uLz+dff

Используя эти уравнения, вы можете вычислить плотное стерео облако. Один для каждого пикселя на ваших камерах.

thealmightygrant
источник
Спасибо за усилия, но я знаком со стерео моделированием. Обычно проблема заключается именно в соответствии между (u, v) координатами в левой и правой камерах. muksie дал несколько идей о том, как с этим справиться, и sylvain.joyeux указал на отличную стереобиблиотеку, которая приводит к улучшению результатов, хотя ...
georgebrindeiro
1

Когда вы говорите, «более половины изображения не имеет надлежащей информации о глубине», какая половина?

Одна из проблем, с которой мы столкнулись, заключается в том, что если расстояние до объекта того же порядка, что и ваша базовая линия (обычно это связано с очень широкоугольными камерами), то «стандартные» алгоритмы плотного стерео работают не так хорошо. Мы использовали библиотеку libelas, и ее разработчики сказали нам, что это называется «большое базовое стерео» и является еще одной проблемой.

sylvain.joyeux
источник
Когда я сказал, что половина изображения не имеет надлежащей информации о глубине, я имел в виду, что из всех пикселей только около половины имеют вычисленные различия (необязательно образующие одну смежную область). У меня нет той же проблемы, о которой вы упоминали в отношении расстояния до объекта / базовой линии, но мне было очень интересно услышать об этой библиотеке и о том, что это может быть проблемой. Спасибо!
Георгбриндейро
1
В любом случае, я попробую клевету , так как нашел для нее обертку ROS !
Георгбриндейро
0

Посмотрите на лидеров KITTI Stereo Benchmark . Этот бенчмарк наказывает алгоритмы за то, что они не дают несоответствия в любой заданной точке, поэтому лучшие исполнители дают плотные результаты (даже если у них нет большого основания для их оценки во многих точках). Некоторые методы имеют общедоступный связанный код, который вы можете попробовать.

Обратите внимание, что они не оштрафованы за то, что они занимают много времени, поэтому многие методы будут занимать порядка минут для каждого изображения и могут не подходить для вашего приложения. Было введено много методов на основе CNN, которые очень хорошо работают, хотя и работают менее чем за секунду (на графическом процессоре). По крайней мере один из них (CRL) имеет открытый код.

Если вы по-прежнему не получаете приличных оценок глубины на своих изображениях, то вы, возможно, просто видите пределы того, что возможно из видимого подхода. В принципе, в области должна быть отличительная текстура, чтобы можно было хорошо совмещать точки, или вам нужна основа для того, чтобы сделать некоторые сильные предположения (например, гладкость) в областях без текстуры.

Surtur
источник