undistortFisheyePoints

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

Синтаксис

undistortedPoints = undistortFisheyePoints(points,intrinsics)
undistortedPoints = undistortFisheyePoints(___,scaleFactor)
[___,camIntrinsics] = undistortFisheyePoints(___)
[___,reprojectionErrors] = 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
imshow(J)
hold on
plot(undistortedPoints(:, 1),undistortedPoints(:, 2),'g*-')
title('Undistorted Points')
hold off

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

свернуть все

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

Подозрительный взгляд внутренние параметры камеры, заданные как объект fisheyeIntrinsics.

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

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

свернуть все

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

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

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

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

Введенный в R2017b

Для просмотра документации необходимо авторизоваться на сайте