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.

Registre imágenes de RMN multimodal

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

Paso 1: Cargue 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 spin con recuperación de inversión. Las dos rebanadas sagital 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 Se usa para ver las dos imágenes individualmente en un montaje de moda o mostrarlas apiladas para mostrar la cantidad de registro erróneo.

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 registro erróneo, 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 hace que sea fácil elegir el optimizador y la configuración de métricas correctas 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 el escalado, la rotación y (posiblemente) la cizalla. 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.

El optimizador y las variables de métrica 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 que se ajusta.InitialRadius Empiece 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á que el optimizador tome.MaximumIterations El aumento permite que la búsqueda de registro se ejecute más y potencialmente encuentre mejores resultados de registro.MaximumIterations ¿El registro continúa 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')

La mejora en el registro se logró reutilizando el ajuste 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étrica que se pueden ajustar, consulte las páginas de referencia para el 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 luego usar la transformación resultante como una 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 Utilíciese 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 anteriores mostraron una mejora después de modificar las propiedades del optimizador.MaximumIterationsInitialRadius Mantenga esta configuración del optimizador mientras usa las condiciones iniciales mientras intenta refinar el registro aún más.

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

Dado que el registro se está solucionando 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 usa para aplicar la salida de transformación geométrica de la imagen en movimiento para alinearlo 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 Si se especifica como fuerza, la imagen en movimiento remuestreada tendrá 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 en movimiento a los puntos correspondientes en Fixed.'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 utilizando 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 producido un buen resultado de registro.'InitialTransformation''similarity'imregtform

Paso 5: decidir cuando suficiente 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 registro, cada uno de los cuales puede conducir a diferentes resultados de registro.imregister

Puede ser difícil comparar cuantitativamente los resultados del registro porque no hay una 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 diferenciarse visualmente.

Paso 6: visualizaciones alternativas

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

Consulte también

| | | | | | |