Bottle Inspection
目的
この例のタスクは、ボトルの数、向き、液体のレベル、泡の有無を確認することです。
Input
ボトルのイメージ。 ボトルの位置は、カメラに対してだけでなく他のボトルに対しても変化する可能性があります。
Output
検査結果が描かれた画像。 欠陥が検出された場合、その周囲に四角形が描画されます。
ヒント
オブジェクトの位置は可変です。 このプログラムの手順の一部は、次のチュートリアルで説明されています。
Bottle Inspector Part 1: Counting Bottles
Bottle Inspector Part 2: Measuring Liquid Level
Bottle Inspector Part 3: Foam Detection
ボトルの向きは、ボトルの上部など、ボトルの非対称な部分を見つけることで判断できます。
Solution (AVS)
-
Workspace Explorerでワークスペース例題を開き、フィルムストリップ ウィンドウで BottleInspectionデータセットを選択します。 ImageチャンネルをACQUIREセクションにドラッグします。
-
ヒントセクションに記載されているチュートリアルに記載されている手順に従います。
-
プログラムが 3 番目のチュートリアルの終わりのものと似てきたら、 AlignRectangleを追加します。
- outBottleAlignmentsの出力をCreateCoordinateSystemFromPointからinAlignment入力に接続します。
- プログラムを 1 回繰り返します。エディタに入り(inRectangleの横にある"..." をクリック)、ボトルキャップと同じくらいの大きさの長方形を描画します。
- outAlignedRectangle をview2DBox_PassFailインジケータのinDataのひとつにドラッグします。
- Coordinate SystemフィールドがinAlignmentに設定されていることを確認し、長方形をキャップ上に移動します。
- プログラムを 1 回実行し、inRectangle横にある [...] アイコンをクリックします。エディタでキャップのほぼ中央に小さな四角形 (約 15x15 ピクセルで十分です) を描画します。
- 必ず座標系と同じボトルに長方形を配置してください。
- 結果は以下の画像のようになります。 座標系のシンボルが長方形の下にあることに注目してください。
- LocateSingleObject_Edges1を追加し、inSearchRegionをoutAlignedRectangle に接続します。
-
エッジモデルエディタを開きます。 提供された画像に示されている領域にマークを付けます。 画像の設定も使用してください。
- エディタを閉じたら、フィルタプロパティを変更します。inEdgeThresholdを 8に、inMinScore に 0.5に設定してください。
- The inEdgeThresholdパラメータは、エッジとみなされるピクセル間の遷移の強さを決定します。
The inMinScoreパラメータは、有効なオブジェクトの出現の最小スコアを決定します。
この場合、キャップの方向を見つけることだけに興味があるため、最小スコアは比較的低くなければなりません。 - By clicking on Show/Hide Portsをクリックすると、追加の出力と入力を表示できます。 次の図に示すようにオプションをオンにして、フィルタに別のoutObject.isNil.Not出力が含まれるようにします。
- 新しく作成した出力を view2DBox_PassFail HMI インジケーターの inStatus ポートに接続します。 このポートは、以前に使用したinData ポート (ステップ 2) に対応する必要があります。
- オブジェクトが検出された場合(向きが正しい場合)、作成された出力はTrueとなり、前のステップの四角形は緑色になります。 オブジェクトが検出されなかった場合(向きが間違っていた場合、長方形は赤になります。
-
エッジモデルエディタを開きます。 提供された画像に示されている領域にマークを付けます。 画像の設定も使用してください。
- プログラムをもう少し整理するには、フィルターをステップ マクロフィルターに抽出します。
マクロフィルタ メイン
使用したフィルタ
アイコン | 名前 | 説明 |
---|---|---|
ScanSingleEdge | 物体 (ボトルの水平方向の変位など) と簡単な測定 (ボトル内の液面など) を非常に高速に検出します。 | |
AlignRectangle | ローカル座標系で定義された四角形があるが、プログラム内の次の画像関連フィルターに inAlignment 入力がない場合に必要です。 | |
LocateSingleObject_Edges1 | 輪郭がシャープで硬い物体の検出。 多くの場合、プログラムの最初のフィルターの 1 つです。 | |
CheckPresence_Intensity | 迅速かつ簡単な存在確認。(例: キャップ、ネジ、ラベルの紛失) | |
CreateCoordinateSystemFromPoint | 1D エッジ検出またはブロブ分析の結果からオブジェクトの位置合わせを定義するために最もよく使用されます。 | |
ScanMultipleStripes | 対向するエッジの複数のペアを非常に高速に検出します - 通常はカウントまたは幅の測定に使用されます。 | |
CreateRectangle | 位置合わせされた点から長方形を作成します。 |
その他の資料
- 1D Edge Detection - エッジ検出フィルターがどのように機能するかを説明しています。
- Local Coordinate Systems - 座標系の使用に関する基本的な概念について説明しています。
- Template Matching - テンプレート マッチング テクニックの最も詳細な説明をしています。