モルフォロジ
[画像フィルタ]


説明

本ライブラリは、画像に対するモルフォロジ演算を行うライブラリです。

Erosion(収縮)
まず2値画像の場合について説明します。 2値画像の各座標において、値が1の点をFG,値が0の点をBGと呼ぶことにします。 以下、集合Xを(座標)点の集合とし、集合内の点xが2値画像上でFG(foreground, 濃度値1の画素)に対応するとします。 (2値画像上で集合に属さない点はBG(background, 濃度値0の画素)) このとき構造要素Bによるerosion: $\varepsilon _{B}$ は次のような定義になります。

\[ \varepsilon _{B}\left(X\right)=\left\{ x\mid B_{x}\subseteq X\right\} \]

\[ \varepsilon _{B}\left(X\right)= \bigcap \limits _{b\in B} X_{-b} \]

ただし、

\[ B_{x}=\left\{ b+x \mid b\in B\right\} \]

濃淡画像の場合、Xは画像内のすべての座標点の集合となり、 $f\left(x\right)$ を点xの濃淡値とすると、点xにおけるerosion演算は

\[ \left[\varepsilon _{B}\left(f\right)\right]\left(x\right)=\min \limits _{b\in B}f\left(x+b\right) \]

となり、erosionは画像内のすべての点でerosion演算を行った結果となります。

Dilation(膨張)
2値画像の場合、構造要素Bによるdilation: $\delta _{B}$

\[ \delta _{B}\left(X\right)=\left\{ x\mid B_{x}\cap X\ne \emptyset \right\} \]

となります。
濃淡画像の場合、点xにおけるdilation演算は

\[ \left[\delta _{B}\left(f\right)\right]\left(x\right)=\max \limits _{b\in B}f\left(x+b\right) \]

となり、画像のdilationは画像内のすべての点でdilation演算を行った結果となります。

boundary conditon
画像の端において、構造要素が画像からはみ出してしまう場合があります。このような時は、画像と構造要素の共通部分で上記で定義した演算を行います。 アンカ位置が構造要素に含まれない点の場合(構造要素を初期化する際にアンカ位置の値を0で指定した場合)、画像と構造要素の共通部分での構造要素の点の集合が 空集合となってしまうことがありますが、内部的に画像のボーダー拡張を行いそのような事態を回避しています。 画像のボーダー拡張が行われる可能性のある関数には詳細を記載していますので、そちらを参照して下さい。


モジュール

 構造要素オブジェクト

列挙型

enum  f_se_shape {
  F_SE_LINE_FSLASH = 2, F_SE_LINE_BSLASH = 3,
  F_SE_LINE_VLINE = 4, F_SE_LINE_HLINE = 5,
  F_SE_LINE_CROSS = 6
}
 fnFIE_create_line_se() 線状構造要素種類 [詳細]
enum  f_paired_se {
  F_SE_GOLAY_L4, F_SE_GOLAY_L8,
  F_SE_GOLAY_E4, F_SE_GOLAY_E8,
  F_SE_GOLAY_I4, F_SE_GOLAY_I8
}
 定義済み構造要素ペア [詳細]

関数

INT FVALGAPI fnFIE_erosion_se (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse)
 構造要素指定 erosion
INT FVALGAPI fnFIE_dilation_se (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse)
 構造要素指定 dilation
INT FVALGAPI fnFIE_opening_se (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse)
 構造要素指定 opening
INT FVALGAPI fnFIE_closing_se (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse)
 構造要素指定 closing
INT FVALGAPI fnFIE_tophat_se (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse)
 構造要素指定 top-hat
INT FVALGAPI fnFIE_bottomhat_se (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse)
 構造要素指定 bottom-hat
