Постройте камеру в 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.