Программа реализует полный конвейер обработки стереоизображений на базе датасета KITTI:
- 7 конфигураций алгоритмов: Block Matching (2 варианта) и SGBM (5 вариантов с разными параметрами и постобработкой)
- Метрики точности: MAE, RMSE, RMAE, PC(3px) — по эталонным картам диспаратности KITTI
- Метрики производительности: время обработки кадра, fps, джиттер, разбивка по этапам
- Визуализация: цветные карты диспаратности, сводное сравнение алгоритмов
Python 3.8+
opencv-python >= 4.5 (или opencv-contrib-python для WLS-фильтра)
numpy
Установка:
pip install opencv-contrib-python numpy-
Перейдите на https://www.cvlibs.net/datasets/kitti/eval_scene_flow.php?benchmark=stereo
-
Зарегистрируйтесь (бесплатно)
-
Скачайте из раздела "Download stereo 2015 / multi-view extension":
data_scene_flow.zip(~2 ГБ) — содержит стереопары и эталонные карты
Или из раздела "Stereo 2012" (меньше по объёму):
data_stereo_flow.zip
-
Распакуйте в папку
kitti_stereo:
kitti_stereo/
training/
image_2/ ← левые изображения
000000_10.png
000001_10.png
...
image_3/ ← правые изображения
000000_10.png
000001_10.png
...
disp_occ_0/ ← эталонные карты диспаратности (ground truth)
000000_10.png
000001_10.png
...
Базовый запуск (20 изображений):
python stereo_pipeline.py --data_dir ./kitti_stereo/training --output_dir ./resultsПолный прогон (все 200 изображений training split):
python stereo_pipeline.py --data_dir ./kitti_stereo/training --output_dir ./results --num_images 200С изменённым диапазоном диспаратности:
python stereo_pipeline.py --data_dir ./kitti_stereo/training --output_dir ./results --num_disparities 192После запуска в директории results/ появятся:
comparison.png— сводное изображение со всеми алгоритмамиdisp_*.png— цветные карты диспаратности для каждого алгоритмаreport.json— полный отчёт с метриками (машиночитаемый)
Пример вывода в консоль:
Алгоритм MAE RMSE PC(3px) T_mean T_std FPS
------------------------------------------------------------------------------------------
BM (block=9) 5.23 12.41 72.3% 28.3ms 2.1ms 35.3
BM (block=15) 4.87 11.98 74.1% 35.7ms 2.8ms 28.0
SGBM-8dir (block=5) 2.14 6.83 89.2% 92.4ms 5.3ms 10.8
SGBM-8dir (block=3) 2.31 7.12 87.8% 88.1ms 4.9ms 11.4
SGBM-HH (block=5) 1.98 6.21 91.0% 178.3ms 8.7ms 5.6
SGBM-8dir + bilateral 2.18 6.91 88.7% 98.2ms 6.1ms 10.2
SGBM-8dir (no postproc) 2.19 7.01 88.9% 87.5ms 4.7ms 11.4
(числа примерные — реальные значения зависят от вашего оборудования)
| Конфигурация | Алгоритм | Окно | Направления | Постобработка |
|---|---|---|---|---|
| BM (block=9) | Block Matching | 9×9 | — | Медианный 5×5 |
| BM (block=15) | Block Matching | 15×15 | — | Медианный 5×5 |
| SGBM-8dir (block=5) | Semi-Global BM | 5×5 | 8 | Медианный 5×5 |
| SGBM-8dir (block=3) | Semi-Global BM | 3×3 | 8 | Медианный 5×5 |
| SGBM-HH (block=5) | Semi-Global BM | 5×5 | ~16 (полный) | Медианный 5×5 |
| SGBM-8dir + bilateral | Semi-Global BM | 5×5 | 8 | Билатеральный |
| SGBM-8dir (no postproc) | Semi-Global BM | 5×5 | 8 | Нет |