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

ネームスペース | 関数
領域拡張法

## ネームスペース
namespace | mist::region_growing_utility
| 領域拡張法に利用する構造要素関連

## 関数
template<class Array1 , class Array2 , class MaskType , class PointList , class Component , class Condition >
Array1::difference_type | mist::region_growing (const Array1 &in, Array2 &out, const MaskType &mask, const PointList &start_points, typename Array2::value_type output_value, const Component &components, const Condition &condition, typename Array1::size_type max_paint)
| 任意の構造要素と条件を用いて領域拡張を行う関数
template<class Array1 , class Array2 , class PointList , class Component , class Condition >
Array1::difference_type | mist::region_growing (const Array1 &in, Array2 &out, const PointList &start_points, typename Array2::value_type output_value, const Component &components, const Condition &condition, typename Array1::size_type max_paint=type_limits< typename Array1::size_type >::maximum())
| 任意の構造要素と条件を用いて領域拡張を行う関数

## 説明

次のヘッダをインクルードする
#include <mist/filter/region_growing.h>
領域拡張法の使用例
typedef mist::region_growing_utility::point_type point_type; // 領域拡張の開始点を指定する型（mist::vector2 や mist::vector3 で代用可）
typedef mist::region_growing_utility::circle component_type; // 領域拡張に用いる構造要素
typedef mist::region_growing_utility::less< short > condition_type; // 領域拡張のの拡張条件
mist::region_growing(
in, // 入力画像
out, // 領域拡張を行った結果を格納する画像
point_type( x, y ), // 拡張開始点（リストにすることで複数指定可能）
128, // 領域拡張の結果に代入する値
component_type( 20 ), // 領域拡張に用いる構造要素（画素，円，球など）
condition_type( 128 ) // 領域拡張のの拡張条件（未満，以上，範囲など）
);

## 関数

template<class Array1 , class Array2 , class MaskType , class PointList , class Component , class Condition >

Array1::difference_type mist::region_growing | ( | const Array1 & | in,
|  | Array2 & | out,
|  | const MaskType & | mask,
|  | const PointList & | start_points,
|  | typename Array2::value_type | output_value,
|  | const Component & | components,
|  | const Condition & | condition,
|  | typename Array1::size_type | max_paint
| ) |  |

任意の構造要素と条件を用いて領域拡張を行う関数

注意
  処理の都合上，max_paint で指定した画素数より若干多めに領域が拡張される可能性があります．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力マークデータ
  [in] | mask | … 処理対象外マスク
  [in] | start_points | … 領域拡張の開始点のリスト（複数指定する場合は，std::vectorなどのリストに代入すること）
  [in] | output_value | … 出力マークデータに書き込む値
  [in] | components | … 領域拡張に用いる構造要素
  [in] | condition | … 構造要素内の画素が満たすべき条件
  [in] | max_paint | … 最大で塗りつぶす画素数

戻り値
  入力画像が不適切な場合や，最大反復回数を試行しても終了条件を満たさなかった場合に -1 を返す．それ以外の場合は，塗りつぶした画素数を返す．

参照先 mist::marray< Array >::fill_margin(), と mist::is_same_object().

参照元 mist::region_growing().

template<class Array1 , class Array2 , class PointList , class Component , class Condition >

Array1::difference_type mist::region_growing | ( | const Array1 & | in,
|  | Array2 & | out,
|  | const PointList & | start_points,
|  | typename Array2::value_type | output_value,
|  | const Component & | components,
|  | const Condition & | condition,
|  | typename Array1::size_type | max_paint = `type_limits< typename Array1::size_type >::maximum( )`
| ) |  |

任意の構造要素と条件を用いて領域拡張を行う関数

処理対象外マスクを設定しない領域拡張法

注意
  処理の都合上，max_paint で指定した画素数より若干多めに領域が拡張される可能性があります．

引数

  [in] | in | … 入力画像
  [out] | out | … 出力マークデータ
  [in] | start_points | … 領域拡張の開始点のリスト（複数指定する場合は，std::vectorなどのリストに代入すること）
  [in] | output_value | … 出力マークデータに書き込む値
  [in] | components | … 領域拡張に用いる構造要素
  [in] | condition | … 構造要素内の画素が満たすべき条件
  [in] | max_paint | … 最大で塗りつぶす画素数（省略した場合は条件を満たす点が存在しなくなるまで実行する）

戻り値
  入力画像が不適切な場合や，最大反復回数を試行しても終了条件を満たさなかった場合に -1 を返す．それ以外の場合は，塗りつぶした画素数を返す．

参照先 mist::region_growing().