Постройте камеру в 3-D координатах
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);
Вычислите новые значения внешних параметров.
[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 имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.
'Location', [0,0,0]'Location' — Координаты местоположения камеры (значение по умолчанию) | трехэлементный векторКоординаты местоположения камеры, заданные как разделенная запятой пара, состоящая из 'Location'и трехэлементный вектор. [x, y, z] координаты заданы в модулях данных родительских осей.
'Orientation' — Матричная ориентацияeye(3) (значение по умолчанию) | 3х3 3-D матрица вращенияМатричная ориентация, заданная как разделенная запятой пара, состоящая из 'Orientation'и 3х3 3-D матрица вращения.
'Size' — Ширина базы камеры | скалярШирина базы камеры, заданная как разделенная запятой пара, состоящая из 'Size'и скаляр.
'Label' — Метка Camera'' (значение по умолчанию) | вектор символов | представляет скаляр в виде строкиМетка Camera, заданная как разделенная запятой пара, состоящая из 'Label'и вектор символов или скаляр строки.
'Color' — Цвет камеры
(значение по умолчанию) | трехэлементный векторЦвет камеры, заданный как разделенная запятой пара, состоящая из 'Color'и трехэлементный вектор значений RGB в области значений [0 1]. Смотрите colorspec для получения дополнительной информации о том, как задать цвет RGB.
'Opacity' — Непрозрачность камеры | скаляр в области значений [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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.