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. The axes 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. The axes 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. The axes contains an object of type line.

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

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

Figure contains an axes. The axes 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. The axes contains 12 objects of type line, text, patch.

Постройте точку Z вниз.

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

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

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

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

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

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

cameratoolbar('SetMode','orbit');

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

Пометьте оси.

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

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

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

свернуть все

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

Аргументы в виде пар имя-значение

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

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

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

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

Введенный в R2015a