Main Content

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.

iradon

Transformación inversa del radón

Descripción

ejemplo

I = iradon(R,theta) reconstruye la imagen a partir de los datos de proyección en . describe los ángulos (en grados) en los que se tomaron las proyecciones.IRtheta

Opcionalmente, puede calcular la transformación de radón inversa usar una GPU (requiere ).Parallel Computing Toolbox™

I = iradon(R,theta,interp,filter,frequency_scaling,output_size) especifica los parámetros que se utilizarán en la transformación de radón inversa. Puede especificar cualquier combinación de los últimos cuatro argumentos. utiliza valores predeterminados para los argumentos que se omiten.iradon

[I,H] = iradon(___) también devuelve la respuesta de frecuencia del filtro, .H

Ejemplos

contraer todo

Crea una imagen del fantasma. Muestre la imagen.

P = phantom(128);  imshow(P) title('Original image')

Realice una transformación de radón de la imagen.

R = radon(P,0:179);

Realice la backproyeccion filtrada.

I1 = iradon(R,0:179);

Realice la proyección posterior sin filtrar.

I2 = iradon(R,0:179,'linear','none');

Muestre las imágenes reconstruidas.

figure subplot(1,2,1) imshow(I1,[]) title('Filtered Backprojection') subplot(1,2,2) imshow(I2,[]) title('Unfiltered Backprojection')

Crea una imagen del fantasma.

P = phantom(128);

Realice una transformación de radón de la imagen y, a continuación, obtenga el vector de proyección correspondiente a una proyección en un ángulo de 45 grados.

R = radon(P,0:179); r45 = R(:,46);

Realice la transformación de radón inversa de este único vector de proyección. La sintaxis no permite hacer esto directamente, porque si es un escalar se trata como un incremento.iradontheta Puede realizar la tarea pasando dos copias del vector de proyección y, a continuación, dividiendo el resultado por 2.

I = iradon([r45 r45], [45 45])/2;

Muestre el resultado.

imshow(I, []) title('Backprojection from 45 degrees')

Argumentos de entrada

contraer todo

Datos de proyección de viga paralela, especificados como uno de los siguientes.

  • Si es un escalar, especifique como vector de columna numérico que contenga la transformación Radon para grados.thetaRtheta

  • Si es un vector, especifique como una matriz 2D en la que cada columna es la transformación Radon para uno de los ángulos en .thetaRtheta

Tipos de datos: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

Los ángulos de proyección (en grados), especificados como uno de los siguientes.

ValorDescripción
vector numéricoAngulos de proyección. Debe haber un espaciado igual entre los ángulos.
escalar numéricoAngulo incremental entre proyecciones. Las proyecciones se toman en ángulos, dondem*theta m = 0,1,2,...,size(R,2)-1.
[]Establezca automáticamente el ángulo incremental entre proyecciones en180/size(R,2)

Tipos de datos: double

Tipo de interpolación que se va a utilizar en la proyección posterior, especificado como uno de estos valores, enumerados en orden de creciente precisión y complejidad computacional.

Valor

Descripción

'nearest'

Interpolación de vecino sin vecinos más cercanos

'linear'

Interpolación lineal (valor predeterminado)

'spline'

Interpolación de spline

'pchip'Interpolación cúbica por pieza que conserva la forma

Tipos de datos: char | string

Filtro que se usará para el filtrado de dominio de frecuencia, especificado como uno de estos valores.

Valor

Descripción

'Ram-Lak'

Recortado Ram-Lak o filtro de rampa. La respuesta de frecuencia de este filtro es de |.f Dado que este filtro es sensible al ruido en las proyecciones, uno de los filtros enumerados a continuación podría ser preferible. Estos filtros multiplican el filtro Ram-Lak por una ventana que descalcifica las frecuencias altas.

'Shepp-Logan'

Multiplica el filtro Ram-Lak por una funciónsinc

'Cosine'

Multiplica el filtro Ram-Lak por una funcióncosine

'Hamming'

Multiplica el filtro Ram-Lak por una ventana Hamming

'Hann'

Multiplica el filtro Ram-Lak por una ventana Hann

'None'Sin filtrado. devuelve datos de backprojection sin filtrar.iradon

Tipos de datos: char | string

Factor de escala para reescalar el eje de frecuencia, especificado como un número positivo en el rango (0, 1]. Si es menor que 1, entonces el filtro se comprime para caber en el rango de frecuencia, en frecuencias normalizadas; todas las frecuencias anteriores se establecen en .frequency_scaling[0,frequency_scaling] frequency_scaling0

Número de filas y columnas de la imagen reconstruida, especificado como un entero positivo. Si no se especifica, el tamaño se determina a partir de la longitud de las proyecciones según:output_size

output_size = 2*floor(size(R,1)/(2*sqrt(2)))

Si especifica , reconstruye una parte más pequeña o más grande de la imagen, pero no cambia el escalado de los datos.output_sizeiradon Si las proyecciones se calcularon con la función, es posible que la imagen reconstruida no tenga el mismo tamaño que la imagen original.radon

Argumentos de salida

contraer todo

Imagen en escala de grises, devuelta como una matriz numérica. Si los datos de proyección de entrada son de tipo de datos , entonces es ; de lo contrario es .RsingleIsingleIdouble

Tipos de datos: single | double

Respuesta de frecuencia del filtro, devuelta como vector numérico.

Tipos de datos: double

Algoritmos

supone que el centro de rotación es el punto central de las proyecciones, que se define como .iradonceil(size(R,1)/2)

utiliza el algoritmo de proyección posterior filtrada para realizar la transformación de radón inversa.iradon El filtro se diseña directamente en el dominio de frecuencia y luego se multiplica por el FFT de las proyecciones. Las proyecciones se rellenan sin capacidad a una potencia de 2 antes de filtrar para evitar el alias de dominio espacial y acelerar el FFT.

Referencias

[1] Kak, A. C., and M. Slaney, Principles of Computerized Tomographic Imaging, New York, NY, IEEE Press, 1988.

Capacidades ampliadas

Consulte también

| | | | |

Introducido antes de R2006a