Постройте камеру в 3-D координатах
строит камеру по умолчанию в 3-D координатах в текущей системе координат. Функция возвращает cam
= plotCameracam
, 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
Создайте набор калибровочных изображений.
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);
Вычислите новые значения внешних параметров.
[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;
Постройте камеру.
absPose = rigid3d(orientation,location); cam = plotCamera('AbsolutePose',absPose,'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)');
cameraTable
— Свойства камер для визуализацииСвойства камер для визуализации в виде таблицы. Каждая строка представляет одну камеру. Каждый заголовок столбцов должен совпадать с заглавной ролью аргумента пары "имя-значение". Значения броска n устанавливают свойства для n th элемент cam
. Вы не можете задать значения для 'Parent'
. Если таблица содержит 'ViewId'
столбец, затем представление IDs используется, чтобы установить 'Label'
значения камер.
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'Size'
,0.3
задает ширину базы камеры как 0.3
.'AbsolutePose'
— Камера абсолютное положениеrigid3d
объектКамера абсолютное положение в системе мировой координаты в виде разделенной запятой пары, состоящей из 'AbsolutePose'
rigid3d
объект.
'Size'
— Ширина базы камеры
(значение по умолчанию) | положительное вещественное числоШирина базы камеры в виде разделенной запятой пары, состоящей из 'Size'
и положительное вещественное число.
'Label'
— Метка Camera''
(значение по умолчанию) | вектор символов | строковый скалярМетка Camera в виде разделенной запятой пары, состоящей из 'Label
'и вектор символов или строковый скаляр.
'Color'
— Цвет камеры
(красное) (значение по умолчанию) | триплет RGBЦвет камеры в виде разделенной запятой пары, состоящей из 'Color
'и триплет RGB. Триплет RGB представляет собой трехэлементный вектор-строку, элементы которого определяют интенсивность красных, зеленых и синих компонентов цвета. Интенсивность должна быть в области значений [0, 1].
'Opacity'
— Непрозрачность камеры
(значение по умолчанию) | скаляр в области значений [0,1]Непрозрачность камеры в виде разделенной запятой пары, состоящей из 'Opacity
'и скаляр в области значений [0,1].
'Visible'
— Видимость камерыtrue
или 1
(значение по умолчанию) | false
или 0
Видимость камеры в виде разделенной запятой пары, состоящей из 'Visible
'и числовой или логический 1
TRUE
) или 0
ложь
).
'AxesVisible'
— Видимость осей камерыfalse
или 0
(значение по умолчанию) | true
или 1
Видимость осей камеры в виде разделенной запятой пары, состоящей из 'AxesVisible
'и числовой или логический 1
TRUE
) или 0
ложь
).
'ButtonDownFcn'
Функция обратного вызова''
(значение по умолчанию) | указатель на функциюФункция обратного вызова в виде разделенной запятой пары, состоящей из 'ButtonDownFcn
'и функция hangle, который выполняется, когда вы кликаете по камере.
'Parent'
— Выведите осиaxes
указательВыведите оси в виде разделенной запятой пары, состоящей из 'Parent
'и указатель осей. По умолчанию, plotCamera
использует указатель текущей системы координат. Чтобы возвратить текущую систему координат, используйте gca
функция.
cam
— Объект визуализации камерыCamera
возразите | вектор-строка из Camera
объектыОбъект визуализации камеры, возвращенный как одна из этих опций.
Объект Camera — functin возвращает эту опцию при графическом выводе одной камеры. Аргументы пары "имя-значение" или cameraTable
введите элементы, устанавливает соответствующий Camera
свойства объектов.
Вектор-строка из объектов Камеры — functin возвращает эту опцию при графическом выводе нескольких камер. n th - значения строки cameraTable
введите устанавливает свойства для n th Camera
объект в этом векторе.
Объекты камеры создаются с помощью vision.graphics.Camera
класс.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.