pointsToWorld

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

Описание

worldPoints = pointsToWorld(intrinsics,tform,imagePoints) карты неискаженное изображение указывают imagePoints, на точки на X-Y плоскость в мировых координатах, worldPoints использование rigid3d преобразование tform.

пример

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 object. The axes object contains 2 objects of type line. These objects represent Ground Truth, Estimates.

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

свернуть все

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

Преобразование камеры в мировых координатах в виде rigid3d объект.

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