ドキュメンテーション

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

fanbeam

説明

F = fanbeam(I,D) はイメージ I からファンビーム投影データ (シノグラム) F を計算します。F の各列には、ある回転角でのファンビーム投影データが含まれています。D はファンビーム頂点から回転中心までの距離です。

F = fanbeam(I,D,Name,Value) は名前と値のペアを使用して、回転の増分とセンサーの間隔を指定します。引数名は省略形でもかまいません。大文字と小文字は区別されません。

[F,fan_sensor_positions,fan_rotation_angles] = fanbeam(___) はファンビーム センサーの位置を fan_sensor_positions、ファンビーム投影を計算する回転角を fan_rotation_angles で返します。

すべて折りたたむ

座標軸を表示するように IPT 設定を指定します。

iptsetpref('ImshowAxesVisible','on')

サンプル イメージを作成して表示します。

ph = phantom(128);
imshow(ph)

ファンビーム投影を計算して表示します。

[F,Fpos,Fangles] = fanbeam(ph,250);
figure
imshow(F,[],'XData',Fangles,'YData',Fpos,...
            'InitialMagnification','fit')
axis normal
xlabel('Rotation Angles (degrees)')
ylabel('Sensor Positions (degrees)')
colormap(gca,hot), colorbar

'arc' の幾何配置に対するファンビーム投影を計算します。

I = ones(100);
D = 200;
dtheta = 45;
[Farc,FposArcDeg,Fangles] = fanbeam(I,D,...
                    'FanSensorGeometry','arc',...
                 'FanRotationIncrement',dtheta);

角度位置を x´ 軸方向の線形距離に変換します。

FposArc = D*tan(FposArcDeg*pi/180);

'line' の幾何配置に対するファンビーム投影を計算します。

[Fline,FposLine] = fanbeam(I,D,...
           'FanSensorGeometry','line',...
        'FanRotationIncrement',dtheta);

対応するラドン変換を計算します。

[R,Rpos]=radon(I,Fangles);

特定の回転角で 3 つの投影を表示します。この 3 つは非常によく似ています。異なっているのは、サンプリングの幾何配置と計算に使用された数値近似があるからです。

figure
idx = find(Fangles==45);
plot(Rpos,R(:,idx),...
           FposArc,Farc(:,idx),...
          FposLine,Fline(:,idx))
legend('Radon','Arc','Line')

入力引数

すべて折りたたむ

入力イメージ。2 次元の数値行列または logical 行列として指定します。

ファン ビーム頂点から回転中心までの距離 (ピクセル単位)。正の数値として指定します。回転の中心はイメージの中心ピクセルであり、floor((size(I)+1)/2) として定義されます。D は、どの回転角でもファンビームの頂点がイメージの外側になる十分な大きさでなければなりません。D の指定に関するガイドラインについては、ヒントを参照してください。図は、あるファンビーム形状のファンビーム頂点に関する D を示しています。

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を、任意の順番で指定できます。

例: F = fanbeam(I,D,'FanRotationIncrement',5)

ファンビーム回転角の増分 (度単位)。'FanRotationIncrement' と正のスカラーで構成されるコンマ区切りのペアとして指定します。

データ型: double

ファンビーム センサーの配置。'FanSensorGeometry' と次のいずれかの値で構成されるコンマ区切りのペアとして指定します。

意味

'arc'

センサーは、回転中心から D の距離で円弧状に等角度で配置されます。

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

'line'

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

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

ファンビーム センサーの間隔。'FanSensorSpacing' と正のスカラーで構成されるコンマ区切りのペアとして指定します。

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

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

データ型: double

出力引数

すべて折りたたむ

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

データ型: double

ファンビーム センサーの位置。numsensors 行 1 列の数値ベクトルとして返されます。

  • FanSensorGeometry'arc' (既定の設定) の場合、fan_sensor_positions にはファンビーム広がり角が格納されます。

  • FanSensorGeometry'line' の場合、fan_sensor_positions には x' 軸に沿ったファンビーム センサーの位置が格納されます。詳細は、FanSensorSpacing を参照してください。

fanbeam は、任意の回転角についてイメージ全体をカバーするために必要なビームの数を計算して、センサーの数を決定します。ファンビーム頂点と回転中心の間の距離 D が大きい場合、イメージをカバーするために必要なビームの数が少なくなります。

データ型: double

ファンビーム センサーの回転角。1 行 numangles 列の数値ベクトルとして返されます。numangles は 360/FanRotationIncrement です。

データ型: double

ヒント

ガイドラインとして、D を以下のように計算されるイメージの対角線寸法の 1/2 より数ピクセルだけ大きくしてください。

sqrt(size(I,1)^2 + size(I,2)^2)

F で返される値はファンビーム投影の数値的近似です。アルゴリズムはラドン変換に依存し、これはファンビーム形状に内挿されます。結果は使用されるパラメーターに応じて異なります。イメージが大きい場合、D が大きい場合、および点がエッジから離れてイメージの中心に近い場合には、結果の精度が高くなります。

参照

[1] Kak, A.C., & Slaney, M., Principles of Computerized Tomographic Imaging, IEEE Press, NY, 1988, pp. 92-93.

R2006a より前に導入