plotCamera

Постройте камеру в 3-D координатах

Описание

пример

cam = plotCamera строит камеру по умолчанию в 3-D координатах в текущей системе координат. Функция возвращает cam, Camera объект, который содержит свойства нанесенной на график камеры.

пример

cam = plotCamera(cameraTable) графики одна или несколько камер заданы cameraTable.

пример

cam = plotCamera(Name,Value) задает опции с помощью одного или нескольких аргументов пары "имя-значение". Например, 'Opacity',0.4 устанавливает непрозрачность нанесенной на график камеры к 0.4.

Аргументы пары "имя-значение" устанавливают связанные свойства нанесенного на график объекта визуализации камеры.

Примеры

свернуть все

Создайте rigid3d объект.

R = [1 0 0; 0 0 -1;0 1 0];
t = [10 0 20];
pose = rigid3d(R,t);

Постройте камеру с непрозрачностью нуля и абсолютного положения на основе созданного rigid3d объект.

cam = plotCamera('AbsolutePose',pose,'Opacity',0)
cam = 
  Camera with properties:

           Parent: [1x1 Axes]
             Size: 1
     AbsolutePose: [1x1 rigid3d]
          Visible: 1
      AxesVisible: 0
    ButtonDownFcn: ''
            Color: [1 0 0]
          Opacity: 0
            Label: ''

Установите свойства просмотра для текущей системы координат.

grid on
axis equal
axis manual

Расширьте просматриваемые пределы каждой оси. Эти изменения позволяют целой анимации отобразиться на следующем шаге.

xlim([-15 20]);
ylim([-15 20]);
zlim([15 25]);

Вращайте камеру вокруг оси Y.

for theta = 0:pi/64:10*pi
    T = [cos(theta) 0 sin(theta);0 1 0;-sin(theta) 0 cos(theta)];
    cam.AbsolutePose = rigid3d(T * R, [10 * cos(theta), 10 * sin(theta), 20]);
    drawnow();
end

Figure contains an axes object. The axes object contains 10 objects of type line, text, patch.

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

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

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

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

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

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

Калибруйте камеру.

cameraParams = estimateCameraParameters(imagePoints,worldPoints);

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

imOrig = imread(fullfile(toolboxdir('vision'),'visiondata','calibration','slr','image9.jpg'));
figure; imshow(imOrig,'InitialMagnification',50);
title('Input Image');

Figure contains an axes object. The axes object with title Input Image contains an object of type image.

Не исказите изображение.

im = undistortImage(imOrig,cameraParams);

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

[imagePoints,boardSize] = detectCheckerboardPoints(im);

Вычислите новые значения внешних параметров.

[rotationMatrix,translationVector] = extrinsics(imagePoints,worldPoints,cameraParams);

Постройте мировые точки.

figure;
plot3(worldPoints(:,1),worldPoints(:,2),zeros(size(worldPoints, 1),1),'*');
hold on

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

Отметьте источник.

plot3(0,0,0,'g*');

Figure contains an axes object. The axes object contains 2 objects of type line.

Вычислите местоположение камеры и ориентацию.

orientation = rotationMatrix';
location = -translationVector * orientation;

Постройте камеру.

absPose = rigid3d(orientation,location);
cam = plotCamera('AbsolutePose',absPose,'Size',20);

Figure contains an axes object. The axes object contains 12 objects of type line, text, patch.

Сделайте z - точка оси вниз.

set(gca,'CameraUpVector',[0 0 -1]);

Figure contains an axes object. The axes object contains 12 objects of type line, text, patch.

Установите параметры представления.

camorbit(gca,-110,60,'data',[0 0 1]);
axis equal
grid on

Figure contains an axes object. The axes object contains 12 objects of type line, text, patch.

Включите 3-D вращение.

cameratoolbar('SetMode','orbit');

Figure contains an axes object. The axes object contains 12 objects of type line, text, patch.

Подпишите оси.

xlabel('X (mm)');
ylabel('Y (mm)');
zlabel('Z (mm)');

Figure contains an axes object. The axes object contains 12 objects of type line, text, patch.

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

свернуть все

Свойства камер для визуализации в виде таблицы. Каждая строка представляет одну камеру. Каждый заголовок столбцов должен совпадать с заглавной ролью аргумента пары "имя-значение". Значения броска n устанавливают свойства для n th элемент cam. Вы не можете задать значения для 'Parent'. Если таблица содержит 'ViewId' столбец, затем представление IDs используется, чтобы установить 'Label' значения камер.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Size',0.3 задает ширину базы камеры как 0.3.

Камера абсолютное положение в системе мировой координаты в виде разделенной запятой пары, состоящей из 'AbsolutePose' rigid3d объект.

Ширина базы камеры в виде разделенной запятой пары, состоящей из 'Size' и положительное вещественное число.

Метка Camera в виде разделенной запятой пары, состоящей из 'Label'и вектор символов или строковый скаляр.

Цвет камеры в виде разделенной запятой пары, состоящей из 'Color'и триплет RGB. Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0, 1].

Непрозрачность камеры в виде разделенной запятой пары, состоящей из 'Opacity'и скаляр в области значений [0,1].

Видимость камеры в виде разделенной запятой пары, состоящей из 'Visible'и числовой или логический 1 TRUE) или 0 ложь).

Видимость осей камеры в виде разделенной запятой пары, состоящей из 'AxesVisible'и числовой или логический 1 TRUE) или 0 ложь).

Функция обратного вызова в виде разделенной запятой пары, состоящей из 'ButtonDownFcn'и указатель на функцию, который выполняется, когда вы кликаете по камере.

Выведите оси в виде разделенной запятой пары, состоящей из 'Parent'и указатель осей. По умолчанию, plotCamera использует указатель текущей системы координат. Чтобы возвратить текущую систему координат, используйте gca функция.

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

свернуть все

Объект визуализации камеры, возвращенный как одна из этих опций.

  • Объект Camera — функция возвращает эту опцию при графическом выводе одной камеры. Аргументы пары "имя-значение" или cameraTable введите элементы, устанавливает соответствующий Camera свойства объектов.

  • Вектор-строка из объектов Камеры — функция возвращает эту опцию при графическом выводе нескольких камер. n th - значения строки cameraTable введите устанавливает свойства для n th Camera объект в этом векторе.

Объекты камеры создаются с помощью vision.graphics.Camera класс.

Представленный в R2015a