undistortPoints

Правильные координаты точки для искажения объектива

Описание

undistortedPoints = undistortPoints(points,cameraParams) возвращает координаты точки, скорректированные на искажение объектива. Эта функция использует числовую оптимизацию нелинейного метода наименьших квадратов.

пример

[undistortedPoints,reprojectionErrors] = undistortPoints(points,cameraParams) дополнительно возвращает ошибки, используемые для вычисления точности неискаженных точек.

Примеры

свернуть все

Создайте объект imageDatastore, содержащий калибровочные изображения.

images = imageDatastore(fullfile(toolboxdir('vision'),'visiondata', ...
   'calibration','mono'));
imageFileNames = images.Files;

Обнаружите калибровочный шаблон.

[imagePoints,boardSize] = detectCheckerboardPoints(imageFileNames);

Сгенерируйте мировые координаты углов квадратов. Размер квадрата - в миллиметрах.

squareSize = 29; 
worldPoints = generateCheckerboardPoints(boardSize,squareSize);

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

I = readimage(images,10); 
imageSize = [size(I, 1), size(I, 2)];
params = estimateCameraParameters(imagePoints,worldPoints, ...
                                  'ImageSize',imageSize);

Загрузите изображение и обнаружите шахматные точки.

points = detectCheckerboardPoints(I);

Отмена искажения точек

undistortedPoints = undistortPoints(points,params);

Отмена искажения изображения.

[J, newOrigin] = undistortImage(I,params,'OutputView','full');

Перемещение неискаженных точек

undistortedPoints = [undistortedPoints(:,1) - newOrigin(1), ...
                    undistortedPoints(:,2) - newOrigin(2)];

Отобразите результаты

figure; 
imshow(I); 
hold on;
plot(points(:,1),points(:,2),'r*-');
title('Detected Points'); 
hold off;

Figure contains an axes. The axes with title Detected Points contains 2 objects of type image, line.

figure; 
imshow(J); 
hold on;
plot(undistortedPoints(:,1),undistortedPoints(:,2),'g*-');
title('Undistorted Points'); 
hold off;

Figure contains an axes. The axes with title Undistorted Points contains 2 objects of type image, line.

Входные параметры

свернуть все

Входные точки, заданные M-на-2 матрица M количеством координат [x y].

Параметры камеры, заданные как cameraParameters или cameraIntrinsics объект. Можно вернуть cameraParameters использование объекта estimateCameraParameters функция. The cameraParameters объект содержит собственные, внешние и параметры искажения объектива камеры.

Выходные аргументы

свернуть все

Неискаженные точки, возвращенные как матрица M -by-2. The undistortedPoints выход содержит M [x, y] координат точки, скорректированных на искажение объектива. Когда вы вводите точки как double, функция выводит undistortedPoints как double. В противном случае это выводит undistortedPoints как сингл.

Типы данных: single | double

Ошибки репроекции, возвращенные как вектор M -by-1. Можно использовать ошибки, чтобы вычислить точность неискаженных точек. Функция вычисляет ошибки, применив искажение к неискаженным точкам, а затем взяв расстояния между результатом и соответствующими входными точками. The reprojectionErrors выход в пикселях.

Введенный в R2014b