exponenta event banner

geometricTransform3d

3-D объект геометрического преобразования

Описание

A geometricTransform3d объект определяет пользовательское 3-D геометрическое преобразование с помощью функций точечного отображения.

Создание

Описание

пример

tform = geometricTransform3d(inverseFcn) создает geometricTransform3d объект и устанавливает значение свойства функции обратного отображения, InverseFcn кому inverseFcn.

tform = geometricTransform3d(inverseFcn,forwardFcn) также устанавливает значение свойства функции прямого отображения, ForwardFcn кому forwardFcn.

Свойства

развернуть все

Функция обратного отображения, заданная как дескриптор функции. Функция должна принимать и возвращать координаты в виде n-на-3 числовой матрицы, представляющей упакованные (x, y, z) координаты n точек.

Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.

Пример: ifcn = @(xyz) [xyz(:,1).^2,xyz(:,2).^2,xyz(:,3).^2];

Функция прямого отображения, заданная как дескриптор функции. Функция должна принимать и возвращать координаты в виде n-на-3 числовой матрицы, представляющей упакованные (x, y, z) координаты n точек.

Дополнительные сведения об дескрипторах функций см. в разделе Создание дескриптора функции.

Пример: ffcn = @(xyz) [sqrt(xyz(:,1)),sqrt(xyz(:,2)),sqrt(xyz(:,3))];

Функции объекта

transformPointsForwardПрименение прямого геометрического преобразования
transformPointsInverseПрименение обратного геометрического преобразования

Примеры

свернуть все

Укажите упакованные координаты (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

Задайте векторы координат x, y и z пяти точек для преобразования.

x = [3 5 7 9 11];
y = [2 4 6 8 10];
z = [5 9 13 17 21];

Определите функции обратного и прямого отображения, которые принимают и возвращают точки в упакованном формате (x, y, z).

inverseFcn = @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2];
forwardFcn = @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))];

Создайте 3-D объект геометрического преобразования, tform, которая хранит эти функции обратного и прямого отображения.

tform = geometricTransform3d(inverseFcn,forwardFcn)
tform = 
  geometricTransform3d with properties:

        InverseFcn: @(c)[c(:,1).^2,c(:,2).^2,c(:,3).^2]
        ForwardFcn: @(c)[sqrt(c(:,1)),sqrt(c(:,2)),sqrt(c(:,3))]
    Dimensionality: 3

Примените обратное преобразование этого 3-D геометрического преобразования к входным точкам.

[u,v,w] = transformPointsInverse(tform,x,y,z)
u = 1×5

     9    25    49    81   121

v = 1×5

     4    16    36    64   100

w = 1×5

    25    81   169   289   441

Применение прямого геометрического преобразования к преобразованным точкам u, v, и w.

[x,y,z] = transformPointsForward(tform,u,v,w)
x = 1×5

     3     5     7     9    11

y = 1×5

     2     4     6     8    10

z = 1×5

     5     9    13    17    21

Определите функцию обратного отображения, которая выполняет отражение относительно горизонтальной оси. Функция должна принимать и возвращать упакованные координаты (x, y, z), где первый, второй и третий столбцы содержат координаты x, y и z соответственно.

inverseFcn = @(xyz)[xyz(:,1),-xyz(:,2),xyz(:,3)];

Создайте 3-D объект геометрического преобразования, tform, которая хранит эту функцию обратного отображения.

tform = geometricTransform3d(inverseFcn)
tform = 
  geometricTransform3d with properties:

        InverseFcn: @(xyz)[xyz(:,1),-xyz(:,2),xyz(:,3)]
        ForwardFcn: []
    Dimensionality: 3

Загрузите и отобразите объем МРТ для преобразования.

s = load('mri');
mriVolume = squeeze(s.D);

Использовать imwarp для применения обратного геометрического преобразования к входному объему МРТ.

[mriVolumeTransformed] = imwarp(mriVolume,tform,'nearest','SmoothEdges',true);

Отображение фрагментов изображения из входного объема МРТ в качестве монтажа.

montage(mriVolume,'Size',[4 8],'BackgroundColor','w')
title('Image Slices from 3-D MRI','FontSize',14)

Figure contains an axes. The axes with title Image Slices from 3-D MRI contains an object of type image.

Отображение фрагментов изображения из преобразованного объема МРТ в качестве монтажа. Преобразованные фрагменты изображения являются отражением входных фрагментов изображения по оси X.

montage(mriVolumeTransformed,'Size',[4 8],'BackgroundColor','w')
title('Image Slices from Inverse Geometric Transformation of 3-D MRI','FontSize',14)

Figure contains an axes. The axes with title Image Slices from Inverse Geometric Transformation of 3-D MRI contains an object of type image.

Представлен в R2018b