EasyObjectのフレキシブルマスク
フレキシブルマスクは、BW8画像を出力する任意のアプリケーションによって、またはOpen eVision画像処理関数を使用して生成できます。
EasyObjectでは、ブロブ解析を複雑な/つながっていない形状の画像領域に制限するためにフレキシブルマスクを使用できます。
関心オブジェクトが画像の他の領域と同じグレーレベルである場合、フレキシブルマスクとEncode関数を用いて「保持」と「無視」を定義できます。
フレキシブルマスクは、ソース画像と同じ高さおよび幅を持つBW8画像です。
- フレキシブルマスクのピクセル値0のピクセルはソース画像のピクセルをマスクし、エンコードされた画像には現れません。
- フレキシブルマスクのそれ以外の値を持つピクセルはエンコードされます。

ソース画像

- フレキシブルマスクをエンコードおよび抽出するには、まず、ソース画像からコード化された画像を構築します。
- セグメンテーションメソッドを選択します(上の画像にはデフォルトのメソッド GrayscaleSingleThresholdが適しています)。
- エンコードするコード化された画像のレイヤを選択します(最小剰余閾値を用いて白と黒のレイヤ)。
- mask.SetSize(sourceImage.GetWidth(), sourceImage.GetHeight())を用いてマスクサイズを希望する大きさに調整します。
- フレキシブルマスクを引数としてECodedImage2::RenderMaskに使用します。
フレキシブルマスクとして使用可能なBW8結果画像

- 関心があるコード化された要素を選択します。
- ECodedElement::RenderMaskを用いて、コード化された画像で選択したコード化された要素から、マスクを抽出するループを作成します。
- オプションとして、これらの選択されたそれぞれのコード化要素から特徴値を計算します。
フレキシブルマスクとして使用可能なBW8結果画像

例えば、EObjectSelection::RenderMaskはノイズによって生じた小さいオブジェクトを破棄できます。
フレキシブルマスクとして使用可能なBW8結果画像

4つの円を検出(左)フレキシブルマスクによって中央のチップを分離(右)
- 新しいECodedImage2オブジェクトを宣言します。
- セットアップ変数:最初にソース画像とフレキシブルマスクを宣言し、その後でそれらを読み込みます。
- EImageEncoderオブジェクトを宣言し、場合に応じて適切なセグメンタを選択します。セグメンタをセットアップし、エンコードする適切なレイヤを選択します。
- ソース画像をエンコードします。フレキシブルマスクの領域のみを持つレイヤのエンコードはスムーズに行われます。
グレースケールの単閾値セグメンタによって黒のレイヤで適切に円がセグメント化されたことが分かります: - コード化された画像のすべてのオブジェクトを選択します。
- 大きさが小さすぎるオブジェクトをフィルタ処理で除外し、関心オブジェクトを選択します。
- 選択された特徴を表示するため、選択されたオブジェクトで反復してブロブの特徴を表示します。