OpenCV решитьPnP barreldistoriton

Я использую OpenCV SolvePnP, чтобы получить позу / положение камеры. Я делаю это, используя точки, выбранные пользователем, на изображении, которое уже откалибровано и применило исправление радиального и тангенциального искажения.

Однако кажется, что resolvePnP () принимает коэффициенты искажения в качестве входных данных в дополнение к точкам, выбранным на изображении, что, как я полагаю, означает, что SolvePnP применяет исправление искажения к точкам, указанным в качестве входных данных для функции.

Это создало бы небольшую ошибку в моей программе, так как исходное изображение уже искажено, верно?

Если да, то как я могу сделать, чтобы решитьPnP () игнорировать искажение ствола? Могу ли я передать вектор с коэффициентами искажения, установленными только на 1? Или я должен установить все значения на 0? Другой способ?


person Henrik Kjus Alstad    schedule 24.01.2013    source источник


Ответы (1)


Раньше я только что передавал пустой cv :: Mat

cv::solvePnP(world_points, image_points, camera_mat, cv::Mat(), rotation_vector, translation_vector);

в документации говорится, что если вы передадите NULL, все коэффициенты до 0 для вас.

person Hammer    schedule 24.01.2013
comment
Ах, конечно. Я должен был прочитать документацию немного лучше. Спасибо. Другой вопрос: что касается camera_mat, если я использую изображение, которое УЖЕ исправлено с помощью initUndistortMap () + remap (), какую матрицу камеры лучше всего использовать в качестве входных данных для решения Solvepnp? Матрица камеры от коррекции, или простой Mat :: eye ()? - person Henrik Kjus Alstad; 24.01.2013
comment
Замена cv::Mat() на cv::noArray() имеет тот же эффект, но немного проясняет цель. - person Aurelius; 24.01.2013
comment
@HenrikKjusAlstad матрица камеры (назовите ее C) сопоставляет трехмерные мировые координаты с координатами двухмерного изображения. решитьPnP по существу возвращает преобразование (назовите его T) такое, что C T world_coordinate = image_coordinate в меру своих возможностей. Матрица вашей камеры определяется внутренними параметрами вашей камеры - person Hammer; 24.01.2013