2016-02-01 4 views
1

У меня есть две камеры с различными разрешениями, но функции stereoCalibrate имеют только один вариант для изображения.Разный размер изображения OpenCV stereoCalibrate

Если я правильно понял, стереокалибровка вычисляет жесткую матрицу преобразования от cam1 до cam2. Если это так, то какой размер камеры следует использовать в качестве входа в функцию stereoCalibrate?

ответ

1

Параметр imageSize используется только для инициализации встроенных матриц камеры.

Я предлагаю калибровать каждую камеру независимо, используя cv::calibrateCamera(), и поэтому получайте матрицы камер и коэффициенты искажения для каждой камеры. А затем оцените трансформацию между системами координат камеры (вращение R и перевод t) с использованием cv::stereoCalibrate() с флагами CV_CALIB_FIX_INTRINSIC с включенными (с предварительно оцененными матрицами камеры и коэффициентами искажения).

И поэтому параметр imageSize не имеет значения.

+0

Спасибо, я сделал то же самое, однако ошибка RMS, сообщаемая функцией cv :: stereoCalibrate(), была высокой (0.57), поэтому мне было интересно, связано ли это с размером изображения. Ошибка Reproj для Cam1 и Cam2 составляет 0,26 и 0,22 соответственно. Я попробовал стерео калибровку от Matlab, ошибка RMS сообщила, что было 0.23. Любая идея, почему ошибка RMS высока в случае OpenCV или у вас есть какие-либо другие предложения по повышению точности. Я использую асимметричный рисунок 7x19, вставленный на плоскую стеклянную пластину. – madhurayavarapu

+0

Я думаю, что ваша окончательная ошибка рекреации достаточно низкая (0,57 px можно считать субпиксельной точностью). Кстати, вы можете играть с параметром 'term_crit' или пытаться использовать другой шаблон (например, шахматная доска). – Kornel

Смежные вопросы