Vasily 0 Жалоба Опубликовано October 11, 2012 Всем привет. Пробую построить disparity map для 2-х стерео камер. Для начала решил поиграться с тем, что есть в примерах из OpenCV. Изображения взял из opencv\samples\cpp\ (leftXX.jpg и rightXX.jpg) 1. откалибровал камеры по этим изображениям (stereo_calib.cpp). получил ошибку RMS error = 0.47 2. построил disparity map (stereo_match.cpp) пробовал алгоритмы Bm, SGBM, HH, VAR. c параметрами по умолчанию, пробовал менять параметры в различных пределах. Всеравно какая-то лажа получается. Это в OpenCV их же пример криво рабтают? или вообще с disparity там полная ж...? Вот наиболее лучший результат из того, что получилось Исходные изображения: Левое: Правое: У меня задача, построить карту помещения. Нужно стены нормально видеть. Вообще реально добиться чего-то наподобии или Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 11, 2012 Ну не знаю, у меня стандартный пример выдает вот что: по мне, так вполне сносно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Vasily 0 Жалоба Опубликовано October 11, 2012 Ну не знаю, у меня стандартный пример выдает вот что: по мне, так вполне сносно. а на opencv\samples\cpp\ (leftXX.jpg и rightXX.jpg) Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 11, 2012 Так это для изображения для калибровки они с дисторсией. видимо с калибровкой проблема. Сейчас посмотрю, что у меня получится. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано October 11, 2012 У меня вот что получилось на первой паре: Вот что делал: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
zloibobig 4 Жалоба Опубликовано November 2, 2012 Vasily, я в аналогичном проекте использовал Semi-Global Block Matching алгоритм, он был единственным, который работал очень хорошо. Здесь все зависит от калибровки камер, а именно от ректификации изображений с левой и правой камер. Это когда точки левого и правого изборажения имеют одинаковые y координаты. Я очень сильно намучался с этой калибровкой. Пришлось лепить целую конструкцию, чтобы камеры не смещались во время движения, иначе вся карта глубины превращалась в мусор и приходилось заново калибровать. Если потребуется могу прислать пример кода и параметров алгоритма. http://www.cvlibs.net/software/libelas.html Еще посмотрите вот эту библиотеку, выдает очень хорошие результаты при большом расстоянии между камерами. Там же есть библиотека для одометрии и зд реконструкции, как раз что вам и нужно. А вообще купите кинект, с ним все это гораздо проще. 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
mrgloom 242 Жалоба Опубликовано November 2, 2012 напишите о своем опыте. будет интересно послушать. ну и код не помешает конечно. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
slicktail 1 Жалоба Опубликовано November 5, 2012 Подскажите, как можно сравнить disparity maps между собой? Насколько я понимаю, они представляют собой матрицу нормализованную со значениями от 0 до 255 (уже после нормализации). Как можно таким образом сравнить два алгоритма между собой? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано November 5, 2012 Для сравнения алгоритмов есть специальные наборы изображений, куда входит правильная карта глубины, полученная с помощью чего-либо точного (Ground truth). Вот как здесь, например: http://www.uni-bonn.de/~uzs75l/MRTStereo/stereo_data/index.html Прогоняем каждый из алгоритмов и сравниваем с эталоном. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
slicktail 1 Жалоба Опубликовано November 5, 2012 Для сравнения алгоритмов есть специальные наборы изображений, куда входит правильная карта глубины, полученная с помощью чего-либо точного (Ground truth). Вот как здесь, например: http://www.uni-bonn.de/~uzs75l/MRTStereo/stereo_data/index.html Прогоняем каждый из алгоритмов и сравниваем с эталоном. Спасибо, скажите, зачем указывают две карты диспаритета? Насколько я понимаю, карта диспаритета одна строится по двум изображениям. Какую брать? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
slicktail 1 Жалоба Опубликовано November 8, 2012 Еще вопрос, где можно взять набор неректифицированных изображений для теста? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах