Карта диспаратности из изображений с маской переднего плана

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

введите здесь описание изображения

а затем есть правильное изображение

введите здесь описание изображения

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

Поигравшись с параметрами алгоритма SGBM в примере OpenCV, в основном

int SADWindowSize
int minDisparity
int numberOfDisparities

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

Пример 1: с меньшим размером окна = 9 и количеством несоответствий = 64

введите здесь описание изображения

Пример 2: с меньшим размером окна = 23 и количеством несоответствий = 64

введите здесь описание изображения

Больший размер окна дает более размытые результаты, что нежелательно.

Вопрос: Неправильно ли маскировать фон при расчете карты диспаратности? Другой возможный подход - вычислить карту диспаратности и затем применить маску, но я не уверен в достоверности результатов в этом случае.

Обратите внимание, что камеры откалиброваны и изображения (и маски) исправлены.


person Mahdi Chamseddine    schedule 25.01.2017    source источник


Ответы (1)


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

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

person Giebut    schedule 25.01.2017