ドキュメンテーション

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

fanbeam

構文

F = fanbeam(I,D)
F = fanbeam(..., param1, val1, param1, val2,...)
[F, fan_sensor_positions, fan_rotation_angles] = fanbeam(...)

説明

F = fanbeam(I,D) はイメージ I からファンビーム投影データ (シノグラム) F を計算します。

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

F の各列には 1 つの回転角のファンビーム センサーのサンプルが格納されます。F の列数はファン回転の増分で決定されます。既定の設定では、ファン回転の増分は 1 度なので、F の列数は 360 になります。

F の行数はセンサーの数で決定されます。fanbeam は、任意の回転角についてイメージ全体をカバーするために必要なビームの数を計算して、センサーの数を決定します。

回転の増分とセンサー間隔を指定する方法の詳細は、以下の FanSensorSpacing パラメーターと FanRotationIncrement パラメーターのドキュメンテーションを参照してください。

F = fanbeam(..., param1, val1, param1, val2,...) はファンビーム投影のさまざまな特性を制御するパラメーターを指定します。このパラメーターを以下に示します。パラメーター名は省略形でも構いません。大文字と小文字は区別されません。

'FanRotationIncrement' -- ファンビーム投影の回転角の増分を指定する正の実数スカラー。測定単位は度です。既定値は 1 です。

'FanSensorGeometry' -- センサーの配置。値 'arc' または 'line' に指定します。'arc' 形状では以下に示すとおりセンサーは円弧に沿って等間隔に配置されます。これは既定値です。

'line' 形状では以下に示すとおりセンサーは直線に沿って等間隔に配置されます。

'FanSensorSpacing' -- ファンビーム センサーの配置間隔を指定する正の実数スカラー。値の解釈は 'FanSensorGeometry' の設定に応じて異なります。'FanSensorGeometry''arc' (既定の設定) に設定した場合、この値が角度間隔を定義します (度単位)。デフォルト値は 1 です。'FanSensorGeometry''line' の場合は、値は線形の間隔を指定します。既定値は 1 です。

<span></span>

メモ:

この線形間隔は、x' 軸上で測定されます。F の各列 colx' 軸の方向は、x 軸から反時計回りに fan_rotation_angles(col) 度の位置に設定されます。両軸の原点がイメージの中心ピクセルになります。

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

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

クラス サポート

I は、logical または numeric になります。その他の数値入力と出力はすべて double です。スパースを指定できる入力はありません。

すべて折りたたむ

座標軸を表示するように 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')

ヒント

ガイドラインとして、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 より前に導入

この情報は役に立ちましたか?