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

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

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

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

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

Спасибо


person j.scho    schedule 01.03.2019    source источник


Ответы (1)


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

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

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

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

person 87VN0    schedule 12.03.2019
comment
Минимальное несоответствие или количество несоответствий зависит от сцены. Если у вас есть сцена с очень далекими и близкими объектами, вам нужно будет проверить, иначе вы можете насыщать несоответствие (ваше облако точек будет плоским для некоторых частей). Остальные параметры создали некоторые различия, но я еще не мог правильно оценить, какие параметры являются лучшими. Если каким-то образом у вас есть процесс регистрации после реконструкции и, следовательно, основополагающая истина, вы можете проверить по нескольким параметрам самую низкую ошибку регистрации, но в моем случае у меня еще нет такой базовой истины. - person 87VN0; 14.03.2019
comment
Спасибо, действительно, это мне очень помогает! Во-вторых, как лучше всего настроить параметр? Я изменил графический интерфейс для настройки в реальном времени, но не уверен, какую карту диспаратности использовать. Лучше настроить карту диспаратности из cv::StereoMatcher::compute(left, right) или лучше настроить карту, полученную после фильтра - person j.scho; 18.03.2019
comment
В моем случае я оценивал результаты до фильтрации, но я не мог более подробно объяснить, почему имеет смысл делать это до или после. Для меня более интуитивно понятно сначала отфильтровать что-то максимально чистое. Таким образом, настройка параметров, глядя на нефильтрованное облако точек, имеет больше смысла. Мы также могли бы возразить, что это лучше всего фильтровать позже, потому что это на самом деле конечный результат, который вас интересует. Должен признать, что я еще не анализировал алгоритм фильтрации диспаратности. - person 87VN0; 18.03.2019