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.

Registrar imágenes de RMN multimodales

Este ejemplo muestra cómo puede utilizar para alinear automáticamente dos imágenes de resonancia magnética (RM) con un sistema de coordenadas común mediante el registro de imágenes basado en intensidad.imregister A diferencia de otras técnicas, no encuentra entidades ni utiliza puntos de control. El registro basado en la intensidad suele ser adecuado para imágenes médicas y con detección remota.

Paso 1: Cargar imágenes

Este ejemplo utiliza dos imágenes de RMN de una rodilla. La imagen fija es una imagen de eco de giro, mientras que la imagen en movimiento es una imagen de eco de giro con recuperación de inversión. Las dos rodajas sagitales fueron adquiridas al mismo tiempo, pero están ligeramente fuera de alineación.

fixed = dicomread('knee1.dcm'); moving = dicomread('knee2.dcm');

La función es útil para visualizar imágenes durante cada parte del proceso de registro.imshowpair Utilícelo para ver las dos imágenes individualmente de forma de montaje o mostrarlas apiladas para mostrar la cantidad de registro incorrecto.

imshowpair(moving,fixed,'montage') title('Unregistered')

En la imagen superpuesta de , las áreas grises corresponden a áreas que tienen intensidades similares, mientras que las áreas magenta y verde muestran lugares donde una imagen es más brillante que la otra.imshowpair En algunos pares de imágenes, las áreas verde y magenta no siempre indican un registro incorrecto, pero en este ejemplo es fácil usar la información de color para ver dónde lo hacen.

imshowpair(moving,fixed) title('Unregistered')

Paso 2: Configurar el Registro Inicial

La función facilita la elección del optimizador y la configuración de métricas correctos para usar con .imregconfigimregister Estas dos imágenes tienen distribuciones de intensidad diferentes, lo que sugiere una configuración multimodal.

[optimizer,metric] = imregconfig('multimodal');

La distorsión entre las dos imágenes incluye escala, rotación y (posiblemente) cizallamiento. Utilice una transformación afín para registrar las imágenes.

Es muy, muy raro que alineará las imágenes perfectamente con los ajustes predeterminados.imregister Sin embargo, usarlos es una forma útil de decidir qué propiedades ajustar primero.

movingRegisteredDefault = imregister(moving,fixed,'affine',optimizer,metric);  imshowpair(movingRegisteredDefault,fixed) title('A: Default Registration')

Paso 3: Mejorar el registro

El registro inicial no es muy bueno. Todavía hay regiones significativas de mala alineación, particularmente a lo largo del borde derecho. Intente mejorar el registro ajustando las propiedades de configuración del optimizador y de la métrica.

Las variables optimizer y metric son objetos cuyas propiedades controlan el registro.

disp(optimizer)
  registration.optimizer.OnePlusOneEvolutionary    Properties:          GrowthFactor: 1.050000e+00               Epsilon: 1.500000e-06         InitialRadius: 6.250000e-03     MaximumIterations: 100 
disp(metric)
  registration.metric.MattesMutualInformation    Properties:     NumberOfSpatialSamples: 500      NumberOfHistogramBins: 50               UseAllPixels: 1 

La propiedad del optimizador controla el tamaño de paso inicial utilizado en el espacio de parámetros para refinar la transformación geométrica.InitialRadius Cuando los problemas de registro multimodal no convergen con los parámetros predeterminados, es un buen primer parámetro para ajustar.InitialRadius Comience reduciendo el valor predeterminado de por un factor de escala de 3.5.InitialRadius

optimizer.InitialRadius = optimizer.InitialRadius/3.5;  movingRegisteredAdjustedInitialRadius = imregister(moving,fixed,'affine',optimizer,metric);  imshowpair(movingRegisteredAdjustedInitialRadius,fixed) title('B: Adjusted InitialRadius')

El ajuste tuvo un impacto positivo.InitialRadius Hay una mejora notable en la alineación de las imágenes en los bordes superior y derecho.

La propiedad del optimizador controla el número máximo de iteraciones que se permitirá tomar el optimizador.MaximumIterations El aumento permite que la búsqueda de registro se ejecute durante más tiempo y potencialmente encontrar mejores resultados de registro.MaximumIterations ¿El registro sigue mejorando si el del último paso se utiliza con un gran número de iteraciones?InitialRadius

optimizer.MaximumIterations = 300; movingRegisteredAdjustedInitialRadius300 = imregister(moving,fixed,'affine',optimizer,metric);  imshowpair(movingRegisteredAdjustedInitialRadius300,fixed) title('C: Adjusted InitialRadius, MaximumIterations = 300')

