В этом примере показано, как оценить точность параметров камеры, оцененных с помощью 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);
Можно быстро обнаружить очевидные ошибки при калибровке, построив график относительного расположения камеры и шаблона калибровки. Используйте showExtrinsics функция для построения графиков расположения калибровочного массива в системе координат камеры или местоположения камеры в системе координат массива. Ищите очевидные проблемы, такие как шаблон, находящийся позади камеры, или камера, находящаяся позади шаблона. Также проверьте, находится ли шаблон слишком далеко или слишком близко к камере.
figure;
showExtrinsics(params, 'CameraCentric');
figure;
showExtrinsics(params, 'PatternCentric');
Ошибки повторного впрыска обеспечивают качественную меру точности. Ошибка репроекции - это расстояние между ключевой точкой шаблона, обнаруженной в калибровочном изображении, и соответствующей точкой мира, спроецированной в то же изображение. showReprojectionErrors функция обеспечивает полезную визуализацию средней ошибки репроекции в каждом калибровочном изображении. Если общая средняя ошибка репроекции слишком высока, рассмотрите возможность исключения изображений с самой высокой ошибкой и повторной калибровкой.
figure; showReprojectionErrors(params);

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