Я строю карту несоответствия с реализацией OpenCV SGBM. В частности, я использую OpenCV версии 2.4.9. В настоящее время я работаю со следующими параметрами:
int numberOfDisparities = 64;
sgbm.preFilterCap = 25;
sgbm.SADWindowSize = 14;
sgbm.P1 = 8*sgbm.SADWindowSize*sgbm.SADWindowSize;
sgbm.P2 = 32*sgbm.SADWindowSize*sgbm.SADWindowSize;
sgbm.minDisparity = 0;
sgbm.numberOfDisparities = numberOfDisparities;
sgbm.uniquenessRatio = 10;
sgbm.speckleWindowSize = 100;
sgbm.speckleRange = 2;
sgbm.disp12MaxDiff = 1;
sgbm.fullDP = false;
Тем не менее, результат не так хорош, как мне нужно:
Как видите, земля кажется полосатой, что вызывает проблемы с алгоритмом обнаружения препятствий, который я использую, который является реализацией статьи. Быстрое и надежное обнаружение и сегментирование препятствий для навигации по пересеченной местности. Проблема состоит в том, что, поскольку эти полосы имеют довольно постоянное несоответствие, что означает, что теоретически они почти перпендикулярны земле, алгоритм классифицирует их как препятствия.
Я немного поиграл с параметрами сглаживания P1 и особенно с P2, проверяя, улучшилось ли увеличение P2, но, похоже, это не решает проблему, поэтому я просто ушел, как рекомендовано в примере OpenCV.
Изображения взяты из набора данных KITTI, и я загрузил их, уже выпрямленные, поэтому я отказался от неправильной калибровки или выравнивания камеры.
Интересно, может ли это быть из-за нетекстурированной земли, хотя я надеюсь, что нет, так как в этом случае мне придется изменить алгоритм обнаружения препятствий.
Есть идеи?
Задача ещё не решена.
Других решений пока нет …