7. Скрипт 7f_dm_tune.py – тонкая настройка карты глубин

Назначение седьмого скрипта

В этом скрипте мы строим карту глубин по заданной картинке, и имеем возможность подобрать её параметры в реальном времени.

Исходный код: https://github.com/realizator/3dberry-turorial/blob/master/7_dm_tune.py

Скрипт делает следующее:

  • Загружает все параметры (резки картинки на стереопару, настройки калибровки)
  • Загружает указанную картинку для построения карты глубин
  • Строит карту глубин
  • Отображает левое изображение стереопры, построенную карту и список параметров с "бегунками"
  • При изменении любого параметра скрипт перестраивает карту и рисует обновленную версию
  • При нажатии кнопки "Save" сохраняет параметры в файл 3dmap_set.txt
 
Запуск скрипта на Raspberry или на десктопе командой:

python 7_dm_tune.py

За сценой

В этом скрипте мы строим карту глубин несколько иначе - мы создаем объект sbm = cv.CreateStereoBMState(), который позволяет явно задать дополнительные параметры карты глубин. Поэтому нам доступны не 2, а целых 10 параметров, которые сильно развязывают руки.

Дополнительно хочу отметить, что интерфейс настройки карты глубин сделан силами pyplot из matplotlib, что приводит к существенной "тормознутости" решения. Если скрипт запускается на малине, то после каждого изменения параметра проходит секунд 5 до прорисовки новой карты глубин. Если скрипт запускать на настольном компьютере, ощущения совсем другие - можно "зажать" мышку на любом из параметров и, перемещая ее влево-вправо, в реальном времени наблюдать обновление картинки. После тонкой настройки можно сохранить параметры кнопкой "Save" и использовать их в дальнейшей работе

На этом скрипте становится понятным, что для разных задач нужны разные настройки карты глубин. Например, если вы ставите систему на небольшого гусеничного робота - ему важнее не мелкие четкие зоны, а большие крупные участки, по которым можно быстро принять решение "туда ехать можно, а туда - нельзя". Если вы пытаетесь построить 3D карту пространства - тогда вам, наоборот, важнее мелкие детали.

И последнее замечание. Карта глубин на самом деле в итоге получается черно-белой. Но мы выводим результат с помощью matplotlib, и библиотека сама "раскрашивает" ее цветами. Ближние части сцены красные, далее идет зеленый и желтый цвета, а самые удаленные части - темно-синие. В следующем "боевом" скрипте мы будем использовать самостоятельную раскраску, так как такая температурная карта гораздо более наглядная, чем черно-белый вариант.