INT FVALGAPI fnFIE_hit_or_miss (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 2値画像の構造要素指定 hit-or-miss
INT FVALGAPI fnFIE_morphology_CHMT (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 構造要素指定 constrained hit-or-miss
INT FVALGAPI fnFIE_morphology_UHMT (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 構造要素指定 unconstrained hit-or-miss
INT FVALGAPI fnFIE_thinning (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 構造要素指定 unconstrained thinning
INT FVALGAPI fnFIE_thickening (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 構造要素指定 unconstrained thickening
INT FVALGAPI fnFIE_cthinning (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 構造要素指定 constrained thinning
INT FVALGAPI fnFIE_cthickening (FHANDLE hsrc_img, FHANDLE hdst_img, FHANDLE hse_FG, FHANDLE hse_BG)
 構造要素指定 constrained thickening
INT FVALGAPI fnFIE_erosion (FHANDLE hsrc_img, FHANDLE hdst_img, INT filter_num, INT iMode)
 3×3erosion filter
INT FVALGAPI fnFIE_dilation (FHANDLE hsrc_img, FHANDLE hdst_img, INT filter_num, INT iMode)
 3×3dilation filter
INT FVALGAPI fnFIE_opening (FHANDLE hsrc_img, FHANDLE hdst_img, INT filter_num, INT iMode)
 opening filter
INT FVALGAPI fnFIE_closing (FHANDLE hsrc_img, FHANDLE hdst_img, INT filter_num, INT iMode)
 closing filter
INT FVALGAPI fnFIE_tophat (FHANDLE hsrc_img, FHANDLE hdst_img, INT filter_num, INT iMode)
 top-hat filter
INT FVALGAPI fnFIE_bottomhat (FHANDLE hsrc_img, FHANDLE hdst_img, INT filter_num, INT iMode)
 bottom-hat filter
INT FVALGAPI fnFIE_thinning_predefined (FHANDLE hsrc_img, FHANDLE hdst_img, enum f_paired_se se_type, INT num)
 定義済み構造要素によるthinning
INT FVALGAPI fnFIE_thickening_predefined (FHANDLE hsrc_img, FHANDLE hdst_img, enum f_paired_se se_type, INT num)
 定義済み構造要素によるthickening

列挙型

enum f_se_shape

fnFIE_create_line_se() 線状構造要素種類

列挙型の値:
F_SE_LINE_FSLASH  右上から左下への斜線
F_SE_LINE_BSLASH  左上から右下への斜線
F_SE_LINE_VLINE  縦線
F_SE_LINE_HLINE  横線
F_SE_LINE_CROSS  X印

定義済み構造要素ペア

参照:
fnFIE_thinning_predefined(), fnFIE_thickening_predefined()
列挙型の値:
F_SE_GOLAY_L4  GOLAY-L 4連結
F_SE_GOLAY_L8  GOLAY-L 8連結
F_SE_GOLAY_E4  GOLAY-E 4連結
F_SE_GOLAY_E8  GOLAY-E 8連結
F_SE_GOLAY_I4  GOLAY-I 4連結
F_SE_GOLAY_I8  GOLAY-I 8連結


関数

INT FVALGAPI fnFIE_erosion_se ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse 
)

構造要素指定 erosion

指定の構造要素によるerosion。 構造要素Bによるerosion $ \varepsilon _{B} $ を行います。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理について
アンカー位置が構造要素に含まれない点で、以下に挙げる条件を1つでも満たす場合、 関数内部で自動的に入力画像のボーダー拡張が行われます。
  • -anchor_x ≦ x ≦ 0 かつ -anchor_y ≦ y ≦ 0 の位置に構造要素に含まれる点が1つもない
  • -anchor_x ≦ x ≦ 0 かつ 0 ≦ y ≦ size_y - anchor_y - 1 の位置に構造要素に含まれる点が1つもない
  • 0 ≦ x ≦ size_x - anchor_x - 1 かつ -anchor_y ≦ y ≦ 0 の位置に構造要素に含まれる点が1つもない
  • 0 ≦ x ≦ size_x - anchor_x - 1 かつ 0 ≦ y ≦ size_y - anchor_y - 1 の位置に構造要素に含まれる点が1つもない
なお、ボーダー拡張モードはF_BORDER_CONTINUOUSになっています。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse 構造要素のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
以下は、半径が3のDISK型の構造要素により処理をした結果です。
fie_solodel1.png

入力画像

fie_erosion_disk.png

処理結果画像

INT FVALGAPI fnFIE_dilation_se ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse 
)

構造要素指定 dilation

指定の構造要素によるdilation。

構造要素Bによるdilation $ \delta _{B} $ を行います。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理について
アンカー位置が構造要素に含まれない点で、以下に挙げる条件を1つでも満たす場合、 関数内部で自動的に入力画像のボーダー拡張が行われます。
  • -anchor_x ≦ x ≦ 0 かつ -anchor_y ≦ y ≦ 0 の位置に構造要素に含まれる点が1つもない
  • -anchor_x ≦ x ≦ 0 かつ 0 ≦ y ≦ size_y - anchor_y - 1 の位置に構造要素に含まれる点が1つもない
  • 0 ≦ x ≦ size_x - anchor_x - 1 かつ -anchor_y ≦ y ≦ 0 の位置に構造要素に含まれる点が1つもない
  • 0 ≦ x ≦ size_x - anchor_x - 1 かつ 0 ≦ y ≦ size_y - anchor_y - 1 の位置に構造要素に含まれる点が1つもない
なお、ボーダー拡張モードはF_BORDER_CONTINUOUSになっています。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse 構造要素のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
以下は、半径が3のDISK型の構造要素により処理をした結果です。
fie_solodel1.png

入力画像

fie_dilation_disk.png

処理結果画像

INT FVALGAPI fnFIE_opening_se ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse 
)

構造要素指定 opening

指定の構造要素によるopening $ \gamma _{B} $ を行います。

openings処理とは構造要素Bによるerosion $ \varepsilon _{B} $ を行ってから、 構造要素 $ \check B $ によるdilation $ \delta _{\check B} $ を行います。 ただし

\[ \check B=\left\{ -b\mid b\in B\right\} \]

つまり画像 f のopeningは

\[ \gamma _{B}\left(f\right)=\delta _{\check B}\left[ \varepsilon _{B}\left(f\right)\right] \]

となります。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse 構造要素のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
以下は、半径が3のDISK型の構造要素により処理をした結果です。
fie_solodel1.png

入力画像

fie_opening_disk.png

処理結果画像

INT FVALGAPI fnFIE_closing_se ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse 
)

構造要素指定 closing

指定の構造要素によるclosing $ \phi _{B} $ を行います。

closingとは構造要素Bによるdilation $ \delta _{B} $ を行ってから、 構造要素 $ \check B $ によるerosion $ \varepsilon _{\check B} $ を行います。 ただし

\[ \check B=\left\{ -b\mid b\in B\right\} \]

つまり画像 f のclosingは

\[ \phi _{B}\left(f\right)=\varepsilon _{\check B}\left[ \delta _{B}\left(f\right)\right] \]

となります。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse 構造要素のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
処理結果例:
以下は、半径が3のDISK型の構造要素により処理をした結果です。
fie_solodel1.png

入力画像

fie_closing_disk.png

処理結果画像

INT FVALGAPI fnFIE_tophat_se ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse 
)

構造要素指定 top-hat

指定の構造要素による top-hat $ \mathrm{WTH}_{B} $ を行います。

top-hat 処理とは入力画像 f から、f の構造要素Bによるopening $ \gamma _{B} $ 結果画像を引きます。 つまり画像 f のtop-hatは

\[ \mathrm{WTH}_{B}\left(f\right)=f-\gamma _{B}\left(f\right) \]

となります。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: uc8, s16, us16, double )
[in] hse 構造要素のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_sub()

