Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ifanbeam

逆ファンビーム変換

説明

I = ifanbeam(F,D) は、F 内のファンビーム投影データからイメージ I を再構成します。F の各列には、ある回転角でのファンビーム投影データが格納されます。センサー間の角度は一様でファンビーム回転角間の増分に等しいと仮定します。D はファンビーム頂点から回転中心までの距離です。

I = ifanbeam(F,D,Name,Value) は、再構成のさまざまな特性を制御する名前と値の引数を使用します。

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

すべて折りたたむ

サンプル イメージを作成します。関数 phantom はファントム頭部イメージを作成します。

ph = phantom(128);

ファントム頭部イメージのファンビーム変換を作成します。

d = 100;
F = fanbeam(ph,d);

ファンビーム表現からファントム頭部イメージを再構成します。元のイメージと再構成したイメージを表示します。

I = ifanbeam(F,d);
imshow(ph)

Figure contains an axes object. The axes object contains an object of type image.

figure
imshow(I);

Figure contains an axes object. The axes object contains an object of type image.

サンプル イメージを作成します。関数 phantom はファントム頭部イメージを作成します。

ph = phantom(128);

イメージのラドン変換を作成します。

P = radon(ph);

変換をパラレル ビーム投影からファンビーム投影に変換します。

[F,obeta,otheta] = para2fan(P,100,... 
                            'FanSensorSpacing',0.5,...
                            'FanCoverage','minimal',...
                            'FanRotationIncrement',1);

ファンビーム データからイメージを再構成します。

phReconstructed = ifanbeam(F,100,... 
                           'FanSensorSpacing',0.5,...
                           'Filter','Shepp-Logan',...
                           'OutputSize',128,... 
                           'FanCoverage','minimal',...
                           'FanRotationIncrement',1);

元のイメージと変換後のイメージを表示します。

imshow(ph)

Figure contains an axes object. The axes object contains an object of type image.

figure
imshow(phReconstructed)

Figure contains an axes object. The axes object contains an object of type image.

入力引数

すべて折りたたむ

ファンビーム投影データ。numSensors 行 numAngles 列の数値行列として指定します。numSensors はファンビーム センサーの数で、numAngles はファンビーム回転角の数です。F の各列には 1 つの回転角のファンビーム センサーのサンプルが格納されます。

データ型: double | single

ファンビーム頂点から回転中心までの距離 (ピクセル単位)。正の数値として指定します。ifanbeam は、回転の中心が投影の中心点であると仮定し、ceil(size(F,1)/2) として定義します。

Fan-beam image geometry highlighting the distance D between the fan-beam vertex and the center of rotation

データ型: double | single

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: I = ifanbeam(F,D,FanRotationIncrement=5) は 5 度のファン回転角増分を指定します。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: I = ifanbeam(F,D,"FanRotationIncrement",5) は 5 度のファン回転角増分を指定します。

ファンビームの回転範囲。"cycle" または "minimal" として指定します。

  • "cycle" — 全範囲 [0, 360) 度にわたり回転します。

  • "minimal" — オブジェクトを表すために必要な最小範囲を回転します。

ファンビーム回転角の増分 (度単位)。正のスカラーとして指定します。

Fan-beam image geometry highlighting the angular separation of two successive fan-beam vertices by FanRotationIncrement degrees.

データ型: double

ファンビーム センサーの配置。"arc" または "line" として指定します。

意味

"arc"

センサーは、円弧状に等角度で配置されます。弧の中心はファンビーム頂点です。

FanSensorSpacing は角度の間隔を度単位で定義します。

Fan-beam image geometry highlighting the constant angular spacing between sensors in an arc

"line"

センサーは、x' 軸に平行なラインに沿って等間隔に配置されます。最も近いセンサーは回転中心から距離 D の位置にあります。

FanSensorSpacingx' 軸上のファンビーム間の距離をピクセル単位で定義します。

Fan-beam image geometry highlighting the constant distance between sensors in a line

ファンビーム センサーの間隔。正のスカラーとして指定します。

  • FanSensorGeometry"arc" の場合、FanSensorSpacing は角度の間隔を度単位で定義します。

  • FanSensorGeometry"line" の場合、FanSensorSpacing はファンビーム間の線形距離をピクセル単位で定義します。線形間隔は、x' 軸上で測定されます。

データ型: double

周波数領域でのフィルター処理で使用するフィルター。次の表のいずれかの値として指定します。詳細については、iradon を参照してください。

説明

"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"フィルター処理を行いません。ifanbeam はフィルター処理されていないデータを返します。

データ型: char | string

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

データ型: double

パラレルビーム データとファンビーム データの間で使用される内挿のタイプ。次のいずれかの値として指定します。

"nearest" - 最近傍点

"linear" — 線形 (既定の設定)

"spline" — 区分的 3 次スプライン

"pchip" — 区分的 3 次エルミート (PCHIP)

データ型: char | string

再構成イメージのサイズ。正の整数として指定します。イメージには同じ数の行と列が含まれます。

OutputSize を指定した場合、ifanbeam は、イメージを大きくするか、または、小さくしますが、データのスケーリングには変化がありません。

メモ

関数 fanbeam を使用して投影を計算した場合、再構成イメージのサイズは元のイメージと異なる場合があります。

OutputSize を指定しない場合、サイズは以下によって自動的に計算されます。

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

ここで、Riradon によって使用されるパラレルビーム投影データの長さです。詳細については、アルゴリズムを参照してください。

データ型: double

出力引数

すべて折りたたむ

再構成イメージ。2 次元数値行列として指定します。

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

データ型: double

ヒント

  • 逆ファンビーム再構成を実行するには、投影データ F を計算するために使用したものと同じパラメーターを ifanbeam に指定しなければなりません。fanbeam を使用して投影を計算する場合、ifanbeam を呼び出すときにパラメーターが一致していることを確認してください。

アルゴリズム

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

参照

[1] Kak, Avinash C., and Malcolm Slaney. Principles of Computerized Tomographic Imaging. New York: IEEE Press, 1988.

バージョン履歴

R2006a より前に導入