Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

geometricTransform3d

Objeto de transformación geométrica 3D

Descripción

Un objeto define una transformación geométrica 3D personalizada mediante funciones de asignación de puntos.geometricTransform3d

Creación

Descripción

ejemplo

tform = geometricTransform3d(inverseFcn) crea un objeto y establece el valor de la propiedad de función de asignación inversa,geometricTransform3d InverseFcn Para.inverseFcn

tform = geometricTransform3d(inverseFcn,forwardFcn) también establece el valor de la propiedad de función de asignación directa, ForwardFcn Para.forwardFcn

Propiedades

expandir todo

Función de asignación inversa, especificada como un identificador de función. La función debe aceptar y devolver coordenadas como una matriz numérica -by-3 que representa las coordenadas empaquetadas ( , , ) de puntos.nxyzn

Para obtener más información acerca de los identificadores de función, consulte .Create Function Handle (MATLAB)

Ejemplo: ifcn = @(xyz) [xyz(:,1).^2,xyz(:,2).^2,xyz(:,3).^2];

Función de asignación directa, especificada como un identificador de función. La función debe aceptar y devolver coordenadas como una matriz numérica -by-3 que representa las coordenadas empaquetadas ( , , ) de puntos.nxyzn

Para obtener más información acerca de los identificadores de función, consulte .Create Function Handle (MATLAB)

Ejemplo: ffcn = @(xyz) [sqrt(xyz(:,1)),sqrt(xyz(:,2)),sqrt(xyz(:,3))];

Funciones del objeto

transformPointsForwardAplicar la transformación geométrica hacia adelante
transformPointsInverseAplicar transformación geométrica inversa

Ejemplos

contraer todo

Especifique las coordenadas empaquetadas ( , , ) de cinco puntos de entrada.xyz Las coordenadas empaquetadas se almacenan como una matriz de 5 por 3, donde las columnas primera, segunda y tercera contienen las -, -, y coordenadas, respectivamente.xy z-

XYZ = [5 25 20;10 5 25;15 10 5;20 15 10;25 20 15];

Defina una función de asignación inversa que acepte y devuelva puntos en formato empaquetado ( , , ).xyz

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

Cree un objeto de transformación geométrica 3D, que almacene esta función de asignación inversa.tform

tform = geometricTransform3d(inverseFcn)
tform =    geometricTransform3d with properties:          InverseFcn: @(c)[c(:,1)+c(:,2),c(:,1)-c(:,2),c(:,3).^2]         ForwardFcn: []     Dimensionality: 3  

Aplique la transformación inversa de esta transformación geométrica 3D a los puntos de entrada.

UVW = transformPointsInverse(tform,XYZ)
UVW = 5×3

    30   -20   400
    15     5   625
    25     5    25
    35     5   100
    45     5   225

Especifique los -, - y los vectores de coordenadas de cinco puntos que se va a transformar.xyz

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

Defina las funciones de asignación inversa y directa que aceptan y devuelven puntos en formato empaquetado ( , , ).xyz

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

Cree un objeto de transformación geométrica 3D, que almacene estas funciones de asignación inversa y directa.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  

Aplique la transformación inversa de esta transformación geométrica 3D a los puntos de entrada.

[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

Aplique la transformación geométrica hacia delante a los puntos transformados, yuvw.

[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

Defina una función de asignación inversa que realice la reflexión sobre el eje horizontal. La función debe aceptar y devolver las coordenadas empaquetadas ( , , ), donde la primera, segunda y tercera columnas contienen las coordenadas -, -, y -, respectivamente.xyzxyz

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

Cree un objeto de transformación geométrica 3D, que almacene esta función de asignación inversa.tform

tform = geometricTransform3d(inverseFcn)
tform =    geometricTransform3d with properties:          InverseFcn: @(xyz)[xyz(:,1),-xyz(:,2),xyz(:,3)]         ForwardFcn: []     Dimensionality: 3  

Cargue y muestre un volumen de RMN que se va a transformar.

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

Se utiliza para aplicar la transformación geométrica inversa al volumen de RMN de entrada.imwarp

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

Muestre los sectores de imagen del volumen de RMN de entrada como montaje.

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

Muestre los sectores de imagen del volumen de RMN transformado como un montaje. Los sectores de imagen transformados son el reflejo de los sectores de imagen de entrada en el eje.x

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

Introducido en R2018b