ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

構文

I = iradon(R, theta)
I = iradon(R,theta,interp,filter,frequency_scaling,output_size)
[I,H] = iradon(...)
[___]= iradon(gpuarrayR,___)

説明

I = iradon(R, theta) は、2 次元配列 R 内の投影データからイメージ I を再構成します。R の列は、平行ビーム投影データです。関数 iradon は、回転の中心が投影の中心点 ceil(size(R,1)/2) であると仮定しています。

theta は、投影が行われた角度 (度単位) を示します。これは、角度を含んでいるベクトル、または投影間の増分角度である D_theta を指定するスカラーのいずれかにすることができます。theta がベクトルの場合、等間隔の角度を含んでいなければなりません。thetaD_theta を指定するスカラーである場合、角度は theta = m*D_theta になります。ここで、m = 0,1,2,...,size(R,2)-1 です。入力が空行列 ([]) の場合、D_theta は既定の 180/size(R,2) となります。

iradon は、フィルター処理の逆投影法アルゴリズムを使用して、逆ラドン変換を実行します。フィルターは周波数領域で直接設計され、投影の FFT が乗算されます。投影は、空間領域でのエイリアシングを避けて FFT の速度を上げるために、フィルター処理を行う前に 2 のべき乗になるようにゼロ パディングされます。

I = iradon(R,theta,interp,filter,frequency_scaling,output_size) は、逆ラドン変換で使うためのパラメーターを指定します。後半の 4 つの引数については、任意の組み合わせが可能です。iradon は、これらの引数を省略した場合、既定値を使用します。

interp は、逆投影法で使用する内挿のタイプを指定します。利用可能なオプションを精度と計算の複雑度の昇順でリストします。

説明

'nearest'

最近傍内挿

'linear'

線形内挿 (既定の設定)

'spline'

スプライン内挿

'pchip'区分的 3 次エルミート内挿多項式
'v5cubic'MATLAB 5 の 3 次内挿。X が等間隔でない場合、このメソッドは外挿を行わずに警告を表示し、'spline' を使用します。

filter は、周波数領域でのフィルター処理で使用するフィルターを指定します。filter は、次のいずれかの値になります。

説明

'Ram-Lak'

Cropped Ram-Lak またはランプ フィルター。これは既定の設定です。このフィルターの周波数応答は | f | です。このフィルターは、投影においてノイズに敏感なので、以下に示すフィルターの中から 1 つを使用することを推奨します。これらのフィルターは、Ram-Lak フィルターに高周波数を抑えるウィンドウを乗算しています。

'Shepp-Logan'

関数 sinc と Ram-Lak フィルターを乗算します。

'Cosine'

関数 cosine と Ram-Lak フィルターを乗算します。

'Hamming'

ハミング ウィンドウと Ram-Lak フィルターを乗算します。

'Hann'

ハン ウィンドウと Ram-Lak フィルターを乗算します。

'None'フィルター処理を行いません。この値を指定すると、iradon はフィルターなしの逆投影法データを返します。

frequency_scaling は、[0, 1] の範囲のスカラーで、周波数軸を再スケーリングすることにより、フィルターを変更します。既定の設定は 1 です。frequency_scaling が 1 未満である場合、フィルターは、正規化周波数の周波数範囲 [0,frequency_scaling] に適合するように圧縮されます。frequency_scaling を超える周波数については、すべて 0 に設定されます。

output_size は、再構成されるイメージの行と列の数を指定するスカラーです。output_size が指定されていない場合、サイズは投影の長さから決定されます。

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

output_size を指定した場合、iradon は、イメージを大きくするか、または、小さくしますが、データのスケーリングには変化がありません。投影が関数 radon を使用して計算されている場合、再構成されたイメージは、元のイメージと同じサイズにならない可能性があります。

[I,H] = iradon(...) は、ベクトル H にフィルターの周波数応答を返します。

[___]= iradon(gpuarrayR,___) は、gpuArray R 内の投影データからイメージ gpuarrayI を再構成します。入力イメージと戻り値は 2 次元の gpuArray です。その他のすべての数値引数は、double または基になるクラスが double である gpuArray でなければなりません。この構文では Parallel Computing Toolbox™ が必要です。

    メモ:   この関数の GPU 実装は、逆投影法に関して最近傍内挿法および線形内挿法のみをサポートしています。

クラス サポート

R は、double または single になります。それ以外のすべての数値の入力引数は、double クラスでなければなりません。I は、R と同じクラスになります。Hdouble です。

R は、基になるクラスが double または single である gpuArray です。それ以外のすべての数値の入力引数は、double または基になるクラスが double である gpuArray でなければなりません。IR と同じクラスになります。H は、基になるクラスが double である gpuArray です。

すべて折りたたむ

逆ラドン変換を計算してフィルター付きとフィルターなしの逆投影法を比較します。

P = 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')

1 つの投影ベクトルの逆投影法を計算します。iradon の構文は、theta がスカラーの場合、インクリメントとして扱われるため、これを直接計算することができません。投影ベクトルをコピーし、その結果を 2 で割ることで、タスクを実行できます。

P = phantom(128);
R = radon(P,0:179);
r45 = R(:,46);
I = iradon([r45 r45], [45 45])/2;
imshow(I, [])
title('Backprojection from the 45-degree projection')

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

アルゴリズム

iradon は、フィルター処理の逆投影法アルゴリズムを使って、逆ラドン変換を実行します。フィルターは周波数領域で直接設計され、投影の FFT が乗算されます。投影は、空間領域でのエイリアシングを避けて FFT の速度を上げるために、フィルター処理を行う前に 2 のべき乗になるようにゼロ パディングされます。

参考文献

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

R2006a より前に導入

この情報は役に立ちましたか?