Примените обратное геометрическое преобразование
Создайте affine2d
объект, который задает преобразование.
theta = 10; tform = affine2d([cosd(theta) -sind(theta) 0; sind(theta) cosd(theta) 0; 0 0 1])
tform = affine2d with properties: T: [3x3 double] Dimensionality: 2
Примените прямое преобразование 2D геометрического преобразования к точке ввода.
[X,Y] = transformPointsForward(tform,5,10)
X = 6.6605 Y = 8.9798
Примените обратное преобразование 2D геометрического преобразования к выходной точке от предыдущего шага, чтобы восстановить исходные координаты.
[U,V] = transformPointsInverse(tform,X,Y)
U = 5.0000 V = 10
Задайте упакованный (x, y) координаты пяти точек ввода. Упакованные координаты хранятся в 5 2 матрица, где x-координата каждой точки находится в первом столбце, и y-координата каждой точки находится во втором столбце.
XY = [10 15;11 32;15 34;2 7;2 10];
Задайте функцию обратного отображения. Функция принимает и возвращает точки в упакованном (x, y) формат.
inversefn = @(c) [c(:,1)+c(:,2),c(:,1)-c(:,2)]
inversefn = function_handle with value:
@(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)]
Создайте 2D объект геометрического преобразования, tform
, это хранит функцию обратного отображения.
tform = geometricTransform2d(inversefn)
tform = geometricTransform2d with properties: InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2)] ForwardFcn: [] Dimensionality: 2
Применяйте обратное геометрическое преобразование к точкам ввода.
UV = transformPointsInverse(tform,XY)
UV = 5×2
25 -5
43 -21
49 -19
9 -5
12 -8
Создайте affine3d
объект, который задает преобразование.
tform = affine3d([3 1 2 0;4 5 8 0;6 2 1 0;0 0 0 1])
tform = affine3d with properties: T: [4×4 double] Dimensionality: 3
Примените прямое преобразование 3-D геометрического преобразования к точке ввода.
[X,Y,Z] = transformPointsForward(tform,2,3,5)
X = 48 Y = 27 Z = 33
Примените обратное преобразование 3-D геометрического преобразования к выходной точке от предыдущего шага, чтобы восстановить исходные координаты.
[U,V,W] = transformPointsInverse(tform,X,Y,Z)
U = 2.0000 V = 3 W = 5.0000
Задайте упакованный (x, y, z) координаты пяти точек ввода. Упакованные координаты хранятся как 5 3 матрица, где первые, вторые, и третьи столбцы содержат x-, y-, и координаты z-, соответственно.
XYZ = [5 25 20;10 5 25;15 10 5;20 15 10;25 20 15];
Задайте функцию обратного отображения, которая принимает и возвращает точки в упакованном (x, y, z) формат.
inverseFcn = @(c) [c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2];
Создайте 3-D объект геометрического преобразования, tform
, это хранит эту функцию обратного отображения.
tform = geometricTransform3d(inverseFcn)
tform = geometricTransform3d with properties: InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2] ForwardFcn: [] Dimensionality: 3
Примените обратное преобразование этого 3-D геометрического преобразования к точкам ввода.
UVW = transformPointsInverse(tform,XYZ)
UVW = 5×3
30 -20 400
15 5 625
25 5 25
35 5 100
45 5 225
tform
— Геометрическое преобразованиеГеометрическое преобразование, заданное как объект геометрического преобразования.
Для 2D геометрических преобразований, tform
affine2d
, projective2d
, geometricTransform2d
, LocalWeightedMeanTransformation2D
, PiecewiseLinearTransformation2D
, или PolynomialTransformation2D
объект геометрического преобразования.
Для 3-D геометрических преобразований, tform
affine3d
объект или geometricTransform3d
объект геометрического преобразования.
x
— x - координаты точек, которые будут преобразованыx- точек, которые будут преобразованы, заданные как m-by-n или m-by-n-by-p числовой массив. Количество размерностей x
совпадает с размерностью tform
.
Типы данных: single
| double
y
— y - координаты точек, которые будут преобразованыy- точек, которые будут преобразованы, заданные как m-by-n или m-by-n-by-p числовой массив. Размер y
должен совпадать с размером x
.
Типы данных: single
| double
z
— z - координаты точек, которые будут преобразованыX
— Координаты точек, которые будут преобразованыКоординаты точек, которые будут преобразованы, заданные как l-by-2 или l-by-3 числовой массив. Количество столбцов X
совпадает с размерностью tform
.
Первые списки столбцов x - координата каждой точки, чтобы преобразовать, и вторые списки столбцов y - координата. Если tform
представляет 3-D геометрическое преобразование, X
имеет размер l-by-3 и третьи списки столбцов z - координата точек, чтобы преобразовать.
Типы данных: single
| double
u
— x - координаты точек после преобразованияx- точек после преобразования, возвращенного как m-by-n или m-by-n-by-p числовой массив. Количество размерностей u
совпадает с размерностью tform
.
Типы данных: single
| double
v
— y - координаты точек после преобразованияy- точек после преобразования, возвращенного как m-by-n или m-by-n-by-p числовой массив. Размер v
совпадает с размером u
.
Типы данных: single
| double
w
— z - координаты точек после преобразованияz- точек после преобразования, возвращенного как m-by-n-by-p числовой массив. Размер w
совпадает с размером u
.
Типы данных: single
| double
U
— Координаты точек после преобразованияКоординаты точек после преобразования, возвращенного как числовой массив. Размер U
совпадает с размером X
.
Первые списки столбцов x - координата каждой точки после преобразования и вторых списков столбцов y - координата. Если tform
представляет 3-D геометрическое преобразование, третьи списки столбцов z - координата точек после преобразования.
Типы данных: single
| double
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.