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-на-2 матрица M [x y] координат.

Параметры собственной камеры «рыбий глаз», заданные как fisheyeIntrinsics объект.

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

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

свернуть все

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

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

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

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

Введенный в R2017b