Main Content

fanbeam

説明

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

F = fanbeam(I,D,Name,Value) は名前と値の引数を使用して、回転の増分とセンサーの間隔を指定します。

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

すべて折りたたむ

座標軸を表示するように 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 次元数値行列または 2 次元 logical 行列として指定します。

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

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

名前と値の引数

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

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

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

例: fanbeam(I,D,"FanRotationIncrement",5)

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

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

出力引数

すべて折りたたむ

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

fanbeam は、角度の間隔 FanRotationIncrement を使用して、360 度の範囲とするために必要な回転角を計算して numAngles を決定します。

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

データ型: double

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

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

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

データ型: double

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

データ型: double

ヒント

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

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

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

参照

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

バージョン履歴

R2006a より前に導入