Se lograron mejoras adicionales en el registro reutilizando la configuración del optimizador del registro anterior y permitiendo al optimizador tomar un gran número de iteraciones.InitialRadius

Para obtener más información sobre el optimizador multimodal y los parámetros de métricas que se pueden ajustar, consulte las páginas de referencia del optimizador y la métrica.OnePlusOneEvolutionaryMattesMutualInformation

Paso 4: Use las condiciones iniciales para mejorar el registro

El registro basado en la optimización funciona mejor cuando se puede dar una buena condición inicial para el registro que relaciona las imágenes en movimiento y fijas. Una técnica útil para obtener resultados de registro mejorados es comenzar con tipos de transformación más simples como y, a continuación, usar la transformación resultante como condición inicial para tipos de transformación más complicados como .'rigid''affine'

La función utiliza el mismo algoritmo que , pero devuelve un objeto de transformación geométrica como salida en lugar de una imagen de salida registrada.imregtformimregister Se utiliza para obtener una estimación de transformación inicial basada en un modelo (traducción, rotación y escala).imregtform'similarity'

Los resultados de registro anterior mostraron una mejora después de modificar las propiedades del optimizador.MaximumIterationsInitialRadius Mantenga esta configuración del optimizador mientras utiliza las condiciones iniciales al intentar refinar aún más el registro.

tformSimilarity = imregtform(moving,fixed,'similarity',optimizer,metric);

Dado que el registro se está resolviendo en el sistema de coordenadas predeterminado, también conocido como sistema de coordenadas intrínsecas, obtenga el objeto de referencia espacial predeterminado que define la ubicación y la resolución de la imagen fija.

Rfixed = imref2d(size(fixed));

Se utiliza para aplicar la salida de transformación geométrica de la imagen en movimiento para alinearla con la imagen fija.imwarpimregtform Utilice la opción para especificar los límites mundiales y la resolución de la imagen remuestreada de salida.'OutputView'imwarp Especificar como fuerza la imagen en movimiento remuestreada a tener la misma resolución y límites mundiales que la imagen fija.Rfixed'OutputView'

movingRegisteredRigid = imwarp(moving,tformSimilarity,'OutputView',Rfixed);  imshowpair(movingRegisteredRigid, fixed) title('D: Registration Based on Similarity Transformation Model')

La propiedad de la transformación geométrica de salida define la matriz de transformación que asigna puntos al moverse a los puntos correspondientes en fijo.'T'

tformSimilarity.T
ans = 3×3

    1.0331   -0.1110         0
    0.1110    1.0331         0
  -51.1491    6.9891    1.0000

Utilice el nombre/valor para refinar este registro mediante un modelo de transformación con los resultados utilizados como condición inicial para la transformación geométrica.'InitialTransformation'imregister'affine''similarity' Esta estimación refinada para el registro incluye la posibilidad de cizallamiento.

movingRegisteredAffineWithIC = imregister(moving,fixed,'affine',optimizer,metric,...     'InitialTransformation',tformSimilarity);  imshowpair(movingRegisteredAffineWithIC,fixed) title('E: Registration from Affine Model Based on Similarity Initial Condition')

El uso de la para refinar el resultado de con un modelo afín completo también ha dado un buen resultado de registro.'InitialTransformation''similarity'imregtform

Paso 5: Decidir cuándo es suficiente

Comparando los resultados de la ejecución con diferentes configuraciones y condiciones iniciales, se hace evidente que hay un gran número de parámetros de entrada que se pueden variar en imregister, cada uno de los cuales puede dar lugar a resultados de registro diferentes.imregister

Puede ser difícil comparar cuantitativamente los resultados de registro porque no hay una sola métrica de calidad que describa con precisión la alineación de dos imágenes. A menudo, los resultados del registro deben juzgarse cualitativamente visualizando los resultados. En los resultados anteriores, los resultados de registro en C) y E) son muy buenos y son difíciles de distinguir visualmente.

Paso 6: Visualizaciones alternativas

A menudo, a medida que mejora la calidad de los registros multimodales, resulta más difícil juzgar visualmente la calidad del registro. Esto se debe a que las diferencias de intensidad pueden oscurecer las áreas de desalineación. A veces, cambiar a un modo de visualización diferente para exponer detalles ocultos.imshowpair (Este no siempre es el caso.)

Consulte también

| | | | | | |