pointsToWorld

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

Описание

пример

worldPoints = pointsToWorld(intrinsics,rotationMatrix,translationVector,imagePoints) возвращает мировые точки на плоскости X - Y, которые соответствуют входным точкам изображения. Точки преобразуются с помощью матрицы поворота входа, вектора перемещения и характерных особенностей камеры.

Примеры

свернуть все

Сопоставьте точки изображения «рыбий глаз» с мировыми координатами и сравните эти точки с основной истиной точками. Серия изображений шахматного шаблона используется, чтобы оценить параметры рыбьего глаз и калибровать камеру.

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

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

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

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files(1:end-1));

Сгенерируйте мировые координаты шахматных углов в системе координат, ориентированной на массив, с верхним левым углом в (0,0).

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

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

I = imread(images.Files{end}); 
imageSize = [size(I,1) size(I,2)];
fisheyeParams = estimateFisheyeParameters(imagePoints,worldPoints,imageSize);
intrinsics = fisheyeParams.Intrinsics;

Найдите объект ссылки в новом изображении.

imagePoints = detectCheckerboardPoints(I, "PartialDetections", false);

Вычислите новые внешние данные.

[R,t] = extrinsics(imagePoints,worldPoints,intrinsics);

Сопоставьте точки изображения с мировыми координатами в плоскости X-Y.

newWorldPoints = pointsToWorld(intrinsics,R,t,imagePoints);

Сравните предполагаемые мировые точки с основной истиной точками.

plot(worldPoints(:,1),worldPoints(:,2),'gx');
hold on
plot(newWorldPoints(:,1),newWorldPoints(:,2),'ro');
legend('Ground Truth','Estimates');
hold off

Figure contains an axes. The axes contains 2 objects of type line. These objects represent Ground Truth, Estimates.

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

свернуть все

Параметры камеры, заданные как cameraIntrinsics или fisheyeIntrinsics объект. Объекты хранят информацию о внутренних параметрах калибровки камеры, включая параметры искажения объектива.

3-D вращение мировых координат относительно координат изображения, заданное как матрица 3 на 3. Матрица поворота вместе с вектором перемещения позволяет вам преобразовать точки из мировой системы координат в систему координат камеры. The rotationMatrix и translationVector входы должны быть совпадающими типами данных.

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

3-D перемещение мировых координат относительно координат изображения, заданное как вектор 1 на 3. Вектор перемещения вместе с матрицей поворота позволяет вам преобразовать точки из мировой системы координат в систему координат камеры. The rotationMatrix и translationVector входы должны быть совпадающими типами данных.

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

Точки изображения, заданные как M-на-2 матрица, содержащая M [x, y] координаты точек изображения.

При использовании cameraParameters объект как cameraParams вход, pointsToWorld не учитывает искажение объектива. Поэтому imagePoints вход должен содержать точки изображения, обнаруженные в неискаженном изображении, или они должны быть неискажены с помощью undistortPoints функция. Для fisheyeIntrinsics объект, точки изображения искажаются.

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

свернуть все

Мировые координаты, возвращенные как M-на-2 матрица. M представляет количество неискаженных точек в мировых координатах [x, y].

Введенный в R2016a