まず fnFIE_measure2_execute() で2値画像を解析し、同じ色の連結領域をブローブとして抽出した解析結果を格納するオブジェクトを作成します。 次に fnFIE_measure2_get_list() で特徴量に基づくフィルタリングを行い、条件を満たしたブローブのリストを取得します。 最後にリスト内のブローブそれぞれについて、 fnFIE_measure2_get_area() などの特徴量取得関数を使用し、面積・サイズ・位置などの形状情報を取得します。
必要に応じて、 fnFIE_measure2_sort_list() にてブローブのリストを並べ替えることや、 fnFIE_measure2_refilter_list() によりフィルタ条件を変えて再フィルタリングを行うことも可能です。
これらの関係を図示すると、下図のようになり、 解析領域は、図の赤で示す領域の中に入っている必要があります。
但し前景のみの解析モード(単色解析モード)の場合、背景を解析しないため親子関係を構築しません(下図)。 そのため、親子関係を利用する一部の特徴量は計算することが出来ないため注意してください。 (どの特徴量が計算不能かどうかは 特徴量 の表と各計算関数のドキュメントを参照)
Fig. 解析色モードによる親子関係の違い
この領域の外側と連結する背景色ブローブを「背景ブローブ」と呼び、 特殊な扱いをします。背景ブローブはブローブ番号が必ず0番になります。 背景ブローブが1画素も存在していない時でも、0番ブローブは 背景を指す番号として存在し、この場合は0番はヌル領域を指し示します。 また親子関係において、0番ブローブは必ずツリーの最上位となります。
但し、解析対象色の設定(F_MEASURE2_PARAMS の color_mode )で、 前景色のみを解析するよう設定した場合は、 0番ブローブは存在するものの、常にヌル領域となります。
上図は解析対象色に前景=白、背景=黒を指定したときの例です。 このとき、青で示した領域は、解析領域の外側の0番ブローブと 連結していると見なせるため、0番ブローブとなります。
0番ブローブは有効なブローブとは見なされず、ほとんどの 特徴量 を取得することができません。
例えば、下図の黒画素について考えると、4連結の場合は5個のブローブとなり、 8連結の場合は、1個のブローブとなります。
連結条件の設定は fnFIE_measure2_execute() 実行時に F_MEASURE2_PARAMS の neighborhood にて行います。 解析対象色の設定(F_MEASURE2_PARAMS の color_mode )で、 前景と背景の両方を解析するよう設定した場合、前景の連結条件と、背景の連結条件は逆になります。 つまり、前景の連結条件として4連結を指定した場合、背景の連結条件は8連結に。 逆に、前景の連結条件として8連結を指定した場合、背景の連結条件は4連結になります。
この事は、下図の真ん中(青部)のブローブについて考えれば、何故そうしなければいけないのか自明です。
白を4連結として考えると、上図青部は赤部と連結しないことになるため、 青部は緑部の子供にならなければ矛盾します。ということは、緑部(つまり黒)は8連結でなければなりません。 逆に白を8連結として考えると、上図青部は赤部と連結することになるため、 緑部は青部と赤部を合わせたブローブの子供にならなければ矛盾します。ということは、 緑部(つまり黒)は4連結でなければなりません。
全てのブローブにはブローブ番号が割り振られており、この番号によるリンクによって親子関係の木構造は取得できます。 但し、全てのリンクは1対1の関係で表されるため、親から子への関係など1対多の関係を取得する際には リンクをたどって行くことになります。各リンクの取得には、次の関数をそれぞれ利用します。
また、全てのブローブは背景の子供か又はその子孫になるため、 親子関係の木構造のルートは必ず0番ブローブになります。 0番が背景以外のブローブに割り当てられる事はないため、 0番から順に親子関係の木構造を辿っていけば全てのブローブを参照できます。 背景の項でも述べたとおり、背景が1画素も存在していない場合や、 解析対象色の設定(F_MEASURE2_PARAMS の color_mode )で前景のみ を解析対象とするよう設定した場合でも、0番ブローブは存在するため、 この事は成り立ちます。
解析対象色の設定(F_MEASURE2_PARAMS の color_mode )で前景のみ を解析対象とするよう設定した場合は、全てのブローブは0番の子供となります。