INT FVALGAPI fnFIE_bottomhat_se ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse 
)

構造要素指定 bottom-hat

指定の構造要素による bottom-hat $ \mathrm{BTH}_{B} $ を行います。

bottom-hat処理とは f の構造要素Bによるclosing $ \phi _{B} $ 結果画像から入力画像 f を引きます。 つまり画像 f のbottom-hatは

\[ \mathrm{BTH}_{B}\left(f\right)=\phi _{B}\left(f\right)-f \]

となります。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: uc8, s16, us16, double )
[in] hse 構造要素のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_img_sub()

INT FVALGAPI fnFIE_hit_or_miss ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

2値画像の構造要素指定 hit-or-miss

2値画像に対して指定の構造要素による hit-or-miss $ \mathrm{HMT}_{\mathbf{B}} $ を行います。 濃淡画像に対しての hit-or-miss 処理は fnFIE_morphology_CHMT() 又は fnFIE_morphology_UHMT() を使用してください。

入力画像 Xの構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ による hit-or-miss $ \mathrm{HMT}_{\mathbf{B}} $ は Xの構造要素 $B_{FG}$ によるerosion結果画像と Xのnot画像の構造要素 $B_{BG}$ によるerosion結果画像 を and したものとなります。 すなわち、次のような定義となります。

\[ \mathrm{HMT}_{\mathbf{B}}\left(X\right) = \varepsilon _{B_{FG}} \left(X\right) \cap \varepsilon _{B_{BG}}\left(X^c\right) \]

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 $ B_{FG} \cap B_{BG} = \emptyset $ でなければすべての画素が0となる結果画像になります。 (内部でチェックは行いません。)

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_erosion_se() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin )
[out] hdst_img 処理結果画像( type: bin )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_morphology_CHMT(), fnFIE_morphology_UHMT(), fnFIE_erosion_se(), fnFIE_img_not(), fnFIE_img_and()
処理結果例:
fie_hit_or_miss1.png

入力画像

fie_hit_or_miss3.png

構造要素(拡大画像)

fie_hit_or_miss2.png

処理結果画像(構造要素と一致した点)

INT FVALGAPI fnFIE_morphology_CHMT ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

構造要素指定 constrained hit-or-miss

濃淡画像に対して指定の構造要素による constrained hit-or-miss $ \mathrm{CHMT}_{\mathbf{B}} $ を行います。

入力画像 $f$ の座標 $x$ における 構造要素 $ \mathrm{B} = \left(B_{FG},B_{BG}\right) $ による constrained hit-or-miss $ \mathrm{CHMT}_{\mathbf{B}} $ は次式で定義されます。

