- メインページ
- モジュール
- ネームスペース
- データ構造
- ファイル

- ネームスペース一覧
- ネームスペースメンバ

関数
ネームスペース mist::calvin
ユークリッド距離変換

Calvinによるユークリッド2乗距離変換 [詳細]

## 関数
template<class Array1 , class Array2 >
void | 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)
| ユークリッド距離を用いたボロノイ分割

## 説明

Calvinによるユークリッド2乗距離変換

## 関数

template<class Array1 , class Array2 >

void mist::calvin::distance_transform | ( | const Array1 & | in,
|  | Array2 & | out,
|  | typename Array1::size_type | thread_num = `0`
| ) |  |

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

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

本関数で計算されるユークリッド2乗距離は，X軸方向の画素の大きさを1としたときの比を用いて計算されます． ここで，本関数のある画素の出力が で，画素の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::do_threads_(), と mist::get_cpu_num().

template<class Array1 , class Array2 >

void mist::calvin::voronoi_distance_transform | ( | Array1 & | voronoi,
|  | Array2 & | dist,
|  | typename Array1::size_type | thread_num = `0`
| ) |  |

ユークリッド距離を用いたボロノイ分割

ユークリッド2乗距離変換とボロノイ分割を同時に行うアルゴリズムになります． 計算されるユークリッド2乗距離は，最も近い母点までの２乗ユークリッド距離を表します． 画素のアスペクトを考慮したボロノイ分割が可能です． アルゴリズム自体は，参考文献の Calvin R. Maurer, Jr. の論文を改良したものである．

注意
  入力と出力は，同じMISTコンテナオブジェクトでは動作しません
  スレッド数に0を指定した場合は，使用可能なCPU数を自動的に取得する
  正しくボロノイ分割を行うために，入力画像内の各母点に対してラベリングを施しておく必要があります．

- 参考文献
  - 齋藤豊文, 鳥脇純一郎, "3次元ユークリッド距離変換および拡張ボロノイ分割のアルゴリズムと肝組織標本画像の解析," 画像電子学会誌, 第21巻，第5号, pp.468-474, 1992
  - 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,out] | voronoi | … 母点毎に別々のラベルが割り当てられた画像．ボロノイ分割結果のラベル画像が出力される．
  [out] | dist | … 出力ユークリッド２乗距離画像
  [in] | thread_num | … 使用するスレッド数

参照先 mist::do_threads_(), と mist::get_cpu_num().

参照元 mist::euclidean::voronoi_distance_transform(), と voronoi_transform().

template<class Array >

void mist::calvin::voronoi_transform | ( | Array & | voronoi,
|  | typename Array::size_type | thread_num = `0`
| ) |  |

ユークリッド距離を用いたボロノイ分割

ユークリッド距離に基づくボロノイ分割を行い，画素のアスペクトを考慮したボロノイ分割が可能です． 内部では，ユークリッド2乗距離を計算するための一時画像を作成します． アルゴリズム自体は，参考文献の Calvin R. Maurer, Jr. の論文を改良したものである．

注意
  入力と出力は，同じMISTコンテナオブジェクトでは動作しません
  スレッド数に0を指定した場合は，使用可能なCPU数を自動的に取得する
  正しくボロノイ分割を行うために，入力画像内の各母点に対してラベリングを施しておく必要があります．

- 参考文献
  - 齋藤豊文, 鳥脇純一郎, "3次元ユークリッド距離変換および拡張ボロノイ分割のアルゴリズムと肝組織標本画像の解析," 画像電子学会誌, 第21巻，第5号, pp.468-474, 1992
  - 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,out] | voronoi | … 母点毎に別々のラベルが割り当てられた画像．ボロノイ分割結果のラベル画像が出力される．
  [in] | thread_num | … 使用するスレッド数

参照先 voronoi_distance_transform().

参照元 mist::euclidean::voronoi_transform().