ラドン変換
[基本画像操作]


関数

INT FVALGAPI fnFIE_radon (FHANDLE hsrc, FHANDLE hdst, DOUBLE start_angle, DOUBLE range_angle, enum f_sampling_mode sampling_mode)
 ラドン変換
INT FVALGAPI fnFIE_projection_rot_rectangle (FHANDLE hsrc, FHANDLE hdst, DPNT_T center, INT direction, DOUBLE start_angle, DOUBLE pitch_angle, INT samp_num_t, DOUBLE pitch_t, DOUBLE pitch_s, enum f_sampling_mode samp_mode)
 回転する矩形領域内での濃度投影

関数

INT FVALGAPI fnFIE_radon ( FHANDLE  hsrc,
FHANDLE  hdst,
DOUBLE  start_angle,
DOUBLE  range_angle,
enum f_sampling_mode  sampling_mode 
)

ラドン変換

fie_radon_cordinate_direction.png

ラドン変換

上図のような、xy座標とそれを角度 θ だけ回転させた st座標を考えます。このとき、 f(x,y) を t 方向に積分した g(θ,s)

\[ g( \theta, s ) = \int_{ -\infty}^{\infty} f( x, y ) dt \]

が f(x,y) のラドン変換です。

画像に対する変換では f(x,y) が入力画像の画素値、 g(θ,s) が出力画像の画素値となります。

出力画像のサイズは任意の大きさに指定できます。 以下、出力画像のサイズを縦横それぞれ height , width とします。 出力画像における θ 軸および s 軸の向きは、 θ 軸が右方向、 s 軸が下方向(原点は軸の中央)となります。 出力画像における座標設定は下図の通りです。

fie_radon_output_coordinate.png

入力画像におけるst座標の原点は、入力画像の中心に取ります。 s 方向、t 方向へのサンプリングは、入力画像の1ピクセル間隔で行われます。 積分対象となる s の範囲は -height / 2 ≦ s ≦ height / 2 です。 入力画像外の領域は画素値 0 として積算します。 入力画像における座標設定は下図の通りです。

fie_radon_rect_infty.png

θ は x 軸方向を基準に、時計回りを正とします。 θ 方向のサンプリング間隔は | range_angle | / width となります。 θ の範囲は開始角度 start_angle , 角度範囲 range_angle によって、ラジアン単位で以下のように指定します。

  • start_angle : 値の範囲に制限はありません。
  • range_angle : 値の範囲に制限はありませんが range_angle が正ならば時計回り、負ならば反時計回りに処理します。
  • ラドン変換の性質上 g(θ,s) = g(θ+π,-s) であるため、通常は -π ≦ range_angle ≦ π の範囲で指定します。
各計算点の画素値は、補間によって求めます。補間方法は sampling_mode により指定し、以下の3種類から選択します。 各画素値補間方法の違いについては、濃度補間方法 を参照して下さい。
  • F_SAMPLING_NN 最近傍法により画素値補間を行う
  • F_SAMPLING_BILINEAR 共一次線形補間により画素値補間を行う
  • F_SAMPLING_CUBIC 三次畳み込み法により画素値補間を行う
入力画像と出力画像の型は、以下の組み合わせで指定可能です。
出力画像
UC8
S16
US16
FLOAT
DOUBLE
入力画像
UC8
×
×
S16
×
×
US16
×
×
FLOAT
×
×
×
DOUBLE
×
×
×
×

出力画像の画素の値は、出力画像の型が UC8, S16, US16 の場合、指定した角度範囲内での、画像範囲内となる最大サンプリング点数で割った値が出力されます。 出力画像の型が FLOAT または DOUBLE の場合、サンプル点における値の総和を出力します。

入力画像と出力画像は、チャネル数が同じでなければなりません。 複数チャネルの場合、各チャネルごとに処理します。

引数:
[in] hsrc 入力画像( type: uc8, s16, us16, float, double )
[out] hdst 出力画像( type: uc8, s16, us16, float, double )
[in] start_angle 処理開始角度
[in] range_angle 角度の処理範囲
[in] sampling_mode 画素値補間方法
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドル
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参考文献:
  • Johann Radon (1917), "On the Determination of Functions From Their Integral Values Along Certain Manifolds", translated by P. C. Parks, IEEE Transactions On Medical Imaging, Vol. MI-5, No. 4, Dec. 1986, pp.170-176
処理結果例:
パラメータ設定:
start_angle = π/2, range_angle = -π
sampling_mode = F_SAMPLING_BILINEAR
fie_radon_src.png

入力画像