\[ [\mathrm{CHMT}_{\mathbf{B}}(f)](x) = \begin{cases} f(x) - \left[\delta _{B_{BG}}(f)\right](x), & \mathrm{if} \ f(x) = \left[\varepsilon_{B_{FG}}(f)\right](x) \ \mathrm{and} \ \left[\delta_{B_{BG}}(f)\right](x) < f(x). \\ \left[\varepsilon _{B_{FG}}(f)\right](x) - f(x), & \mathrm{if} \ f(x) = \left[\delta_{B_{BG}}(f)\right](x) \ \mathrm{and} \ \left[\varepsilon_{B_{FG}}(f)\right](x) > f(x). \\ 0, & \mathrm{otherwise}. \end{cases} \]

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 おなじく、構造要素のアンカー(原点)位置 $o$$ o \in B_{FG} $ または $ o \in B_{BG} $ となるように設定してください。 これらの条件が満たされない場合、すべての画素が0となる結果画像になります。 (内部でチェックは行いません。)

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_erosion_se(), fnFIE_dilation_se() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: uc8, s16, us16, double )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_morphology_UHMT(), fnFIE_erosion_se(), fnFIE_dilation_se(), fnFIE_img_sub()

INT FVALGAPI fnFIE_morphology_UHMT ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

構造要素指定 unconstrained hit-or-miss

濃淡画像に対して指定の構造要素による unconstrained hit-or-miss $ \mathrm{UHMT}_{\mathbf{B}} $ を行います。

$ \mathrm{UHMT}_{\mathbf{B}} $ 処理は 入力画像 f の構造要素 $B_{FG}$ によるerosion結果画像から 入力画像 f の構造要素 $B_{BG}$ によるdilation結果画像引きます(画像間減算)。 $\varepsilon _{B_{FG}}\left(x\right) < \delta _{B_{FG}}\left(x\right)$ となる点xでは画素の値が0となります。 つまり、入力画像 $f$ の座標 $x$ における構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ による unconstrained hit-or-miss $ \mathrm{UHMT}_{\mathbf{B}} $

\[ [\mathrm{UHMT}_{\mathbf{B}}(f)](x) = \begin{cases} \left[\varepsilon _{B_{FG}}(f)\right](x)-\left[\delta _{B_{BG}}(f)\right](x), & \mathrm{if} \ \left[\varepsilon _{B_{FG}}(f)\right](x) > \left[\delta _{B_{BG}}(f)\right](x) \\ 0, & \mathrm{otherwise}. \end{cases} \]

となります。

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 $ B_{FG} \cap B_{BG} = \emptyset $ でなければすべての画素が0となる結果画像になります。 (内部でチェックは行いません。)

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_erosion_se(), fnFIE_dilation_se() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: uc8, s16, us16, double )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_morphology_CHMT(), fnFIE_erosion_se(), fnFIE_dilation_se(), fnFIE_img_sub()

INT FVALGAPI fnFIE_thinning ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

構造要素指定 unconstrained thinning

指定の構造要素ペアによる thinning $ \mathrm{THIN}_{\mathbf{B}} $ を行います。 本関数では濃淡画像における hit-or-miss 処理に unconstrained hit-or-miss を使用します。 constrained hit-or-miss 処理を適用したい場合には fnFIE_cthinning() を使用してください。 なお2値画像の場合、本関数と fnFIE_cthinning() は同一の処理を行います。

thinning 処理の一般定義は次式にて表されます。

\[ \mathrm{THIN}_{\mathbf{B}}(f) = f - \mathrm{HMT}_{\mathbf{B}}(f) \]

2値画像の場合、本関数は入力画像 X と「構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ によるhit-or-miss結果画像のnot画像」のand結果画像を出力します。 数式で表すと下式のようになります。

\[ \mathrm{THIN}_{\mathbf{B}}(X) = X \cap {\mathrm{HMT}_{\mathbf{B}}}(X)^c \]

濃淡画像の場合、本関数は入力画像 f から構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ による unconstrained hit-or-miss 結果画像を引きます。 数式で表すと下式のようになります。

\[ \mathrm{THIN}_{\mathbf{B}}(f) = f - \mathrm{UHMT}_{\mathbf{B}}(f) \]

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 $ B_{FG} \cap B_{BG} = \emptyset $ でなければすべての画素が0となる結果画像になります。 (内部でチェックは行いません。)

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_hit_or_miss(), fnFIE_morphology_UHMT() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_cthinning(), fnFIE_hit_or_miss(), fnFIE_morphology_UHMT(), fnFIE_img_sub()
処理結果例(2値画像):
fie_thinning1.png

入力画像

fie_thinning2.png

3×3構造要素(拡大画像)

fie_thinning3.png

処理結果画像

INT FVALGAPI fnFIE_thickening ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

構造要素指定 unconstrained thickening

指定の構造要素ペアによる thickening $ \mathrm{THICK}_{\mathbf{B}} $ を行います。 本関数では濃淡画像における hit-or-miss 処理に unconstrained hit-or-miss を使用します。 constrained hit-or-miss 処理を適用したい場合には fnFIE_cthickening() を使用してください。 なお2値画像の場合、本関数と fnFIE_thickening() は同一の処理を行います。

thickening 処理の一般定義は次式にて表されます。

\[ \mathrm{THICK}_{\mathbf{B}}(f) = f + \mathrm{HMT}_{\mathbf{B}}(f) \]

