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