関数
ネームスペース mist::euclidean

ユークリッド距離変換 [詳細]

関数

template<class Array1 , class Array2 >
void distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
 ユークリッド距離変換
template<class Array1 , class Array2 >
void inverse_distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
 ユークリッド2乗逆距離変換
template<class Array1 , class Array2 >
void voronoi_distance_transform (Array1 &voronoi, Array2 &dist, typename Array1::size_type thread_num=0)
 ユークリッド距離を用いたボロノイ分割
template<class Array >
void voronoi_transform (Array &voronoi, typename Array::size_type thread_num=0)
 ユークリッド距離を用いたボロノイ分割
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void thinning8 (const array2< T1, Allocator1 > &in, array2< T2, Allocator2 > &out)
 ユークリッド距離を用いた2次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void shrink_skelton6 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
 3次元画像に対する収縮スケルトンアルゴリズム(6連結)
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void shrink_skelton26 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
 3次元画像に対する収縮スケルトンアルゴリズム(26連結)
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void thinning6 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
 ユークリッド距離を用いた3次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void thinning26 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
 ユークリッド距離を用いた3次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void surface_thinning6 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
 ユークリッド距離を用いた3次元画像に対する薄面化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void surface_thinning26 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
 ユークリッド距離を用いた3次元画像に対する薄面化アルゴリズム

説明

ユークリッド距離変換

ユークリッド距離変換を用いた細線化アルゴリズム

関数

template<class Array1 , class Array2 >
void mist::euclidean::distance_transform ( const Array1 &  in,
Array2 &  out,
typename Array1::size_type  thread_num = 0 
)

ユークリッド距離変換

計算される距離は,ユークリッド2乗距離となります. ユークリッド距離に変換するためには,計算結果の各値の平方根を求めてください. ただし,計算に用いる画素が立方体ではなく直方体の場合には,計算されるユークリッド2距離も画素のアスペクトを考慮して計算されます. 立方体画素を用いている場合には以下を考慮する必要はありません.

本関数で計算されるユークリッド2乗距離は,X軸方向の画素の大きさを1としたときの比を用いて計算されます. ここで,本関数のある画素の出力が $l^2$ で,画素のX軸方向の解像度(大きさ)が $a_x$ の場合, $l a_x$ が画素の大きさを考慮したユークリッド距離値になります.

注意
入力と出力は,同じMISTコンテナオブジェクトでも正しく動作する
スレッド数に0を指定した場合は,使用可能なCPU数を自動的に取得する
  • 参考文献
    • Calvin R. Maurer, Jr., Rensheng Qi, and Vijay Raghavan, "A Linear Time Algorithm for Computing Exact Euclidean Distance Transforms of Binary Images in Arbitrary Dimensions", IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 25, No. 2, February 2003
引数
[in]in… 入力画像
[out]out… 出力画像
[in]thread_num… 使用するスレッド数

参照先 mist::saito::distance_transform().

template<class Array1 , class Array2 >
void mist::euclidean::inverse_distance_transform ( const Array1 &  in,
Array2 &  out,
typename Array1::size_type  thread_num = 0 
)

ユークリッド2乗逆距離変換

入力画像はユークリッド2乗距離が入った画像であり,出力画像は2値図形となります. アスペクトを考慮したユークリッド2乗逆距離変換が可能です.

本関数で用いるユークリッド2乗距離は,X軸方向の画素の大きさを1としたときの比を用いて計算されます.

注意
入力と出力は,同じMISTコンテナオブジェクトでも正しく動作する
スレッド数に0を指定した場合は,使用可能なCPU数を自動的に取得する
  • 参考文献
    • 鳥脇純一郎, "3次元ディジタル画像処理," 昭晃堂, 2002
    • 斎藤豊文, 鳥脇純一郎, ``ディジタル画像におけるユークリッド逆距離変換とスケルトンについて,'' 電子情報通信学会パターン認識・理解研究会資料, PRU93-50, No.228, pp.57-64, 1993
引数
[in]in… 入力画像
[out]out… 出力画像
[in]thread_num… 使用するスレッド数

参照先 mist::saito::inverse_distance_transform().


Generated on Wed Nov 12 2014 19:44:29 for MIST by doxygen 1.8.1.2