worldToImage

Проецируйте точки мира в изображение

Описание

пример

imagePoints = worldToImage(intrinsics,rotationMatrix,translationVector,worldPoints) возвращает проекцию точек 3-D мира в изображение, задаваемое характеристиками камеры, матрицей поворота и вектором перемещения.

[imagePoints,validIndex] = worldToImage(___) также возвращает индексы допустимых точек изображения, которые находятся в контурах изображения, используя любой из предыдущих синтаксических входов.

[___] = worldToImage(___'ApplyDistortion',distort) возвращает проекцию с опцией применения искажений. Этот синтаксис поддерживается для параметров камеры, отличной от fisheye.

Примеры

свернуть все

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

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

Обнаружите шахматные углы на изображениях.

[imagePoints,boardSize] = detectCheckerboardPoints(images.Files);

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

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

Калибровка камеры.

cameraParams = estimateCameraParameters(imagePoints,worldPoints);

Загрузите изображение в новое место.

imOrig = imread(fullfile(matlabroot,'toolbox','vision','visiondata', ...
        'calibration','slr','image9.jpg'));

imshow(imOrig,'InitialMagnification',30);

Figure contains an axes. The axes contains an object of type image.

Отмена искажения изображения.

imUndistorted = undistortImage(imOrig,cameraParams);

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

[imagePoints,boardSize] = detectCheckerboardPoints(imUndistorted);

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

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

Добавьте координату Z к мировым точкам.

zCoord = zeros(size(worldPoints,1),1);
worldPoints = [worldPoints zCoord];

Проецируйте точки мира назад в оригинальное изображение.

projectedPoints = worldToImage(cameraParams,R,t,worldPoints);
hold on
plot(projectedPoints(:,1),projectedPoints(:,2),'g*-');
legend('Projected points');
hold off

Figure contains an axes. The axes contains 2 objects of type image, line. This object represents Projected points.

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

свернуть все

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

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

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

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

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

3D мировые точки, определенные как матрица <reservedrangesplaceholder4>-by-3, содержащая M [x, y, z] координаты 3D мировых точек.

Опция применения искажения объектива, заданная как false или true. Когда вы задаете этот аргумент как trueфункция применяет искажение объектива к выходу imagePoints.

Этот аргумент действителен только при использовании cameraParameters объект как cameraParams вход.

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

свернуть все

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

Допустимый индекс, возвращенный как логический массив M -by-1, который задает индексы допустимых точек изображения в imagePoints выходы, которые находятся в контурах изображения. Мировые точки, которые соответствуют индексам, находятся внутри поля зрения камеры.

Введенный в R2016b