exponenta event banner

Оценка точности калибровки одной камеры

В этом примере показано, как оценить точность параметров камеры, оцененных с помощью cameraCalibrator приложение или estimateCameraParameters функция.

Обзор

Калибровка камеры - процесс оценки параметров камеры с использованием изображений специальной калибровочной схемы. Параметры включают в себя характеристики камеры, коэффициенты искажения и внешние характеристики камеры. После калибровки камеры существует несколько способов оценки точности расчетных параметров:

  • Постройте график относительного расположения камеры и шаблона калибровки

  • Расчет ошибок повторного впрыска

  • Вычислить ошибки оценки параметров

Калибровка камеры

Оцените параметры камеры, используя набор изображений шаблона калибровки шахматной доски.

% Create a set of calibration images.
images = imageDatastore(fullfile(toolboxdir('vision'), 'visiondata', ...
    'calibration', 'mono'));
imageFileNames = images.Files;

% Detect calibration pattern.
[imagePoints, boardSize] = detectCheckerboardPoints(imageFileNames);

% Generate world coordinates of the corners of the squares.
squareSize = 29; % millimeters
worldPoints = generateCheckerboardPoints(boardSize, squareSize);

% Calibrate the camera.
I = readimage(images, 1); 
imageSize = [size(I, 1), size(I, 2)];
[params, ~, estimationErrors] = estimateCameraParameters(imagePoints, worldPoints, ...
                                     'ImageSize', imageSize);

Extrinsics

Можно быстро обнаружить очевидные ошибки при калибровке, построив график относительного расположения камеры и шаблона калибровки. Используйте showExtrinsics функция для построения графиков расположения калибровочного массива в системе координат камеры или местоположения камеры в системе координат массива. Ищите очевидные проблемы, такие как шаблон, находящийся позади камеры, или камера, находящаяся позади шаблона. Также проверьте, находится ли шаблон слишком далеко или слишком близко к камере.

figure; 
showExtrinsics(params, 'CameraCentric');

Figure contains an axes. The axes with title Extrinsic Parameters Visualization contains 23 objects of type patch, text, line.

figure; 
showExtrinsics(params, 'PatternCentric');

Figure contains an axes. The axes with title Extrinsic Parameters Visualization contains 47 objects of type patch, text, line.

Ошибки повторного впрыска

Ошибки повторного впрыска обеспечивают качественную меру точности. Ошибка репроекции - это расстояние между ключевой точкой шаблона, обнаруженной в калибровочном изображении, и соответствующей точкой мира, спроецированной в то же изображение. showReprojectionErrors функция обеспечивает полезную визуализацию средней ошибки репроекции в каждом калибровочном изображении. Если общая средняя ошибка репроекции слишком высока, рассмотрите возможность исключения изображений с самой высокой ошибкой и повторной калибровкой.

figure; 
showReprojectionErrors(params);

Figure contains an axes. The axes with title Mean Reprojection Error per Image contains 3 objects of type bar, line. This object represents Overall Mean Error: 0.18 pixels.

Ошибки оценки

Ошибки оценки представляют неопределенность каждого оцененного параметра. estimateCameraParameters функция дополнительно возвращает estimationErrors вывод, содержащий стандартную ошибку, соответствующую каждому оцененному параметру камеры. Для вычисления доверительных интервалов может использоваться возвращаемая стандартная погрешность (в тех же единицах, что и соответствующий параметр). Например, +/- 1,96, соответствует 95% доверительному интервалу. Другими словами, вероятность того, что фактическое значение данного параметра находится в пределах 1,96λ от его оценки, составляет 95%.

displayErrors(estimationErrors, params);
			Standard Errors of Estimated Camera Parameters
			----------------------------------------------

Intrinsics
----------
Focal length (pixels):   [  714.1886 +/- 3.3219      710.3786 +/- 4.0579  ]
Principal point (pixels):[  563.6480 +/- 5.3967      355.7251 +/- 3.3036  ]
Radial distortion:       [   -0.3536 +/- 0.0091        0.1730 +/- 0.0488  ]

Extrinsics
----------
Rotation vectors:
                         [   -0.6096 +/- 0.0054       -0.1789 +/- 0.0073       -0.3835 +/- 0.0024  ]
                         [   -0.7283 +/- 0.0050       -0.0996 +/- 0.0072        0.1964 +/- 0.0027  ]
                         [   -0.6722 +/- 0.0051       -0.1444 +/- 0.0074       -0.1329 +/- 0.0026  ]
                         [   -0.5836 +/- 0.0056       -0.2901 +/- 0.0074       -0.5622 +/- 0.0025  ]
                         [   -0.3157 +/- 0.0065       -0.1441 +/- 0.0075       -0.1067 +/- 0.0011  ]
                         [   -0.7581 +/- 0.0052        0.1947 +/- 0.0072        0.4324 +/- 0.0030  ]
                         [   -0.7515 +/- 0.0051        0.0767 +/- 0.0072        0.2070 +/- 0.0029  ]
                         [   -0.6223 +/- 0.0053        0.0231 +/- 0.0073        0.3663 +/- 0.0024  ]
                         [    0.3443 +/- 0.0063       -0.2226 +/- 0.0073       -0.0437 +/- 0.0014  ]

Translation vectors (mm):
                         [ -146.0516 +/- 6.0391      -26.8684 +/- 3.7318      797.9027 +/- 3.9002  ]
                         [ -209.4357 +/- 6.9637      -59.4563 +/- 4.3578      921.8198 +/- 4.6295  ]
                         [ -129.3823 +/- 7.0907      -44.1028 +/- 4.3751      937.6832 +/- 4.4913  ]
                         [ -151.0048 +/- 6.6905      -27.3251 +/- 4.1339      884.2789 +/- 4.3925  ]
                         [ -174.9499 +/- 6.7056      -24.3498 +/- 4.1606      886.4961 +/- 4.6686  ]
                         [ -134.3095 +/- 7.8887     -103.4979 +/- 4.8925     1042.4554 +/- 4.8184  ]
                         [ -173.9845 +/- 7.6891      -73.1689 +/- 4.7812     1017.2386 +/- 4.8126  ]
                         [ -202.9446 +/- 7.4327      -87.9089 +/- 4.6482      983.6958 +/- 4.9072  ]
                         [ -319.8860 +/- 6.3213     -119.8897 +/- 4.0922      829.4582 +/- 4.9591  ]

Как повысить точность калибровки

Приемлемость определенной ошибки при повторном заклинении или оценке зависит от требований к точности конкретного приложения. Однако если вы определили, что точность калибровки неприемлема, существует несколько способов ее улучшения:

  • Измените настройки калибровки. Попробуйте использовать 3 коэффициента радиального искажения, оценивая тангенциальное искажение или наклон.

  • Сделайте больше калибровочных изображений. Узор на изображениях должен быть в разных 3D ориентациях, и он должен располагаться так, чтобы у вас были ключевые точки во всех частях поля зрения. В частности, очень важно иметь ключевые точки вблизи краев и углов изображения, чтобы получить лучшую оценку коэффициентов искажения.

  • Исключите изображения с высокими ошибками повторного впрыска и выполните повторную калибровку.

Резюме

В этом примере показано, как получить и интерпретировать ошибки калибровки камеры.

Ссылки

[1] З. Чжан. Гибкая новая методика калибровки камеры. Транзакции IEEE по анализу шаблонов и машинному интеллекту, 22 (11): 1330-1334, 2000.