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.

Reconstrucción de una imagen a partir de datos de proyección

Este ejemplo muestra cómo utilizar,, y para formar proyecciones de una imagen de muestra y, a continuación, reconstruir la imagen de las proyecciones.radoniradonfanbeamifanbeam Mientras utiliza una geometría de viga paralela para las proyecciones, utilice una geometría de viga de abanico.radoniradonfanbeamifanbeam Para comparar las geometrías de viga paralela y de viga de ventilador, los ejemplos siguientes crean proyecciones sintéticas para cada geometría y, a continuación, utilizan las proyecciones sintéticas para reconstruir la imagen original.

Una aplicación del mundo real que requiere la reconstrucción de la imagen es la tomografía de absorción de rayos X donde las proyecciones se forman midiendo la atenuación de la radiación que pasa a través de una muestra física en diferentes ángulos. La imagen original se puede pensar como una sección transversal a través de la muestra en la que los valores de intensidad representan la densidad de la muestra. Las proyecciones son recogidas por dispositivos especiales de imágenes médicas y luego una imagen interna de la muestra se reconstruye usando o.iradonifanbeam

La función reconstruye una imagen a partir de proyecciones de viga paralela.iradon En la geometría de viga paralela, cada proyección se forma combinando un conjunto de integrales de línea a través de una imagen en un ángulo específico. La función reconstruye una imagen a partir de proyecciones de vigas de ventilador, que tienen un emisor y varios sensores.ifanbeam

Consulte la guía del usuario del cuadro de herramientas de procesamiento de imágenes™ para ver los diagramas que ilustran ambas geometrías.

Crear Head Phantom

La imagen de prueba es el fantasma de la cabeza Shepp-Logan que se puede generar utilizando la función.phantom La imagen fantasma ilustra muchas cualidades que se encuentran en la imagen tomográfica del mundo real de las cabezas humanas. La concha elíptica brillante a lo largo del exterior es análoga a un cráneo y las muchas elipses en el interior son análogas a las características cerebrales o tumores.

P = phantom(256); imshow(P)

Viga paralela-calcular proyecciones sintéticas

Calcule las proyecciones sintéticas utilizando la geometría de viga paralela y varíe el número de ángulos de proyección. Para cada una de estas llamadas a, la salida es una matriz en la que cada columna es la transformada de radón para uno de los ángulos en el correspondiente.radonTheta

theta1 = 0:10:170;  [R1,~] = radon(P,theta1);  num_angles_R1 = size(R1,2)
num_angles_R1 = 18 
theta2 = 0:5:175;   [R2,~] = radon(P,theta2); num_angles_R2 = size(R2,2)
num_angles_R2 = 36 
theta3 = 0:2:178;   [R3,xp] = radon(P,theta3);  num_angles_R3 = size(R3,2)
num_angles_R3 = 90 

Tenga en cuenta que para cada ángulo, la proyección se calcula en puntos a lo largo del eje XP, donde es una constante que depende de la distancia diagonal de la imagen de tal forma que cada píxel se proyectará para todos los ángulos de proyección posibles.NN

N_R1 = size(R1,1)
N_R1 = 367 
N_R2 = size(R2,1)
N_R2 = 367 
N_R3 = size(R3,1)
N_R3 = 367 

Por lo tanto, si utiliza un Phantom de cabeza más pequeño, la proyección debe calcularse en menos puntos a lo largo del eje XP.

P_128 = phantom(128); [R_128,xp_128] = radon(P_128,theta1); N_128 = size(R_128,1)
N_128 = 185 

Visualice los datos de proyección.R3 Algunas de las características de la imagen fantasma original son visibles en la imagen de.R3 La primera columna corresponde a una proyección a 0 grados, que se integra en la dirección vertical.R3 La columna central corresponde a una proyección a 90 grados, que se integra en las direcciones horizontales. La proyección a 90 grados tiene un perfil más amplio que la proyección a 0 grados debido al gran semi-eje vertical de la elipse más externa del Phantom.

imagesc(theta3,xp,R3) colormap(hot) colorbar xlabel('Parallel Rotation Angle - \theta (degrees)');  ylabel('Parallel Sensor Position - x\prime (pixels)');

