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

関数
細線化

## 関数
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::hilditch::thinning (const array2< T1, Allocator1 > &in, array2< T2, Allocator2 > &out)
| 2次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::thinning8 (const array2< T1, Allocator1 > &in, array2< T2, Allocator2 > &out)
| ユークリッド距離を用いた2次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::shrink_skelton6 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
| 3次元画像に対する収縮スケルトンアルゴリズム（6連結）
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::shrink_skelton26 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
| 3次元画像に対する収縮スケルトンアルゴリズム（26連結）
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::thinning6 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
| ユークリッド距離を用いた3次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::thinning26 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
| ユークリッド距離を用いた3次元画像に対する細線化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::surface_thinning6 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
| ユークリッド距離を用いた3次元画像に対する薄面化アルゴリズム
template<class T1 , class T2 , class Allocator1 , class Allocator2 >
void | mist::euclidean::surface_thinning26 (const array3< T1, Allocator1 > &in, array3< T2, Allocator2 > &out)
| ユークリッド距離を用いた3次元画像に対する薄面化アルゴリズム

## 説明

       @code 次のヘッダをインクルードする

#include <mist/filter/thinning.h>

## 関数

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::shrink_skelton26 | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out
| ) |  |

3次元画像に対する収縮スケルトンアルゴリズム（26連結）

- 参考文献
- 米倉達広, 横井茂樹, 鳥脇純一郎, 福村晃夫, ``3次元ディジタル画像における1-要素の消去可能性と図形収縮について,'' 電子情報通信学会論文誌D, vol.65-D, no.12, pp.1543-1549, 1982

注意
  出力画像では，背景に0，前景に1が代入されています．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), mist::array3< T, Allocator >::size1(), mist::array3< T, Allocator >::size2(), と mist::array3< T, Allocator >::size3().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::shrink_skelton6 | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out
| ) |  |

3次元画像に対する収縮スケルトンアルゴリズム（6連結）

- 参考文献
- 米倉達広, 横井茂樹, 鳥脇純一郎, 福村晃夫, ``3次元ディジタル画像における1-要素の消去可能性と図形収縮について,'' 電子情報通信学会論文誌D, vol.65-D, no.12, pp.1543-1549, 1982

注意
  出力画像では，背景に0，前景に1が代入されています．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), mist::array3< T, Allocator >::size1(), mist::array3< T, Allocator >::size2(), と mist::array3< T, Allocator >::size3().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::surface_thinning26 | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out
| ) |  |

ユークリッド距離を用いた3次元画像に対する薄面化アルゴリズム

薄面化結果は26連結となる

- 参考文献
- 斉藤豊文, 森健策, 鳥脇純一郎, ``ユークリッド距離変換を用いた3次元ディジタル画像の薄面化および細線化の逐次型アルゴリズムとその諸性質,'' 電子情報通信学会論文誌D-II, vol.J79-D-II, no.10, pp.1675-1685, 1996

注意
  入力と出力が同じ画像オブジェクトでも正しく細線化することが可能です
  画素のアスペクト比が1でない場合は，出力画像の型をfloatかdoubleにしないと正確な結果が得られません．十分に注意してください．
  出力画像では，背景に0，前景に1が代入されています．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), mist::array3< T, Allocator >::size1(), mist::array3< T, Allocator >::size2(), と mist::array3< T, Allocator >::size3().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::surface_thinning6 | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out
| ) |  |

ユークリッド距離を用いた3次元画像に対する薄面化アルゴリズム

薄面化結果は6連結となる

- 参考文献
- 斉藤豊文, 森健策, 鳥脇純一郎, ``ユークリッド距離変換を用いた3次元ディジタル画像の薄面化および細線化の逐次型アルゴリズムとその諸性質,'' 電子情報通信学会論文誌D-II, vol.J79-D-II, no.10, pp.1675-1685, 1996

注意
  入力と出力が同じ画像オブジェクトでも正しく細線化することが可能です
  画素のアスペクト比が1でない場合は，出力画像の型をfloatかdoubleにしないと正確な結果が得られません．十分に注意してください．
  出力画像では，背景に0，前景に1が代入されています．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), mist::array3< T, Allocator >::size1(), mist::array3< T, Allocator >::size2(), と mist::array3< T, Allocator >::size3().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::hilditch::thinning | ( | const array2< T1, Allocator1 > & | in,
|  | array2< T2, Allocator2 > & | out
| ) |  |

2次元画像に対する細線化アルゴリズム

細線化結果は8連結となる

注意
  入力と出力が同じ画像オブジェクトでも正しく細線化を行うことが可能です
  3次元画像に対して適用した場合の結果は正しくないので注意が必要です
  出力画像では，背景に0，前景に1が代入されています．もし，画像として保存したい場合は本関数の実行後に画素値が1のものを255に置き換えてください．

