Cap (Easy)

目的

Tこの例のタスクは、シール (キャップの下のプラスチックのリング) が正しく配置されているかどうかを確認することです。

Input

ボトルの上部のイメージです。 ボトルの位置は可変です。

Output

検査結果を画像上に印刷します。 欠陥が検出された場合、その周囲に四角形が描画されます。

ヒント

これは、同じ例「Caps」の簡単な変形です。 Aurora Vision Studio でのプログラミングにおいてより高度なレベルにある場合は、その例を参照してください。 Aurora Vision Studio を初めて使用する場合は、ここから続けてください。

必要な検査を実行するための最初のステップは、画像内のオブジェクトの位置を検出することです。 ボトルは特に X 軸に沿って移動し、背景は一貫しているため、1D Edge Detection技術を適用し、検出されたエッジに基づいてローカル座標系を作成することが最善の方法です。

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

Solution (AVS)

  1. Workspace Explorer例題を開き、フィルムストリップウィンドウでCapDifficultデータセットを選択します。画像チャンネルを「ACQUIRE」セクションにドラッグします。
  2. ScanSingleEdgeフィルタを追加し、ReadFilmstripoutImage出力を inImageに接続します。
  3. ScanSingleEdgeをクリックします。左下隅のプロパティウィンドウで、inScanPathを選択し、キャップの左端を検出できるようにスキャン パスを定義します。 inEdgeScanParams.MinMagnitude を10に設定して、エッジをノイズの可能性から守ります。
  4. CreateCoordinateSystemFromPointフィルタを追加します。outEdge.PointinPointに接続します。 エッジが見つかった点にローカル座標系が作成されます。
  5. 別のScanSingleEdgeフィルタを追加します。ReadFilmstripoutImageinImageに接続し、 outCoordinateSysteminScanPathAlignmentに接続します
  6. 次に、プロジェクトエクスプローラー (Aurora Vision Studio の左側) に移動します。 新しいglobal parameterを作成します。 これにScanSegmentsという名前を付けます。これはSegment2DArrayタイプになります。
    次に、以下の図に示すように3つのスキャン パスを定義します。

    ScanSegmentsinScanPathに接続します。このフィルタは配列モードで実行されます。
  7. ScanSingleEdgeフィルタをクリックして、 「プロパティ」ウィンドウで次の変更を加えます。
  8. outEdge.IsNil出力を追加するには、ポートのShow/Hide portsオプションを使用します。DefectPresentというラベルを付けます。
  9. 新しい数式を追加します。フィルターに接続せずにステートメント内でラベル DefectPresentを使用します。

    outIsOK = all(DefectPresent) ?? False

  10. 次に、新しいステップ マクロフィルターを作成し、DrawResultsという名前を付けて、次の入力をそれに接続します。
    • inImageとして、ReadFilmstripoutImage出力
    • inDefectLocationsとしての outEdge.Point (後者のフィルターから)、式のoutIsOKinIsOKとして出力されます。
  11. 新しく作成されたマクロフィルターの内部に入ります。String型のChooseByPredicateを追加します。 [プロパティ] ウィンドウで次の値を設定します。
  12. マクロフィルタの入力inIsOKinConditionに接続します。
  13. DrawStrings_MultiColorフィルタを追加します。
    • マクロフィルタの入力inImageinImageに接続します。
    • outObjectinStringsに接続します。
    • マクロフィルタの入力inIsOKinColorIdsに接続します。
    • inLocationsでキャップ上のどこかにテキストの位置を定義します。
    • inPaletteをインデックス 0 で赤、1 で緑に設定します。
    • inSize24に設定します。
  14. CreateBoxフィルタを追加します。
    • マクロフィルタの入力inDefectLocationsinLocationに接続します。
    • inLocationAnchorMiddleCenterに設定します。
    • inWidth40に設定します。
    • inHeight40に設定します。
  15. DrawRectangles_SingleColorフィルタを追加します。

マクロフィルタ メイン

マクロフィルタ DrawResults

使用したフィルタ

アイコン 名前 説明
ChooseByPredicate E.g. to choose GREEN color to visualize correct objects or RED to visualize defective ones.
CreateBox ボックスを作成します。
ScanSingleEdge 物体 (ボトルの水平方向の変位など) と簡単な測定 (ボトル内の液面など) を非常に高速に検出します。
DrawStrings_MultiColor 画像上に複数の色で文字列(テキスト)を描画します。
CreateCoordinateSystemFromPoint 1D エッジ検出またはブロブ分析の結果からオブジェクトの位置合わせを定義するために最もよく使用されます。
DrawRectangles_SingleColor 画像上に単色で四角形を描画します。

その他の資料

  • 1D Edge Detection - エッジ検出フィルターがどのように機能するかを説明しています。
  • Local Coordinate Systems - 座標系の使用に関する基本的な概念について説明しています。