2値画像の場合、本関数は入力画像 X と「構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ によるhit-or-miss結果画像」のor結果画像を出力します。 数式で表すと下式のようになります。

\[ \mathrm{THICK}_{\mathbf{B}}(X) = X \cup \mathrm{HMT}_{\mathbf{B}}(X) \]

濃淡画像の場合、本関数は入力画像 f に 構造要素 $ \mathbf{B} = \left( B_{FG}, B_{BG} \right) $ による unconstrained hit-or-miss 結果画像足します。 数式で表すと下式のようになります。

\[ \mathrm{THICK}_{\mathbf{B}}(f) = f + \mathrm{UHMT}_{\mathbf{B}}(f) \]

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 $ B_{FG} \cap B_{BG} = \emptyset $ でなければすべての画素が0となる結果画像になります。 (内部でチェックは行いません。)

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_hit_or_miss(), fnFIE_morphology_UHMT() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_thickening(), fnFIE_hit_or_miss(), fnFIE_morphology_UHMT(), fnFIE_img_add()
処理結果例(2値画像):
fie_thinning3.png

入力画像

fie_thickening1.png

3×3構造要素(拡大画像)

fie_thickening2.png

処理結果画像

INT FVALGAPI fnFIE_cthinning ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

構造要素指定 constrained thinning

指定の構造要素ペアによる thinning $ \mathrm{THIN}_{\mathbf{B}} $ を行います。 本関数では濃淡画像における hit-or-miss 処理に constrained hit-or-miss を使用します。 unconstrained hit-or-miss 処理を適用したい場合には fnFIE_thinning() を使用してください。 なお2値画像の場合、本関数と fnFIE_thinning() は同一の処理を行います。

thinning 処理の一般定義は次式にて表されます。

\[ \mathrm{THIN}_{\mathbf{B}}(f) = f - \mathrm{HMT}_{\mathbf{B}}(f) \]

2値画像の場合、本関数は入力画像 Xと「構造要素 $ \mathrm{B} = \left(B_{FG},B_{BG}\right) $ によるhit-or-miss結果画像のnot画像」のand結果画像を出力します。 数式で表すと下式のようになります。

\[ \mathrm{THIN}_{\mathbf{B}}(X) = X \cap {\mathrm{HMT}_{\mathbf{B}}}(X)^c \]

濃淡画像の場合、本関数は入力画像 f から構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ による constrained hit-or-miss 結果画像を引きます。 数式で表すと下式のようになります。

\[ \begin{aligned} \left[\mathrm{THIN}_{\mathbf{B}}(f)\right](x) & = f(x) - \left[\mathrm{CHMT}_{\mathbf{B}}(f)\right](x) \\ & = \begin{cases} \left[\delta _{B_{BG}}(f)\right](x), & \mathrm{if} \ f(x) = \left[\varepsilon_{B_{FG}}(f)\right](x) \ \mathrm{and} \ \left[\delta_{B_{BG}}(f)\right](x) < f(x). \\ f(x), & \mathrm{otherwise}. \end{cases} \end{aligned} \]

なお、hit-or-miss に unconstrained hit-or-miss を用いたい場合は、 fnFIE_thinning() を使用してください。

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 濃淡画像を処理する場合には、構造要素のアンカー(原点)位置 $o$$ o \in B_{FG} $ を満たすように設定してください。 これらの条件が満たされない場合、F_ERR_INVALID_OBJECT エラーを返します。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_hit_or_miss(), fnFIE_morphology_CHMT() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_thinning(), fnFIE_hit_or_miss(), fnFIE_morphology_CHMT(), fnFIE_img_sub()

INT FVALGAPI fnFIE_cthickening ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
FHANDLE  hse_FG,
FHANDLE  hse_BG 
)

構造要素指定 constrained thickening

指定の構造要素ペアによる thickening $ \mathrm{THICK}_{\mathbf{B}} $ を行います。 本関数では濃淡画像における hit-or-miss 処理に constrained hit-or-miss を使用します。 unconstrained hit-or-miss 処理を適用したい場合には fnFIE_thickening() を使用してください。 なお2値画像の場合、本関数と fnFIE_thickening() は同一の処理を行います。

thickening 処理の一般定義は次式にて表されます。

\[ \mathrm{THICK}_{\mathbf{B}}(f) = f + \mathrm{HMT}_{\mathbf{B}}(f) \]

2値画像の場合、本関数は入力画像 X と「構造要素 $ \mathbf{B} = \left(B_{FG},B_{BG}\right) $ によるhit-or-miss結果画像」のor結果画像を出力します。 数式で表すと下式のようになります。

\[ \mathrm{THICK}_{\mathbf{B}}(X) = X \cup \mathrm{HMT}_{\mathbf{B}}(X) \]

濃淡画像の場合、本関数は入力画像 f に 構造要素 $ \mathbf{B} = \left( B_{FG}, B_{BG}\right) $ による constrained hit-or-miss 結果画像を足します。 数式で表すと下式のようになります。

