exponenta event banner

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);

Оцените параметры камеры «рыбий глаз» по изображению и точкам мира. Используйте первое изображение для получения размера изображения.

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. Матрица поворота вместе с вектором перемещения позволяет преобразовывать точки из мировой системы координат в систему координат камеры. rotationMatrix и translationVector входные данные должны быть одного типа.

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

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

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

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

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

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

свернуть все

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

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