領域検出した2点間の位置関係によるOK,NG判定

以下の写真のように膝とお尻の検出ができました。この2点間を利用してOK,NG判定はできるのでしょうか?
例えば、お尻の検出範囲が膝の検出範囲より下がっているときにOKを出して、それ以外の状態をNG判定にする
という判定は可能でしょうか。

「いいね!」 8

ご質問ありがとうございます。

複数タスクの結果を使っての判定は、スクリプト検査タスクで実現可能です。

スクリプト検査タスクの使い方は以下をご覧ください。
スクリプト検査機能

また、錠剤の位置関係をスクリプトで判別する例を紹介します。
image

錠剤の位置関係を判別

  1. 茶錠剤用の領域検出を追加
    image

  2. 茶錠剤領域のアノテーション及び学習
    ここでは結果だけ表示します。
    image

  3. 白錠剤用の領域検出を追加
    image

  4. 茶錠剤領域のアノテーション及び学習
    ここでは結果だけ表示します。
    image

  5. ランタイム評価画面を開きます
    image

  6. スクリプト検査設定タブを選択

  7. スクリプトを記述してスクリプト検査をチェック

例 : 茶錠剤の重心と白錠剤の重心のY座標を比較して茶錠剤が下にあればOK

// 検査をしない場合はnull 条件に一致する場合はtrue 条件に一致しない場合はfalse
bool? result = null;

// 茶錠剤領域検出で得られた検査を通過したブロブリスト
var brownBlobs = GetInspectedBlobs("茶錠剤領域検出");
// 白錠剤領域検出で得られた検査を通過したブロブリスト
var whiteBlobs = GetInspectedBlobs("白錠剤領域検出");

// ブロブが存在する場合
if (brownBlobs?.Any() == true && whiteBlobs?.Any() == true)
{
    var brownBlob = brownBlobs.First();
    var whiteBlob = whiteBlobs.First();
    // 重心座標
    var brownPoint = brownBlob.Centroid;
    var whitePoint = whiteBlob.Centroid;
    // 茶錠剤が白錠剤より下にあればtrue,そうでなければfalse
    result = brownPoint.Y > whiteBlob.Y;
}
// resultは必ず最後の行に記述してください
result

検査設定を以下のように設定すると
image
茶錠剤が上にあるときはNG

茶錠剤が下にあるときはOK

という結果が得られます。

各錠剤の部分を膝とお尻に置き換えて頂ければと思います。

「いいね!」 5