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

La transformada inversa de radón

Descripción

ejemplo

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

Opcionalmente, puede calcular la transformada inversa de radón usando una GPU (requiere).Parallel Computing Toolbox™ Para obtener más información, consulte.Procesamiento de imágenes en una GPU

I = iradon(R,theta,interp,filter,frequency_scaling,output_size) especifica los parámetros que se utilizarán en la transformada inversa de radón. Puede especificar cualquier combinación de los últimos cuatro argumentos. utiliza los 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. Visualice 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 retroproyección filtrada.

I1 = iradon(R,0:179);

Realice la retroproyección sin filtrar.

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

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

Realizar una transformación de radón de la imagen, a continuación, obtener 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 transformada inversa de radón 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 dividiendo el resultado por 2.

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

Mostrar el resultado.

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

Calcule la transformada inversa de radón en una GPU.

P = gpuArray(phantom(128)); R = radon(P,0:179); I1 = iradon(R,0:179); I2 = iradon(R,0:179,'linear','none'); subplot(1,3,1), imshow(P), title('Original') subplot(1,3,2), imshow(I1), title('Filtered backprojection') subplot(1,3,3), imshow(I2,[]), title('Unfiltered backprojection') 

Argumentos de entrada

contraer todo

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

  • Si es un escalar, a continuación, especifique como un vector de columna numérica que contiene la transformación de radón para grados.thetaRtheta

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

Para calcular la transformada inversa de radón utilizando una GPU, especifique como una que contenga un vector de columna numérico o una matriz numérica.RgpuArray

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

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

ValorDescripción
Vector numéricoÁngulos de proyección. Debe haber un espaciado igual entre los ángulos.
escalar numéricoÁngulo 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 para180/size(R,2)

Para calcular la transformada inversa de radón usando una GPU, opcionalmente puede especificar como un que contiene un vector numérico o escalar.thetagpuArray

Tipos de datos: double

Tipo de interpolación a utilizar en la proyección posterior, especificada como uno de estos valores, enumerados en orden de aumentar la precisión y la complejidad computacional.

Valor

Descripción

'nearest'

La interpolación de vecino más cercano

'linear'

Interpolación lineal (el valor predeterminado)

'spline'

La interpolación spline

'pchip'La interpolación cúbica por tramos de preservación de formas

Si calcula la transformada inversa de radón usando una GPU, entonces debe ser o.interp'nearest''linear'

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'

Filtro RAM-Lak o rampa recortado. La respuesta de frecuencia de este filtro es | |.f Debido a 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 desenfatiza 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 de Hamming

'Hann'

Multiplica el filtro RAM-Lak por una ventana Hann

'None'Sin filtrar. devuelve datos de retroproyección sin filtrar.iradon

Tipos de datos: char | string

Factor de escala para la reescalado del 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; se establecen todas las frecuencias anteriores.frequency_scaling[0,frequency_scaling] frequency_scaling0

Número de filas y columnas de la imagen reconstruida, especificada 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 porción más pequeña o mayor de la imagen, pero no cambia la escala 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; lo contrario.RsingleIsingleIdouble

Si la transformada inversa de radón se calcula utilizando una GPU, entonces se devuelve como una matriz numérica que contiene.IgpuArray

Tipos de datos: single | double

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

Si la transformada inversa de radón se calcula utilizando una GPU, se devuelve como una que contiene un vector numérico.IgpuArray

Tipos de datos: double

Algoritmos

asume 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 transformada inversa de radón.iradon El filtro está diseñado directamente en el dominio de frecuencia y luego multiplicado por la FFT de las proyecciones. Las proyecciones son de relleno cero a una potencia de 2 antes de filtrar para evitar el aliasing de dominio espacial y para acelerar la 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