\[ \begin{aligned} \left[\mathrm{THICK}_{\mathbf{B}}(f)\right](x) & = f(x) + \left[\mathrm{CHMT}_{\mathbf{B}}(f)\right](x) \\ & = \begin{cases} \left[\varepsilon _{B_{FG}}(f)\right](x) & \mathrm{if} \ f(x) = \left[\delta_{B_{BG}}(f)\right](x) \ \mathrm{and} \ \left[\varepsilon_{B_{FG}}(f)\right](x) > f(x). \\ f(x) & \mathrm{otherwise}. \end{cases} \end{aligned} \]

構造要素はペアで指定します。 値が1の画素に対応する構造要素を $ B_{FG} $ 、 値が0の画素に対応する構造要素を $ B_{BG} $ で指定してください。 また、 $ B_{FG} \cap B_{BG}= \emptyset $ となるように指定してください。 濃淡画像を処理する場合には、構造要素のアンカー(原点)位置 $o$$ o \in B_{BG} $ を満たすように設定してください。 これらの条件が満たされない場合、F_ERR_INVALID_OBJECT エラーを返します。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
境界部分処理
境界部分の処理仕様は fnFIE_hit_or_miss(), fnFIE_morphology_UHMT() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] hse_FG 構造要素 $ B_{FG} $ のハンドル
[in] hse_BG 構造要素 $ B_{BG} $ のハンドル
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_INVALID_OBJECT 構造要素に不正なハンドルが指定されたため異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_thickening(), fnFIE_hit_or_miss(), fnFIE_morphology_UHMT(), fnFIE_img_add()

INT FVALGAPI fnFIE_erosion ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
INT  filter_num,
INT  iMode 
)

3×3erosion filter

3x3の固定サイズ構造要素(SE)によるerosion処理を行います。

8近傍( iMode = 0 )の場合
3×3の矩形構造要素によるerosionを指定回数実行します。
4近傍( iMode = 1 )の場合
3×3の矩形構造要素から、アンカ位置の左上、右上、左下、右下を除いた構造要素によるerosionを指定回数実行します。
入力画像と出力画像は下記の条件を全て満たしていなければいけません。
  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] filter_num erosion実行回数
[in] iMode 近傍モード(0:8近傍 1:4近傍)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_create_box_se()
処理結果例:
fie_solodel1.png

入力画像

fie_erosion.png

処理結果画像

INT FVALGAPI fnFIE_dilation ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
INT  filter_num,
INT  iMode 
)

3×3dilation filter

3x3の固定サイズ構造要素(SE)によるdilation処理を行います。

8近傍( iMode = 0 )の場合
3×3の矩形構造要素によるdilationを指定回数実行します。
4近傍( iMode = 1 )の場合
3×3の矩形構造要素から、アンカ位置の左上、右上、左下、右下を除いた構造要素によるdilationを指定回数実行します。
入力画像と出力画像は下記の条件を全て満たしていなければいけません。
  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] filter_num dilation実行回数
[in] iMode 近傍モード(0:8近傍 1:4近傍)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_create_box_se()
処理結果例:
fie_solodel1.png

入力画像

fie_dilation.png

処理結果画像

INT FVALGAPI fnFIE_opening ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
INT  filter_num,
INT  iMode 
)

opening filter

指定の iModefnFIE_erosion()filter_num 回行った後、 fnFIE_dilation()filter_num 回行った結果を出力します。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] filter_num erosion/dilation実行回数
[in] iMode 近傍モード(0:8近傍 1:4近傍)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_erosion(), fnFIE_dilation()
処理結果例:
fie_solodel1.png

入力画像

fie_opening.png

処理結果画像

INT FVALGAPI fnFIE_closing ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
INT  filter_num,
INT  iMode 
)

closing filter

指定の iModefnFIE_dilation()filter_num 回行った後、 fnFIE_erosion()filter_num 回行った結果を出力します。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] filter_num dilation/erosion実行回数
[in] iMode 近傍モード(0:8近傍 1:4近傍)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_erosion(), fnFIE_dilation()
処理結果例:
fie_solodel1.png

入力画像

fie_closing.png

処理結果画像

INT FVALGAPI fnFIE_tophat ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
INT  filter_num,
INT  iMode 
)

top-hat filter

3x3の固定サイズ構造要素(SE)によるtop-hat処理を行います。 top-hat処理とは入力画像から fnFIE_opening() の結果を引いた画像を出力します。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: uc8, s16, us16, double )
[in] filter_num opening実行回数
[in] iMode 近傍モード(0:8近傍 1:4近傍)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_opening(), fnFIE_img_sub()
処理結果例:
circuit.png

入力画像

fie_tophat.png

処理結果画像

INT FVALGAPI fnFIE_bottomhat ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
INT  filter_num,
INT  iMode 
)

bottom-hat filter

