exponenta event banner

undistortFisheyePoints

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

Описание

пример

undistortedPoints = undistortFisheyePoints(points,intrinsics) возвращает координаты точек, скорректированные для искажения объектива рыбьего глаза.

undistortedPoints = undistortFisheyePoints(___,scaleFactor) возвращает скорректированные координаты точек с помощью scaleFactor и предыдущие входные данные.

[___,camIntrinsics] = undistortFisheyePoints(___) также возвращает cameraIntrinsics объект, который соответствует виртуальной перспективной камере, которая создает неискаженные точки.

[___,reprojectionErrors] = undistortFisheyePoints(___) также возвращает reprojectionErrors используется для оценки точности неискаженных точек. Функция вычисляет ошибки репроекции, применяя искажение к точкам и беря расстояния между результатом и соответствующими входными точками.

Примеры

свернуть все

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

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

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

Определите шаблон калибровки по изображениям.

[imagePoints,boardSize] = detectCheckerboardPoints(imageFileNames);

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

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

Оцените параметры рыбьего глаза по изображению и мировым точкам. Получение размера изображения из первого изображения.

I = readimage(images,10); 
imageSize = [size(I,1) size(I,2)];
params = estimateFisheyeParameters(imagePoints,worldPoints,imageSize);

На первом изображении определите точки шашки.

points = detectCheckerboardPoints(I);

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

[undistortedPoints,intrinsics1] = undistortFisheyePoints(points,params.Intrinsics);
[J, intrinsics2] = undistortFisheyeImage(I,params.Intrinsics,'OutputView','full');

Переведите неискаженные точки.

newOrigin = intrinsics2.PrincipalPoint - intrinsics1.PrincipalPoint;
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 с координатами M [x y].

Внутренние параметры камеры Fisheye, указанные как fisheyeIntrinsics объект.

Масштабный коэффициент для точек, заданный как скаляр или [sx sy] вектор. Укажите вектор для масштабирования осей x и y по отдельности. Увеличьте масштаб изображения для увеличения перспективы вида камеры.

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

свернуть все

Неискаженные точки, возвращаемые в виде M-by-2 матрицы с М координатами [x y]. Если points является double, то undistortedPoints является double. В противном случае undistortedPoints является single.

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

Неискаженные характеристики виртуальной камеры, возвращенные в виде cameraIntrinsics объект. Эти характеристики относятся к камере с перспективой, которая создает неискаженное изображение.

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

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