Постройте камеру в 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)');

cameraTable — Свойства объектов визуализации камерыСвойства объектов визуализации камеры, заданные как таблица. Столбцы содержат свойства Name,Value объекта визуализации камеры за исключением Parent, который задает оси для отображения. Если таблица содержит столбец 'ViewId', то представление IDs используется в качестве меток камеры.
Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Location', [0,0,0]местоположение Координаты местоположения камеры[0,0,0] (значение по умолчанию) | трехэлементный векторКоординаты местоположения камеры, заданные как пара, разделенная запятой, состоящая из 'Location' и трехэлементного вектора. [x, y, z] координаты заданы в модулях данных родительских осей.
'Orientation' — Матричная ориентацияeye(3) (значение по умолчанию) | 3х3 3-D матрица вращенияМатричная ориентация, заданная как пара, разделенная запятой, состоящая из 'Orientation' и 3х3 3-D матрицы вращения.
размер Ширина базы камеры1 | скалярШирина базы камеры, заданная как пара, разделенная запятой, состоящая из 'Size' и скаляра.
'Label' — Camera'' (значение по умолчанию) | вектор символовМетка Camera, заданная как пара, разделенная запятой, состоящая из 'Label' и вектора символов.
'Color' — Цвет камеры[1 0 0] (значение по умолчанию) | вектор символов | трехэлементный векторЦвет камеры, заданный как пара, разделенная запятой, состоящая из 'Color' и вектора символов или трехэлементного вектора значений RGB в области значений [0 1]. Смотрите colorspec для получения дополнительной информации о том, как задать цвет RGB.
'Opacity' — Непрозрачность камеры0.2 | скаляр в области значений [0 1]Непрозрачность камеры, заданная как пара, разделенная запятой, состоящая из 'Opacity' и скаляра в области значений [0 1].
'Visible' — Видимость камерыtrue (значение по умолчанию) | falseВидимость камеры, заданная как пара, разделенная запятой, состоящая из 'Visible' и логического true или false.
'AxesVisible' — Видимость осей камерыfalse (значение по умолчанию) | trueВидимость осей камеры, заданная как пара, разделенная запятой, состоящая из 'AxesVisible' и логического true или false.
'ButtonDownFcn' Функция обратного вызова'' | имя функцииФункция обратного вызова, заданная как пара, разделенная запятой, состоящая из 'ButtonDownFcn' и имени функции, которое выполняется, когда вы кликаете по камере.
'Parent' — Выведите осиgcaВыведите оси, заданные как пара, разделенная запятой, состоящая из 'Parent' и указателя осей. Значение по умолчанию установлено в указатель текущей системы координат, gca.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.