Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

iradon

설명

예제

I = iradon(R,theta)는 투영 각도 theta에서 캡처된 R의 투영 데이터로부터 영상 I를 복원합니다.

I = iradon(R,theta,interp,filter,frequencyScaling,outputSize)는 라돈 역변환에 사용할 파라미터를 지정합니다. 마지막 4개 인수의 어떤 조합도 지정할 수 있습니다. iradon은 생략되는 인수가 있으면 디폴트 값을 사용합니다.

[I,H] = iradon(___)은 필터 H의 주파수 응답도 반환합니다.

예제

모두 축소

팬텀의 영상을 만듭니다. 영상을 표시합니다.

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

Figure contains an axes object. The axes object with title Original image contains an object of type image.

영상의 라돈 변환을 수행합니다.

R = radon(P,0:179);

필터링된 역투영을 수행합니다.

I1 = iradon(R,0:179);

필터링되지 않은 역투영을 수행합니다.

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

복원한 영상을 표시합니다.

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

Figure contains 2 axes objects. Axes object 1 with title Filtered Backprojection contains an object of type image. Axes object 2 with title Unfiltered Backprojection contains an object of type image.

팬텀의 영상을 만듭니다.

P = phantom(128);

영상에 대해 라돈 변환을 수행한 다음 45도의 투영에 해당하는 투영 벡터를 얻습니다.

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

이 단일 투영 벡터의 라돈 역변환을 수행합니다. iradon 구문에서는 직접 이 작업을 수행할 수 없습니다. theta가 스칼라인 경우 증분으로 간주되기 때문입니다. 투영된 벡터의 두 복사본을 전달한 다음 그 결과를 2로 나누는 방법으로 이 작업을 수행할 수 있습니다.

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

결과를 표시합니다.

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

Figure contains an axes object. The axes object with title Backprojection from 45 degrees contains an object of type image.

입력 인수

모두 축소

병렬 빔 투영 데이터로, 다음 중 하나로 지정됩니다.

  • theta가 스칼라인 경우 Rtheta(단위: 도)에 대한 라돈 변환을 나타내는 숫자형 열 벡터로 지정하십시오.

  • theta가 벡터인 경우 R을 2차원 행렬로 지정하십시오. 여기서 각 열은 theta의 각도 중 하나에 대한 라돈 변환입니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

투영 각도(단위: 도)로, 다음 중 하나로 지정됩니다.

설명
숫자형 벡터투영 각도. 각도 사이의 간격이 같아야 합니다.
숫자형 스칼라투영 간 증분 각도. 각도 m*theta에서 투영합니다. 여기서 m = 0,1,2,...,size(R,2)-1입니다.
[]투영 간 증분 각도를 180/size(R,2)로 자동으로 설정합니다.

데이터형: single | double

역투영에 사용할 보간의 유형으로, 다음 값 중 하나로 지정됩니다. 값은 정확도와 연산 복잡도 측면에서 오름차순으로 나열되어 있습니다.

설명

"nearest"

최근접 이웃 보간

"linear"

선형 보간

"spline"

스플라인 보간

"pchip"형태 보존 조각별 3차 보간
"v5cubic"MATLAB® 5에서 사용되는 3차 컨벌루션입니다.

데이터형: char | string

주파수 영역 필터링에 사용할 필터로, 다음 값 중 하나로 지정됩니다.

설명

"Ram-Lak"

잘라낸 Ram-Lak 또는 램프 필터. 이 필터의 주파수 응답은 | f |입니다. 이 필터는 투영의 잡음에 민감하므로 아래에 나열된 필터 중 하나가 더 나을 수도 있습니다. 이 필터는 Ram-Lak 필터에 고주파를 강조하지 않는 윈도우를 곱합니다.

"Shepp-Logan"

Ram-Lak 필터에 sinc 함수 곱하기

"Cosine"

Ram-Lak 필터에 cosine 함수 곱하기

"Hamming"

Ram-Lak 필터에 해밍 윈도우 곱하기

"Hann"

Ram-Lak 필터에 핸 윈도우 곱하기

"None"필터링 안 함. iradon은 필터링을 적용하지 않은 역투영 데이터를 반환합니다.

데이터형: char | string

주파수 축을 다시 스케일링하기 위한 스케일링 인자로, (0, 1] 범위의 양수로 지정됩니다. frequencyScaling이 1보다 작을 경우 필터는 정규화 주파수에서 주파수 범위 [0,frequencyScaling]에 맞게 압축됩니다. frequencyScaling보다 높은 모든 주파수는 0으로 설정됩니다.

복원된 영상의 행 및 열 개수로, 양의 정수로 지정됩니다. outputSize를 지정하지 않으면 iradon은 다음에 따라 투영의 길이로부터 크기를 계산합니다.

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

outputSize를 지정하는 경우 iradon은 영상의 더 작은 부분 또는 더 큰 부분을 복원하지만 데이터의 스케일링을 바꾸지는 않습니다. radon 함수를 사용하여 투영을 계산한 경우 복원된 영상이 원본 영상과 같은 크기가 아닐 수도 있습니다.

출력 인수

모두 축소

회색조 영상으로, 숫자형 행렬로 반환됩니다. 투영 데이터 Rsingle 데이터형이면 Isingle 데이터형입니다. 그렇지 않으면 Idouble 데이터형입니다.

데이터형: single | double

필터의 주파수 응답으로, 숫자형 벡터로 반환됩니다. 투영 데이터 R 또는 투영 각도 thetasingle 데이터형이면 Hsingle 데이터형입니다. 그렇지 않으면 Hdouble 데이터형입니다.

데이터형: single | double

알고리즘

iradon은 회전의 중심이 투영의 중심점이라고 가정하며, 이는 ceil(size(R,1)/2)로 정의됩니다.

iradon은 필터링된 역투영 알고리즘을 라돈 역변환 수행에 사용합니다. 이 필터는 주파수 영역에서 직접 설계되어 투영의 FFT가 곱해집니다. 이 투영에서는 공간 영역 에일리어싱을 방지하고 FFT의 속도를 높이기 위해 필터링하기 전에 2의 거듭제곱까지 0으로 채웁니다.

참고 문헌

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

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장