fie_radon_dst.png

処理結果画像

INT FVALGAPI fnFIE_projection_rot_rectangle ( FHANDLE  hsrc,
FHANDLE  hdst,
DPNT_T  center,
INT  direction,
DOUBLE  start_angle,
DOUBLE  pitch_angle,
INT  samp_num_t,
DOUBLE  pitch_t,
DOUBLE  pitch_s,
enum f_sampling_mode  samp_mode 
)

回転する矩形領域内での濃度投影

矩形中心の座標を、 center によって指定します。指定する座標は入力画像外でも構いません。 x 軸方向を基準に時計回りを正とし、矩形領域を θ だけ回転させます。 この矩形領域内で y 軸を θ だけ回転させた方向に濃度投影を行います。 以下、矩形中心の座標を通る投影方向の軸を t、それに垂直な軸を s とします。

θ 方向のサンプリング開始角度は start_angle により、またサンプリング間隔は pitch_angle によりラジアン単位で指定します。 pitch_angle を負数で指定した場合、反時計回りにサンプリングします。 θ 方向のサンプリング数を samp_num_angle (指定方法は後述) とすると、θ 方向のサンプリング範囲 range_angle は、 range_angle = samp_num_angle × pitch_angle となります。

t 方向へのサンプリング間隔は pitch_t により、また t 方向へのサンプリング数は samp_num_t により指定します。このとき矩形領域の t 方向の長さ t_rect は t_rect = (samp_num_t - 1) × pitch_t となります。

s 方向のサンプリング間隔は pitch_s により指定します。 s 方向のサンプリング数を samp_num_s (指定方法は後述) とすると、矩形領域の s 方向の長さ s_rect は s_rect = (samp_num_s - 1) × pitch_s となります。

通常は pitch_t , pitch_s ともに 1 を指定し、サンプリング数で矩形領域の大きさを指定することを推奨します。

以上より、矩形の範囲は st 座標で

  • -t_rect / 2 ≦ t ≦ t_rect / 2
  • -s_rect / 2 ≦ s ≦ s_rect / 2
の範囲となります(下図)。なお、入力画像外となる領域は0として積算します。

fie_projection_rot_rectangle_input.png

θ 方向と s 方向のサンプリング数 samp_num_angle, samp_num_s は、出力画像のサイズと結果の出力方向 direction によって指定します。 出力画像のサイズを縦横それぞれ height , width とすると、各サンプリング数、出力画像における座標設定は下表および下図の通りです。

direction == 0 direction == 1
出力画像での θ 軸の方向
横方向
縦方向
samp_num_angle
width
height
出力画像での s 軸方向
縦方向
横方向
samp_num_s
height
width

fie_projection_rot_rectangle_output.png

各計算点の画素値は、補間によって求めます。補間方法は samp_mode により指定し、以下の3種類から選択します。 各画素値補間方法の違いについては、濃度補間方法 を参照して下さい。

  • F_SAMPLING_NN 最近傍法により画素値補間を行う
  • F_SAMPLING_BILINEAR 共一次線形補間により画素値補間を行う
  • F_SAMPLING_CUBIC 三次畳み込み法により画素値補間を行う
入力画像と出力画像の型は、以下の組み合わせで指定可能です。
出力画像
UC8
S16
US16
FLOAT
DOUBLE
入力画像
UC8
×
×
S16
×
×
US16
×
×
FLOAT
×
×
×
DOUBLE
×
×
×
×

出力画像の画素の値は、出力画像の型が UC8, S16, US16 の場合、t 方向へのサンプリング数 samp_num_t で割った値が出力されます。 出力画像の型が FLOAT または DOUBLE の場合、サンプル点における値の総和を出力します。

入力画像と出力画像は、チャネル数が同じでなければなりません。 複数チャネルの場合、各チャネルごとに処理します。

引数:
[in] hsrc 入力画像( type: uc8, s16, us16, float, double )
[out] hdst 出力画像( type: uc8, s16, us16, float, double )
[in] center 矩形の中心座標
[in] direction 投影結果の出力方向
[in] start_angle θ 方向のサンプリング開始角度
[in] pitch_angle θ 方向のサンプリング間隔
[in] samp_num_t t 方向のサンプリング数 ( > 0 )
[in] pitch_t t 方向のサンプリング間隔 ( > 0 )
[in] pitch_s s 方向のサンプリング間隔 ( > 0 )
[in] samp_mode 画素値補間方法
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドル
F_ERR_INVALID_PARAM 不正なパラメータ
F_ERR_NOMEMORY メモリ不足エラー
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:46 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2