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.

Proyección de haz de ventilador

Nota

Para obtener información sobre cómo crear datos de proyección a partir de integrales de línea a lo largo de rutas paralelas, consulte .Transformación de radón Para convertir los datos de proyección de haz de ventilador en datos de proyección de haz paralelo, utilice la función.fan2para

La función calcula una matriz de imágenes a lo largo de las direcciones especificadas.fanbeamProyecciones Una proyección de una función bidimensional es un conjunto de integrales de línea.f(x,y) La función calcula las integrales de línea a lo largo de trazados que se irradian desde un único origen, formando una forma de ventilador.fanbeam Para representar una imagen, la función toma varias proyecciones de la imagen desde diferentes ángulos girando el origen alrededor del centro de la imagen.fanbeam La figura siguiente muestra una proyección de haz de ventilador único en un ángulo de rotación especificado.

Proyección de haz de ventilador en el ángulo de rotación Theta

Al calcular los datos de proyección de haz de ventilador mediante la función, se especifica como argumentos una imagen y la distancia entre el vértice de las proyecciones de haz de ventilador y el centro de rotación (el píxel central de la imagen).fanbeam La función determina el número de vigas, en función del tamaño de la imagen y la configuración de los parámetros.fanbeamfanbeam

El parámetro especifica cómo se alinean los sensores: o .FanSensorGeometry'arc''line'

Geometría del sensor de ventiladorDescripción
'arc'posiciona los sensores a lo largo de un arco, espaciando los sensores a intervalos de 1 grado.fanbeam Utilice el parámetro para controlar la distancia entre sensores especificando el ángulo entre cada viga.FanSensorSpacing Esta es la geometría predeterminada del sensor de ventilador.
'line'posiciona los sensores a lo largo de una línea recta, en lugar de un arco.fanbeam Utilice el parámetro para especificar la distancia entre los sensores, en píxeles, a lo largo del eje .FanSensorSpacingx

El parámetro especifica el incremento del ángulo de rotación.FanRotationIncrement De forma predeterminada, toma las proyecciones en diferentes ángulos girando el origen alrededor del píxel central a intervalos de 1 grado.fanbeam

Las siguientes figuras ilustran ambas geometrías. La primera figura ilustra la geometría utilizada por la función cuando se establece en (valor predeterminado).fanbeamFanSensorGeometry'arc' Observe cómo se especifica la distancia entre sensores especificando el espaciado angular de las vigas.

Proyección de haz de ventilador con geometría de arco

La figura siguiente ilustra la geometría utilizada por la función cuando se establece en .fanbeamFanSensorGeometry'line' En esta figura, observe cómo se especifica la posición de los sensores especificando la distancia entre ellos en píxeles a lo largo del eje .x

Proyección de haz de ventilador con geometría de línea

Reconstrucción de imágenes a partir de datos de proyección de haz de ventilador

Para reconstruir una imagen a partir de datos de proyección de haz de ventilador, utilice la función.ifanbeam Con esta función, se especifican como argumentos los datos de proyección y la distancia entre el vértice de las proyecciones de haz de ventilador y el centro de rotación cuando se crearon los datos de proyección. Por ejemplo, este código vuelve a crear la imagen a partir de los datos de proyección y la distancia.IPD

I = ifanbeam(P,D);

De forma predeterminada, la función supone que los datos de proyección del haz de ventilador se crearon utilizando la geometría del sensor de ventilador de arco, con vigas espaciadas en ángulos de 1 grado y proyecciones tomadas en incrementos de 1 grado en un rango completo de 360 grados.ifanbeam Al igual que con la función, puede utilizar parámetros para especificar otros valores para estas características de los datos de proyección.fanbeamifanbeam Utilice los mismos valores para estos parámetros que se utilizaron cuando se crearon los datos de proyección. Para obtener más información acerca de estos parámetros, consulte .ifanbeam

La función convierte los datos de proyección del haz de ventilador en datos de proyección de haz paralelo con la función y, a continuación, llama a la función para realizar la reconstrucción de la imagen.ifanbeamfan2parairadon Por este motivo, la función admite ciertos parámetros, que pasa a la función.ifanfeamiradoniradon Consulte para obtener más información sobre la función.La transformación inversa del radóniradon

Reconstruir imagen con proyección inversa de Fanbeam

En este ejemplo se muestra cómo utilizar y formar proyecciones a partir de una imagen de ejemplo y, a continuación, reconstruir la imagen a partir de las proyecciones.fanbeamifanbeam

Genere una imagen de prueba y muésela. La imagen de prueba es el fantasma de cabeza Shepp-Logan, que puede ser generado por la función.phantom La imagen fantasma ilustra muchas de las cualidades que se encuentran en las imágenes tomográficas del mundo real de las cabezas humanas.

P = phantom(256); imshow(P)

Calcular los datos de proyección del haz de ventilador de la imagen de prueba, utilizando el parámetro para variar el espaciado del sensor.FanSensorSpacing En el ejemplo se utiliza la geometría de arco de viga de ventilador, por lo que se especifica el espaciado entre sensores especificando el espaciado angular de las vigas. La primera llamada espacia las vigas a 2 grados; el segundo en 1 grado; y el tercero a 0,25 grados. En cada llamada, la distancia entre el centro de rotación y el vértice de las proyecciones es constante en 250 píxeles. Además, gira la proyección alrededor del píxel central en incrementos de 1 grado.fanbeam

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);

Trazar los datos de proyección .F3 Dado que calcula los datos de proyección en ángulos de rotación de 0 a 360 grados, los mismos patrones se producen en un desplazamiento de 180 grados.fanbeam Las mismas características se están muestreando desde ambos lados.

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

Reconstruya la imagen a partir de los datos de proyección del haz de ventilador utilizando .ifanbeam En cada reconstrucción, haga coincidir el espaciado del sensor del ventilador con el espaciado utilizado cuando se crearon los datos de proyección anteriormente. En el ejemplo se utiliza el parámetro para restringir el tamaño de salida de cada reconstrucción para que sea el mismo que el tamaño de la imagen original.OutputSizeP En la salida, observe cómo la calidad de la reconstrucción mejora a medida que aumenta el número de haces en la proyección. La primera imagen, , fue creada usando el espaciado de 2 grados de las vigas; la segunda imagen, , fue creada usando un espaciado de 1 grado de las vigas; la tercera imagen, , fue creada usando 0.25 espaciado de las vigas.Ifan1Ifan2Ifan3

output_size = max(size(P));  Ifan1 = ifanbeam(F1,D, ...        'FanSensorSpacing',dsensor1,'OutputSize',output_size); figure, imshow(Ifan1) title('Ifan1')

 Ifan2 = ifanbeam(F2,D, ...        'FanSensorSpacing',dsensor2,'OutputSize',output_size); figure, imshow(Ifan2) title('Ifan2')

 Ifan3 = ifanbeam(F3,D, ...        'FanSensorSpacing',dsensor3,'OutputSize',output_size); figure, imshow(Ifan3) title('Ifan3')