Viga paralela-reconstruir cabezal fantasma de datos de proyección

Coincide con el incremento de rotación paralela, en cada reconstrucción con la utilizada anteriormente para crear las proyecciones sintéticas correspondientes.dtheta En un caso del mundo real, usted sabría la geometría de sus transmisores y sensores, pero no la imagen de origen,.P

Las siguientes tres reconstrucciones (, y) muestran el efecto de variar el número de ángulos en los que se realizan las proyecciones.I1I2I3 Por y algunas características que eran visibles en el Phantom original no son claras.I1I2 En concreto, mira las tres elipses en la parte inferior de cada imagen. El resultado se asemeja mucho a la imagen original,.I3P

Observe los artefactos significativos presentes en y.I1I2 Para evitar estos artefactos, utilice un mayor número de ángulos.

% Constrain the output size of each reconstruction to be the same as the % size of the original image, |P|. output_size = max(size(P));  dtheta1 = theta1(2) - theta1(1); I1 = iradon(R1,dtheta1,output_size);  dtheta2 = theta2(2) - theta2(1); I2 = iradon(R2,dtheta2,output_size);  dtheta3 = theta3(2) - theta3(1); I3 = iradon(R3,dtheta3,output_size);  figure montage({I1,I2,I3},'Size',[1 3]) title('Reconstruction from Parallel Beam Projection with 18, 24, and 90 Projection Angles')

Haz de ventilador-calcular proyecciones sintéticas

Calcule las proyecciones sintéticas utilizando la geometría de haz de ventilador y varíe el ' FanSensorSpacing '.

D = 250;  dsensor1 = 2; F1 = fanbeam(P,D,'FanSensorSpacing',dsensor1);  dsensor2 = 1; F2 = fanbeam(P,D,'FanSensorSpacing',dsensor2);  dsensor3 = 0.25; [F3, sensor_pos3, fan_rot_angles3] = fanbeam(P,D,...                                              'FanSensorSpacing',dsensor3);

Visualice los datos de proyección.F3 Observe que los ángulos de rotación del ventilador oscilan entre 0 y 360 grados y que los mismos patrones se producen en un desplazamiento de 180 grados porque las mismas entidades se están muestreando desde ambos lados. Puede correlacionar entidades en esta imagen de proyecciones de vigas de ventilador con las mismas entidades en la imagen de proyecciones de viga paralela, arriba.

imagesc(fan_rot_angles3, sensor_pos3, F3) colormap(hot) colorbar xlabel('Fan Rotation Angle (degrees)') ylabel('Fan Sensor Position (degrees)')

Fan Beam-reconstruir Head Phantom de Projection Data

Haga coincidir el espaciado del sensor de ventilador en cada reconstrucción con el que se utiliza para crear cada una de las proyecciones sintéticas. En un caso del mundo real, usted sabría la geometría de sus transmisores y sensores, pero no la imagen de origen,.P

Cambiar el valor de la ' FanSensorSpacing ' cambia eficazmente el número de sensores utilizados en cada ángulo de rotación. Para cada una de estas reconstrucciones de vigas de ventilador, se utilizan los mismos ángulos de rotación. Esto contrasta con las reconstrucciones de vigas paralelas que utilizaron diferentes ángulos de rotación.

Tenga en cuenta que ' FanSensorSpacing ' es sólo un parámetro de varios que puede controlar cuando se utiliza y.fanbeamifanbeam También puede convertir de ida y vuelta entre datos de proyección de vigas paralelas y de ventiladores utilizando las funciones y.fan2parapara2fan

Ifan1 = ifanbeam(F1,D,'FanSensorSpacing',dsensor1,'OutputSize',output_size); Ifan2 = ifanbeam(F2,D,'FanSensorSpacing',dsensor2,'OutputSize',output_size); Ifan3 = ifanbeam(F3,D,'FanSensorSpacing',dsensor3,'OutputSize',output_size);  figure montage({Ifan1,Ifan2,Ifan3},'Size',[1 3]) title('Reconstruction from Fan Beam Projection with 18, 24, and 90 Projection Angles')