3x3の固定サイズ構造要素(SE)によるbottom-hat処理を行います。 bottom-hat処理とはfnFIE_closing() の結果から入力画像を引いた画像を出力します。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
引数:
[in] hsrc_img 処理対象画像( type: uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: uc8, s16, us16, double )
[in] filter_num closing実行回数
[in] iMode 近傍モード(0:8近傍 1:4近傍)
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡されたため、異常終了
F_ERR_NOMEMORY メモリ不足で確保に失敗した
F_ERR_INVALID_PARAM パラメータ異常
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_closing(), fnFIE_img_sub()
処理結果例:
fie_arithmetic_op_mask2.png

入力画像

fie_bottomhat.png

処理結果画像

INT FVALGAPI fnFIE_thinning_predefined ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
enum f_paired_se  se_type,
INT  num 
)

定義済み構造要素によるthinning

指定の定義済み構造要素ペア $\mathbf{B}$ による thinning $ \mathrm{THIN}_{\mathbf{B}} $ を行います。 thinning の定義については fnFIE_cthinning() のドキュメントを参照してください。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
構造要素ペア
se_type パラメータで指定できる定義済み構造要素ペア $\mathbf{B}$ は下記の6種類です。
F_SE_GOLAY_L4, F_SE_GOLAY_L8
morphology_se_golay-l.png
スケルトンを求めるために使われる構造要素ペアです。 F_SE_GOLAY_L4 は4連結での定義、F_SE_GOLAY_L8 は8連結での定義となります。 F_SE_GOLAY_L4 および F_SE_GOLAY_L8 はそれぞれ、 上図で示される前景と背景の構造要素ペア2組を 90度ずつ回転させた計8組のペアで構成されます。 つまり1回の処理において8回の fnFIE_cthinning() 処理が行われます。
F_SE_GOLAY_E4, F_SE_GOLAY_E8
morphology_se_golay-e.png
スケルトンの枝打ち(pruning)を行うために使われる構造要素ペアです。 F_SE_GOLAY_E4 は4連結での定義、F_SE_GOLAY_E8は8連結での定義となります。 F_SE_GOLAY_E4 は上図で示される前景と背景の構造要素ペア1組を 90度ずつ回転させた計4組のペアで構成されます。 また、F_SE_GOLAY_E8 は上図で示される前景と背景の構造要素ペア2組を 90度ずつ回転させた計8組のペアで構成されます。 つまり1回の処理において F_SE_GOLAY_E4 では4回、 F_SE_GOLAY_E8 では8回の fnFIE_cthinning() 処理が行われます。
F_SE_GOLAY_I4, F_SE_GOLAY_I8
morphology_se_golay-i.png
孤立点の除去を行うために使われる構造要素ペアです。 F_SE_GOLAY_I4 は4連結での定義、F_SE_GOLAY_I8 は8連結での定義となります。 上図で示される前景と背景の構造要素ペア1組で構成されます。 つまり1回の処理において1回の fnFIE_cthinning() 処理が行われます。
繰り返し回数
本関数では num パラメータで指定された回数に達するか、 または処理前と処理後で結果が変化しなくなるまで同じ処理を繰り返し実行します。 num に -1 が指定された場合には、繰り返し回数に上限を設けず、 処理前と処理後の結果が同じになるまで繰り返し実行します。
境界部分処理
境界部分の処理仕様は fnFIE_cthinning() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] se_type 構造要素ペア指定。下記の何れかを指定。
  • F_SE_GOLAY_L4 GOLAY-L 4連結
  • F_SE_GOLAY_L8 GOLAY-L 8連結
  • F_SE_GOLAY_E4 GOLAY-E 4連結
  • F_SE_GOLAY_E8 GOLAY-E 8連結
  • F_SE_GOLAY_I4 GOLAY-I 4連結
  • F_SE_GOLAY_I8 GOLAY-I 8連結
[in] num 繰り返し回数( 0 < num または -1 )
-1 を指定すると、画像が変化しなくなるまで繰り返します。
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
F_ERR_INVALID_PARAM se_type, num に不正な値が渡された
F_ERR_NOMEMORY メモリ確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_cthinning(), fnFIE_thickening_predefined()
処理結果例:
以下は2値画像において繰り返し回数 num = -1 と指定して実行した処理結果例です。
  入力画像 F_SE_GOLAY_Lx
4連結
fie_thinning_wf.png
fie_thinning_wf_l4.png
8連結
fie_thinning_wf.png
fie_thinning_wf_l8.png
  入力画像 F_SE_GOLAY_Ix F_SE_GOLAY_Ex
4連結
fie_thinning_wf_l4.png
fie_thinning_wf_i4.png
fie_thinning_wf_e4.png
8連結
fie_thinning_wf_l8.png
fie_thinning_wf_i8.png
fie_thinning_wf_e8.png

INT FVALGAPI fnFIE_thickening_predefined ( FHANDLE  hsrc_img,
FHANDLE  hdst_img,
enum f_paired_se  se_type,
INT  num 
)

