ドキュメンテーション

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

iradon

説明

I = iradon(R,theta) は、R 内の投影データからイメージ I を再構成します。theta は、投影した角度 (度単位) を記述します。

オプションで、逆ラドン変換の計算を GPU を使用して実行できます (Parallel Computing Toolbox™ が必要)。詳細は、GPU での画像処理を参照

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

[I,H] = iradon(___) はフィルターの周波数応答 H も返します。

すべて折りたたむ

ファントムのイメージを作成します。イメージを表示します。

P = phantom(128); 
imshow(P)
title('Original 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')

ファントムのイメージを作成します。

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

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

入力引数

すべて折りたたむ

パラレル ビーム投影データ。次のいずれかに指定します。

  • theta がスカラーの場合、Rtheta 度に対するラドン変換を含んでいる列ベクトルとして指定します。

  • theta がベクトルの場合、R を各列が theta の 1 つの角度に対するラドン変換である 2 次元行列として指定します。

GPU を使用して逆ラドン変換を計算するには、R を数値列ベクトルまたは数値行列を含む gpuArray として指定します。

データ型: 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) に設定します。

GPU を使用して逆ラドン変換を計算するには、オプションで、theta を数値ベクトルまたは数値スカラーを含む gpuArray として指定できます。

データ型: double

逆投影法で使用する内挿のタイプ。次のいずれかの値を指定します。精度と計算の複雑度が増える順でリストされています。

説明

'nearest'

最近傍内挿

'linear'

線形内挿 (既定の設定)

'spline'

スプライン内挿

'pchip'形状維持区分的 3 次内挿

GPU を使用して逆ラドン変換を計算する場合、interp'nearest' または 'linear' でなければなりません。

データ型: char | string

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

説明

'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 はフィルター補正なしの逆投影法データを返します。

データ型: char | string

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

再構成イメージの行数と列数。正の整数を指定します。output_size が指定されていない場合、サイズは投影の長さから以下に従って決定されます。

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

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

出力引数

すべて折りたたむ

グレースケール イメージ。数値行列として返されます。入力投影データ Rsingle データ型の場合、Isingle で、他の場合は、Idouble です。

GPU を使用して逆ラドン変換を計算する場合、I は数値行列を含む gpuArray として返されます。

データ型: single | double

フィルターの周波数応答。数値ベクトルとして返されます。

GPU を使用して逆ラドン変換を計算する場合、I は数値ベクトルを含む gpuArray として返されます。

データ型: double

アルゴリズム

iradon は、回転の中心が投影の中心点 ceil(size(R,1)/2) であると仮定しています。

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

参照

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

拡張機能

R2006a より前に導入