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

В этом примере показано, как оценить точность параметров камеры, оцененных с помощью 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');

Ошибки перепроекции

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

figure; 
showReprojectionErrors(params);

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

Ошибки оценки представляют неопределенность в каждом предполагаемом параметре. 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.3785 +/- 4.0579  ]
Principal point (pixels):[  563.6481 +/- 5.3967      355.7252 +/- 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.0517 +/- 6.0391      -26.8685 +/- 3.7318      797.9026 +/- 3.9002  ]
                         [ -209.4358 +/- 6.9637      -59.4565 +/- 4.3578      921.8198 +/- 4.6295  ]
                         [ -129.3825 +/- 7.0907      -44.1030 +/- 4.3751      937.6831 +/- 4.4913  ]
                         [ -151.0049 +/- 6.6905      -27.3253 +/- 4.1339      884.2788 +/- 4.3925  ]
                         [ -174.9500 +/- 6.7056      -24.3499 +/- 4.1606      886.4961 +/- 4.6686  ]
                         [ -134.3097 +/- 7.8887     -103.4981 +/- 4.8925     1042.4553 +/- 4.8184  ]
                         [ -173.9846 +/- 7.6891      -73.1691 +/- 4.7812     1017.2385 +/- 4.8126  ]
                         [ -202.9448 +/- 7.4327      -87.9091 +/- 4.6482      983.6957 +/- 4.9072  ]
                         [ -319.8862 +/- 6.3213     -119.8898 +/- 4.0922      829.4581 +/- 4.9591  ]

Как улучшить калибровочную точность

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

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

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

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

Сводные данные

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

Ссылки

[1] Цз. Чжан. Гибкий новый техник для калибровки фотоаппарата. Транзакции IEEE согласно Анализу Шаблона и Искусственному интеллекту, 22 (11):1330-1334, 2000.