opencv: reprojectImageTo3d, какова метрическая единица точки (X,Y,Z)?

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

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

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

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

Спасибо

0 ответов

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

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

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

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

Другие вопросы по тегам