Я пытаюсь использовать стереокамеру для реконструкции сцены, но обычно могу получать только разреженные облака точек (т. Е. Более половины изображения не имеет надлежащей информации о глубине).
Я понимаю, что алгоритмы стерео обработки зависят от наличия текстуры в изображениях и имеют несколько параметров, которые можно настроить для получения лучших результатов, таких как диапазон диспаратности или размер окна корреляции. Однако, несмотря на то, что я настраиваю эти параметры, я никогда не смогу получить результаты, даже отдаленно близкие к тому, что можно получить с помощью активного датчика, такого как Kinect.
Причина, по которой я этого хочу, заключается в том, что очень часто облака точек, соответствующие соседним областям, не имеют достаточного перекрытия, чтобы я мог получить соответствие, поэтому реконструкция серьезно нарушена.
Мой вопрос к специалистам Computer Vision заключается в следующем: что я могу сделать, чтобы получить более плотные облака точек вообще (без произвольного изменения среды моего офиса)?
источник
Ответы:
Вы можете попытаться пропустить обнаружение характерных точек, просто плотно сэмплировать изображение (в виде сетки или около того) и вычислить дескриптор объекта в каждой точке выборки. Вы, вероятно, даже можете пойти до вычисления дескриптора для каждого пикселя.
Вы можете потерять масштабную инвариантность, но я думаю, что это не сильно повредит стереозрению, так как объекты будут иметь примерно одинаковый масштаб на обоих изображениях.
Другой подход может заключаться в объединении нескольких алгоритмов обнаружения выступающих точек: углов, ребер, пятен и т. Д. Затем вы должны использовать один и тот же алгоритм дескриптора объекта для всех обнаруженных точек, однако эту последнюю часть может быть несколько сложно реализовать.
источник
Таким образом, алгоритмы обработки стереоизображений, которые я использовал в прошлом, были реализованы попиксельно. Мы просто использовали модель камеры-обскуры и делали некоторые старомодные измерения с помощью измерительной ленты, пока наши оценки глубины не совпали с реальными.
Уравнения для пары параллельных камер:
Используя эти уравнения, вы можете вычислить плотное стерео облако. Один для каждого пикселя на ваших камерах.
источник
Когда вы говорите, «более половины изображения не имеет надлежащей информации о глубине», какая половина?
Одна из проблем, с которой мы столкнулись, заключается в том, что если расстояние до объекта того же порядка, что и ваша базовая линия (обычно это связано с очень широкоугольными камерами), то «стандартные» алгоритмы плотного стерео работают не так хорошо. Мы использовали библиотеку libelas, и ее разработчики сказали нам, что это называется «большое базовое стерео» и является еще одной проблемой.
источник
Посмотрите на лидеров KITTI Stereo Benchmark . Этот бенчмарк наказывает алгоритмы за то, что они не дают несоответствия в любой заданной точке, поэтому лучшие исполнители дают плотные результаты (даже если у них нет большого основания для их оценки во многих точках). Некоторые методы имеют общедоступный связанный код, который вы можете попробовать.
Обратите внимание, что они не оштрафованы за то, что они занимают много времени, поэтому многие методы будут занимать порядка минут для каждого изображения и могут не подходить для вашего приложения. Было введено много методов на основе CNN, которые очень хорошо работают, хотя и работают менее чем за секунду (на графическом процессоре). По крайней мере один из них (CRL) имеет открытый код.
Если вы по-прежнему не получаете приличных оценок глубины на своих изображениях, то вы, возможно, просто видите пределы того, что возможно из видимого подхода. В принципе, в области должна быть отличительная текстура, чтобы можно было хорошо совмещать точки, или вам нужна основа для того, чтобы сделать некоторые сильные предположения (например, гладкость) в областях без текстуры.
источник