plotCamera

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

Синтаксис

cam = plotCamera()
cam = plotCamera(cameraTable)
cam = plotCamera(Name,Value)

Описание

пример

cam = plotCamera() создает объект визуализации камеры, представленный в текущей системе координат.

пример

cam = plotCamera(cameraTable) возвращает массив объектов визуализации камеры, представленных в текущей системе координат.

пример

cam = plotCamera(Name,Value) создает объект визуализации камеры со значениями свойств, заданными одним или несколькими аргументами пары Name,Value.

Примеры

свернуть все

Постройте камеру, указывающую вдоль оси Y.

    R = [1     0     0;
         0     0    -1;
         0     1     0];

Обнулите непрозрачность камеры для более быстрой анимации.

    cam = plotCamera('Location',[10 0 20],'Orientation',R,'Opacity',0);

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

    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.Orientation = T * R;
        cam.Location = [10 * cos(theta),10 * sin(theta),20];
        drawnow();
    end

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

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

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

im = undistortImage(imOrig,cameraParams);

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

[imagePoints,boardSize] = detectCheckerboardPoints(im);

Вычислите новый extrinsics.

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

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

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

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

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

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

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

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

cam = plotCamera('Location',location,'Orientation',orientation,'Size',20);

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

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

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

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

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

cameratoolbar('SetMode','orbit');

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

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

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

свернуть все

Свойства объектов визуализации камеры, заданные как таблица. Столбцы содержат свойства Name,Value объекта визуализации камеры за исключением Parent, который задает оси для отображения. Если таблица содержит столбец 'ViewId', то представление IDs используется в качестве меток камеры.

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

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

Пример: 'Location', [0,0,0]

Координаты местоположения камеры, заданные как пара, разделенная запятой, состоящая из 'Location' и трехэлементного вектора. [x, y, z] координаты заданы в модулях данных родительских осей.

Матричная ориентация, заданная как пара, разделенная запятой, состоящая из 'Orientation' и 3х3 3-D матрицы вращения.

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

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

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

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

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

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

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

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

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