2016-12-02 4 views
0

У меня есть набор точек, соответствующих 2D-3D, и я хочу откалибровать камеру на основе этих точек. Поскольку 3D-точки не являются плоскими, функция opencv CameraCalibration дает мне ошибку времени выполнения. Кто-нибудь знает какое-либо решение проблемы?калибровка камеры из набора точек, соответствующих 2D-3D

OpenCV Error: Bad аргумент (для неплоской калибровки установок должна быть указана первоначальная внутренняя матрица) в cvCalibrateCamera2, файл /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/calib3d/src/calibration .cpp, линия 1592

Благодаря

+0

Самый простой ответ: использовать плоскостную точку шахматной доски, как показано в [официальной документации OpenCV] (http://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html). Функция calibratecamera предназначена для работы после поиска «планарных» углов с помощью findChessboardCorner, как написано в руководстве. Если вы не хотите этого делать, вы должны быть более конкретным, размещать свой ode и указывать, как генерируются ваши очки, чтобы кто-то мог дать вам конкретный ответ. – marcoresk

ответ

0

Затем попробуйте установить начальные встроенные функции. Для фокусного расстояния (fx, fy) просто используйте (фокусное расстояние объектива в мм)/(размер пикселя датчика изображения в мм). Для cx, cy установите центр изображения. Если датчик имеет 640x480 пикселей, установите (320, 240). Возможно, вам не удастся найти спецификацию датчика изображения, если это дешевая веб-камера, но если это промышленная камера зрения машины, это должно быть легко.

0

Для калибровки OpenCV требуются копланарные точки.

Если вы хотите воспользоваться 2D - 3D соответствий, вы можете использовать DLT методы калибровки камеры или эквивалентные методы, такие как включенные в следующий инструментарий: CalTech Camera Calibration Toolbox

В частности, взглянуть на Heikkil, где вы можете откалибруйте вашу камеру с непланарной установки.