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
imshow(I);

サンプル イメージを作成します。関数 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
imshow(phReconstructed)

入力引数

すべて折りたたむ

ファンビーム投影データ。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 より前に導入