Применение обратного геометрического преобразования
Создание 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Применение прямого преобразования 2-D геометрического преобразования к входной точке.
[X,Y] = transformPointsForward(tform,5,10)
X =
6.6605
Y =
8.9798Для восстановления исходных координат примените обратное преобразование 2-D геометрического преобразования к выходной точке предыдущего шага.
[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)]
Создайте 2-D объект геометрического преобразования, 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 - Геометрическое преобразованиеГеометрическое преобразование, указанное как объект геометрического преобразования.
Для 2-D геометрических преобразований: tform может быть rigid2d, affine2d, projective2d, geometricTransform2d, LocalWeightedMeanTransformation2D, PiecewiseLinearTransformation2D, или PolynomialTransformation2D объект геометрического преобразования.
Для 3-D геометрических преобразований: tform может быть affine3d, rigid3d, или 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-на-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.