opencv: reprojectImageTo3d, какова метрическая единица точки (X, Y, Z)? - PullRequest
0 голосов
/ 01 марта 2019

во-первых, я хотел узнать метрическую единицу 3d-точки, которую мы получили из функции opencv reprojectImageTo3D ().

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

По сути, я хочу расстояние от центра ограничительной рамки.поэтому я вычисляю карту диспаратности и перепроектирую ее в 3D с помощью функции reprojectImageTo3D (), а затем беру из этих трехмерных точек ту, которая соответствует центру bbox (x, y).Но какое изображение я должен использовать, чтобы получить центр bbox?выпрямленный или оригинальный?

Во-вторых, лучше ли использовать ту же модель камеры для стереосистемы?

Спасибо

1 Ответ

0 голосов
/ 12 марта 2019

Во время процесса калибровки (calibrateCamera) вы должны указать сетку точек вашей цели калибровки.Единица, которую вы даете там, будет определять единицу для остальной части процесса.При вызове reprojectImageTo3D вы, вероятно, использовали вывод матрицы Q на stereoRectify, который учитывает отдельные калибровки (cameraMatrix1, cameraMatrix2).Вот откуда пришло устройство.Так что в вашем случае вы получите мм, я думаю.

reprojectImageTo3D должен использовать выпрямленное изображение, так как несоответствие рассчитывается с использованием выпрямленного изображения (иначе оно не будет правильно выровнено).Кроме того, при расчете диспаратности он рассчитывается относительно первого заданного изображения (левого в документе).Поэтому вы должны использовать левое выпрямленное изображение, если вы вычислили расхождение следующим образом: cv::StereoMatcher::compute(left, right)

У меня никогда не было двух разных камер, но имеет смысл использовать одни и те же.Я думаю, что если у вас очень разные цветовые изображения, края или другие различия, это может повлиять на качество несоответствия.Что на самом деле очень важно (если только вы не работаете с неподвижными изображениями), это использовать камеры, которые можно синхронизировать аппаратно (например, сигнал GENLOCK: https://en.wikipedia.org/wiki/Genlock). Если у вас есть небольшая задержка между левым и правым идвижущийся объект, несоответствие может быть неправильным. Это также верно для калибровки.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...