- 参考文献
  - C. J. Hilditch, `Linear Skeleton from Square Cupboards,'' In: Machine Intelligence 6, B. Meltzer and D. Michie eds., Edinburgh Univ. Press, pp.403?420, 1969`
  - `鳥脇純一郎,`画像理解のためのディジタル画像処理〔II〕，'' 昭晃堂，pp.56-59，1988

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array2< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array< T, Allocator >::size(), mist::array2< T, Allocator >::size1(), と mist::array2< T, Allocator >::size2().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::thinning26 | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out
| ) |  |

ユークリッド距離を用いた3次元画像に対する細線化アルゴリズム

細線化結果は26連結となる

- 参考文献
- 斉藤豊文, 森健策, 鳥脇純一郎, ``ユークリッド距離変換を用いた3次元ディジタル画像の薄面化および細線化の逐次型アルゴリズムとその諸性質,'' 電子情報通信学会論文誌D-II, vol.J79-D-II, no.10, pp.1675-1685, 1996

注意
  入力と出力が同じ画像オブジェクトでも正しく細線化することが可能です
  画素のアスペクト比が1でない場合は，出力画像の型をfloatかdoubleにしないと正確な結果が得られません．十分に注意してください．
  出力画像では，背景に0，前景に1が代入されています．

細線化を行う際に，出力画像の要素のデータ型で一度ユークリッド2乗距離変換した後，細線化処理が実行されます． そのため，出力画像のデータ型が unsinged char の場合には，画像のサイズによっては距離変換が最後まで正しく行われません． 細線化を実行する場合は，unsigned short かそれよりも大きい値を表現できるデータ型を利用してください．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), mist::array3< T, Allocator >::size1(), mist::array3< T, Allocator >::size2(), と mist::array3< T, Allocator >::size3().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::thinning6 | ( | const array3< T1, Allocator1 > & | in,
|  | array3< T2, Allocator2 > & | out
| ) |  |

ユークリッド距離を用いた3次元画像に対する細線化アルゴリズム

細線化結果は6連結となる

- 参考文献
- 斉藤豊文, 森健策, 鳥脇純一郎, ``ユークリッド距離変換を用いた3次元ディジタル画像の薄面化および細線化の逐次型アルゴリズムとその諸性質,'' 電子情報通信学会論文誌D-II, vol.J79-D-II, no.10, pp.1675-1685, 1996

注意
  入力と出力が同じ画像オブジェクトでも正しく細線化することが可能です
  画素のアスペクト比が1でない場合は，出力画像の型をfloatかdoubleにしないと正確な結果が得られません．十分に注意してください．
  出力画像では，背景に0，前景に1が代入されています．

細線化を行う際に，出力画像の要素のデータ型で一度ユークリッド2乗距離変換した後，細線化処理が実行されます． そのため，出力画像のデータ型が unsinged char の場合には，画像のサイズによっては距離変換が最後まで正しく行われません． 細線化を実行する場合は，unsigned short かそれよりも大きい値を表現できるデータ型を利用してください．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array3< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array3< T, Allocator >::reso3(), mist::array< T, Allocator >::size(), mist::array3< T, Allocator >::size1(), mist::array3< T, Allocator >::size2(), と mist::array3< T, Allocator >::size3().

template<class T1 , class T2 , class Allocator1 , class Allocator2 >

void mist::euclidean::thinning8 | ( | const array2< T1, Allocator1 > & | in,
|  | array2< T2, Allocator2 > & | out
| ) |  |

ユークリッド距離を用いた2次元画像に対する細線化アルゴリズム

細線化結果は8連結となる

- 参考文献
- 鈴木智, 阿部圭一, ``距離変換の結果を利用した二値画像の逐次細線化,'' 電子情報通信学会論文誌D, vol.68-D, no.4, pp.473-480, 1985.

注意
  入力と出力が同じ画像オブジェクトでも正しく細線化を行うことが可能です
  3次元画像に対して適用した場合の結果は正しくないので注意が必要です
  画素のアスペクト比が1でない場合は，出力画像の型をfloatかdoubleにしないと正確な結果が得られません．十分に注意してください．
  出力画像では，背景に0，前景に1が代入されています．もし，画像として保存したい場合は本関数の実行後に画素値が1のものを255に置き換えてください．

細線化を行う際に，出力画像の要素のデータ型で一度ユークリッド2乗距離変換した後，細線化処理が実行されます． そのため，出力画像のデータ型が unsinged char の場合には，画像のサイズによっては距離変換が最後まで正しく行われません． 細線化を実行する場合は，unsigned short かそれよりも大きい値を表現できるデータ型を利用してください．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力画像（0か1の2値）

参照先 mist::array2< T, Allocator >::resize(), mist::array1< T, Allocator >::reso1(), mist::array2< T, Allocator >::reso2(), mist::array< T, Allocator >::size(), mist::array2< T, Allocator >::size1(), と mist::array2< T, Allocator >::size2().