Bottle Crate (bottle_crate)

目的

タスクは、木枠に入ったボトルの数を数え、それらがすべてキャップを持っているかどうかを確認することです。

入力

木枠に入ったボトルの画像。木枠の位置は繰り返しです。

出力

計算されたボトルとキャップの数。

ヒント

木枠とボトルの位置は安定しています。ボトルの存在を確認するには、DetectMultipleCircles を使用できます。 この場合、テンプレートマッチングよりも速くなることがあります。

キャップの存在を確認するには、CheckPresence_PixelAmount を使用できます。

接続のラベル付けについては こちらを参照ください。

Solution (AVS)

  1. Workspace ExplorerでワークスペースExamplesを開き、フィルムストリップウィンドウでBottleCrateデータセットを選択します。 ImageチャンネルをACQUIREセクションにドラッグします。 outImage出力をImageとしてラベル付けします。

  2. PROCESSセクションにDetectMultipleCirclesフィルターを追加して、ボトルの先端をすべて見つけます。

    • inImages入力をImageに接続します。
    • inRadius77.0に設定します。
    • inMaxOverlap0.0に設定します。
    • inMinScore28.0に設定します。
    • inEdgeThreshold4に設定します。
    • フィルターの「Show/Hide Ports」をクリックして、outCircles.Countポートを表示します。これをObjectCountとラベル付けします。次に、Results Controlを開き、ObjectCount行のチェックボックスをオンにし、リミットを20に設定します:
    • outCircles.Circle[]出力を"BottleCircles"としてラベル付けします。
  3. すべての見つかったボトルについて、見つかった円の色に基づいてキャップの存在を確認します。キャップはボトルの穴よりも明るいピクセルを持っています。 CheckPresence_PixelAmountを追加し、以下のパラメータを設定します:

    • inImages入力をImageに接続します。
    • inRegionを"BottleCircles"に接続します。これにより、各見つかったボトルがチェックされます。
    • inMinSaturation86に設定します。
    • inMinBrightness49に設定します。
    • outIsPresent出力をIsPresentとしてラベル付けします。
  4. 各見つかったボトルにキャップがあるかどうかを確認するには、formulaを使用できます。出力をラベルに接続する必要はありません。Formulaの出力名の前に「out」がない場合、出力は自動的にラベル付けされます。

    outCapPresence = all(IsPresent)
    Count = count(IsPresent)

  5. Results Controlを開き、Count行のチェックボックスをオンにし、リミットを20に設定します。

  6. プログラムが終了しました。これでHMIを設計できます:

    • 上部ツールバーのHMIボタンをクリックしてHMIを作成します。
    • Containersカテゴリーの中にあるGroupBoxコンテナを追加し、そのTextプロパティをImagesに設定します。これはHMIのほとんどの領域をカバーする必要があります。
  7. Images GroupBox内で:

    • HMI ControlsIndicatorsカテゴリーにあるview2DBox_PassFailインジケータを追加します。これはImages GroupBoxを満たす必要があります。そのinImageポートをImageに接続します。
    • inData1ポートをBottleCirclesに接続します。
    • inStatus1IsPresentに接続します。
    • view2DBox_PassFailのパラメータを設定します:
      • LineWidth5に設定します。
      • InitialSizeModeFitToWindowに設定します。
  8. ControlsカテゴリーのHMI Controlsで利用可能なprogramControlBoxを追加し、HMIの右上隅に配置します。これはImages GroupBoxの内部にあるべきではありません。
  9. 別のGroupBoxを追加し、そのTextプロパティをResultsに設定します。サイズを変更して、4つの要素を含めるようにします。次に、Results GroupBox内で以下を行います:
    • HMI ControlsControlsカテゴリーから2つのLabelコントロールと、Indicatorsカテゴリーから2つのPassFailIndicatorを追加します。最初のLabelTextプロパティをNumber of bottlesに設定し、2番目のLabelTextプロパティをNumber of capsに設定します。HMIは以下の画像のように表示されるはずです:
    • 最初のPassFailIndicatorについて、inFailTextinPassTextinNeutralTextポートをObjectCountに接続し、InValueポートをoutCircle.Count.Statusに接続します。
    • 2番目のPassFailIndicatorについて、inFailTextinPassTextinNeutralTextポートをCountに接続し、InValueポートをoutCount.Statusに接続します。

マクロフィルタ メイン