undistortFisheyePoints

Корректировка координат точек для искажения fisheye-линз

Описание

пример

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 object. The axes object 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 object. The axes object with title Undistorted Points contains 2 objects of type image, line.

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

свернуть все

Точки ввода в виде 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

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

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

Введенный в R2017b