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

- ファイル一覧
- グローバル

データ構造 | ネームスペース | 関数
distance.h

各次元の画像に対応した，各種距離変換・逆距離変換アルゴリズム [詳細]

`#include <cmath>`
`#include "../mist.h"`
`#include "../thread.h"`
`#include "../limits.h"`

ソースコードを見る。

## データ構造
struct | mist::__saito__::__inverse_distance_transform__< DIMENSION >
| ユークリッド2乗逆距離変換関数 [詳細]
struct | mist::__calvin__::__distance_transform__< DIMENSION >
| Y,Z軸方向用の距離伝播関数（1次以外の全ての次元） [詳細]
struct | mist::__calvin__::__distance_transform__< 1 >
| X軸方向専用の距離伝播関数 [詳細]
struct | mist::__calvin__::__voronoi_distance_transform__< DIMENSION >
| Y,Z軸方向用の距離伝播関数（1次以外の全ての次元） [詳細]
struct | mist::__calvin__::__voronoi_distance_transform__< 1 >
| X軸方向専用の距離伝播関数 [詳細]

## ネームスペース
namespace | mist
namespace | mist::saito
| 斉藤先生によるユークリッド2乗距離変換
namespace | mist::calvin
| Calvinによるユークリッド2乗距離変換
namespace | mist::euclidean
| ユークリッド距離変換
namespace | mist::meijster
| A. Meijster による距離変換（CDT, MDT）
namespace | mist::manhattan
| マンハッタン距離（シティーブロック距離）変換
namespace | mist::cityblock
| マンハッタン距離（シティーブロック距離）変換
namespace | mist::chessboard
| チェスボード距離変換

## 関数
template<class Array1 , class Array2 >
void | mist::saito::distance_transform (const Array1 &in, Array2 &out, double max_length=-1.0, typename Array1::size_type thread_num=0)
| ユークリッド2乗距離変換
template<class Array1 , class Array2 >
void | mist::saito::inverse_distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| ユークリッド2乗逆距離変換
template<class Array1 , class Array2 >
void | mist::calvin::distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| ユークリッド2乗距離変換
template<class Array1 , class Array2 >
void | mist::calvin::voronoi_distance_transform (Array1 &voronoi, Array2 &dist, typename Array1::size_type thread_num=0)
| ユークリッド距離を用いたボロノイ分割
template<class Array >
void | mist::calvin::voronoi_transform (Array &voronoi, typename Array::size_type thread_num=0)
| ユークリッド距離を用いたボロノイ分割
template<class Array1 , class Array2 >
void | mist::euclidean::distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| ユークリッド距離変換
template<class Array1 , class Array2 >
void | mist::euclidean::inverse_distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| ユークリッド2乗逆距離変換
template<class Array1 , class Array2 >
void | mist::euclidean::voronoi_distance_transform (Array1 &voronoi, Array2 &dist, typename Array1::size_type thread_num=0)
| ユークリッド距離を用いたボロノイ分割
template<class Array >
void | mist::euclidean::voronoi_transform (Array &voronoi, typename Array::size_type thread_num=0)
| ユークリッド距離を用いたボロノイ分割
template<class Array1 , class Array2 , class Metric >
void | mist::meijster::distance_transform (const Array1 &in, Array2 &out, Metric __metric__, typename Array1::size_type thread_num=0)
| A. Meijster による距離変換（CDT, MDT）
template<class Array1 , class Array2 >
void | mist::manhattan::distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| マンハッタン距離（シティーブロック距離）変換
template<class Array1 , class Array2 >
void | mist::cityblock::distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| マンハッタン距離（シティーブロック距離）変換
template<class Array1 , class Array2 >
void | mist::chessboard::distance_transform (const Array1 &in, Array2 &out, typename Array1::size_type thread_num=0)
| チェスボード距離変換
template<class Array1 , class Array2 >
void | mist::skeleton (const Array1 &in, Array2 &out)
| ユークリッド2乗距離画像を入力とするスケルトン抽出

## 説明

各次元の画像に対応した，各種距離変換・逆距離変換アルゴリズム

- 参考文献
  - ユークリッド距離変換
    - 齋藤豊文, 鳥脇純一郎, "3次元ユークリッド距離変換および拡張ボロノイ分割のアルゴリズムと肝組織標本画像の解析," 画像電子学会誌, 第21巻，第5号, pp.468-474, 1992
    - 齋藤豊文, 鳥脇純一郎, "3次元ディジタル画像に対するユークリッド距離変換," 電子情報通信学会論文誌, J76-D-II, No. 3, pp.445-453, 1993
    - 斎藤豊文, 鳥脇純一郎, ``ディジタル画像におけるユークリッド逆距離変換とスケルトンについて,'' 電子情報通信学会パターン認識・理解研究会資料, PRU93-50, No.228, pp.57-64, 1993
    - 鳥脇純一郎, "3次元ディジタル画像処理," 昭晃堂, 2002
    - 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
    - A. Meijster, J. Roerdink, and W. Hesselink, "A general algorithm for computing distance transforms in linear time," In: Mathematical Morphology and its Applications to Image and Signal Processing, J. Goutsias, L. Vincent, and D.S. Bloomberg (eds.), Kluwer, 2000, pp. 331-340