exponenta event banner

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-by-2 с числом М координат [x y].

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

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

свернуть все

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

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

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

Представлен в R2014b