定義済み構造要素によるthickening

指定の定義済み構造要素ペア $\mathbf{B}$ のコンプリメント $\mathbf{B^C}$ による thickening $ \mathrm{THICK}_{\mathbf{B^C}} $ を行います。 thickeningの定義については fnFIE_cthickening() のドキュメントを参照してください。

入力画像と出力画像は下記の条件を全て満たしていなければいけません。

  • 入力画像と出力画像の型、及びチャネル数が等しい事
  • 入力画像の幅と高さが出力画像と等しい事
  • チャネル数が1である事
構造要素ペア
se_type パラメータで指定できる定義済み構造要素ペア $\mathbf{B}$ は下記の6種類です。
F_SE_GOLAY_L4, F_SE_GOLAY_L8
morphology_se_golay-l.png
スケルトンを求めるために使われる構造要素ペアです。 F_SE_GOLAY_L4 は4連結での定義、F_SE_GOLAY_L8 は8連結での定義となります。 F_SE_GOLAY_L4 および F_SE_GOLAY_L8 はそれぞれ、 上図で示される前景と背景の構造要素ペア2組を 90度ずつ回転させた計8組のペアで構成されます。 つまり1回の処理において8回の fnFIE_cthickening() 処理が行われます。
F_SE_GOLAY_E4, F_SE_GOLAY_E8
morphology_se_golay-e.png
スケルトンの枝打ち(pruning)を行うために使われる構造要素ペアです。 F_SE_GOLAY_E4 は4連結での定義、F_SE_GOLAY_E8は8連結での定義となります。 F_SE_GOLAY_E4 は上図で示される前景と背景の構造要素ペア1組を 90度ずつ回転させた計4組のペアで構成されます。 また、F_SE_GOLAY_E8 は上図で示される前景と背景の構造要素ペア2組を 90度ずつ回転させた計8組のペアで構成されます。 つまり1回の処理において F_SE_GOLAY_E4 では4回、 F_SE_GOLAY_E8 では8回の fnFIE_cthickening() 処理が行われます。
F_SE_GOLAY_I4, F_SE_GOLAY_I8
morphology_se_golay-i.png
孤立点の除去を行うために使われる構造要素ペアです。 F_SE_GOLAY_I4 は4連結での定義、F_SE_GOLAY_I8 は8連結での定義となります。 上図で示される前景と背景の構造要素ペア1組で構成されます。 つまり1回の処理において1回の fnFIE_cthickening() 処理が行われます。
繰り返し回数
本関数では num パラメータで指定された回数に達するか、 または処理前と処理後で結果が変化しなくなるまで同じ処理を繰り返し実行します。 num に -1 が指定された場合には、繰り返し回数に上限を設けず、 処理前と処理後の結果が同じになるまで繰り返し実行します。
境界部分処理
境界部分の処理仕様は fnFIE_cthickening() の仕様に準じます。
引数:
[in] hsrc_img 処理対象画像( type: bin, uc8, s16, us16, double )
[out] hdst_img 処理結果画像( type: bin, uc8, s16, us16, double )
[in] se_type 構造要素ペア指定。下記の何れかを指定。
  • F_SE_GOLAY_L4 GOLAY-L 4連結
  • F_SE_GOLAY_L8 GOLAY-L 8連結
  • F_SE_GOLAY_E4 GOLAY-E 4連結
  • F_SE_GOLAY_E8 GOLAY-E 8連結
  • F_SE_GOLAY_I4 GOLAY-I 4連結
  • F_SE_GOLAY_I8 GOLAY-I 8連結
[in] num 繰り返し回数。( 0 < num または -1 )
-1 を指定すると、画像が変化しなくなるまで繰り返します。
戻り値:
F_ERR_NONE 正常終了
F_ERR_INVALID_IMAGE 不正な画像ハンドルが渡された
F_ERR_INVALID_PARAM se_type, num に不正な値が渡された
F_ERR_NOMEMORY メモリ確保に失敗した
F_ERR_NO_LICENCE ライセンスエラー、または未初期化エラー
参照:
fnFIE_thickening(), fnFIE_thinning_predefined()
処理結果例:
以下は2値画像において繰り返し回数 num = -1 と指定して実行した処理結果例です。
  入力画像 F_SE_GOLAY_Lx
4連結
fie_thinning_wf.png
fie_thickening_wf_l4.png
8連結
fie_thinning_wf.png
fie_thickening_wf_l8.png
  入力画像 F_SE_GOLAY_Ix F_SE_GOLAY_Ex
4連結
fie_thickening_wf4.png
fie_thickening_wf_i4.png
fie_thickening_wf_e4.png
8連結
fie_thickening_wf8.png
fie_thickening_wf_i8.png
fie_thickening_wf_e8.png


Documentation copyright © 2009-2024 FAST Corporation.
Generated on Fri Aug 9 16:38:47 2024 for FIEライブラリ by doxygen 1.5.6-FASTSP-p2