Blister Inspection (NET GmbH)

目的

タスクは、ブリスター内の欠損および破損した錠剤を検出することです。

入力

ブリスターの画像。オブジェクトの位置は可変ですが、限られています。

出力

検出された欠損および破損した錠剤:

ヒント

オブジェクト位置の変動が限られているため、非常に標準的で高速な図形フィッティングアプローチで正確に位置を特定できます。2つのFitSegmentToEdgesフィルターを使用して、上部と左側のエッジを特定できます。見つかった矩形は、さらなる検査のための基準として使用できます。

この場合、CheckPresence_PixelAmountのようなカラー分析の高度なツールを使用して、錠剤を簡単に検出できます。

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

Solution (AVS)

  1. フォーキングポート inSource (型 String) を持つ GrabImage マクロフィルタを作成します。

  2. Files および Camera という2つのバリアントを追加し、Image タイプの出力を作成します。

  3. Files バリアントには、EnumerateImages を追加してディレクトリから画像を取得します。フィルターの出力を GrabImage マクロフィルターの出力に接続します。

  4. Camera バリアントには、カメラから画像を取得するためにGigEVision_GrabImage フィルターを追加します。カメラがGigE Vision標準をサポートしていない場合は、他のフィルターを使用します。フィルターの出力を GrabImage マクロフィルターの出力に接続します。

  5. ブリスターを見つけるためには、水平および垂直のエッジを Shape Fitting テクニックで見つける必要があります。以下の画像のように、2つの FitSegmentToEdges フィルターを追加し、スキャンパスを設定します。 inEdgeScanParams.EdgeTransitionDarkToBright に設定します。

  6. ブリスターの左上の点を見つけるために、セグメントをラインに変換する必要があります。上記で見つけたセグメントから作成されたラインの交点がブリスターの左上の点です。 LineLineIntersection を追加し、見つかったセグメントに接続します。

  7. 参照 CoordinateSystem2D を作成するために、CreateCoordinateSystemFromPoint を追加し、その inPoint を以前に作成した LineLineIntersection の出力に接続し、その inAngle を上部の見つかったセグメントの outSegment.Direction に接続します。

  8. outCoordinateSystemCoordinateSystem としてラベル付けします。

  9. 参照システムが見つかった場合、錠剤が存在する場所を設定します。 Circle2DArray タイプの新しいグローバルパラメータ Circles を作成します。

  10. Circles の値を以下の画像のように設定します。これらの円は、マークされた錠剤が損傷しているかどうかを判断するために使用されます。

    CoordinateSystem の出力を Circle EditorCoordinate system として設定することを忘れないでください。

  11. 色の分析を改善するために、入力画像をぼかす必要があります。ぼかすことで、画像の色がより均一になります。フィルター SmoothImage_Gauss を追加し、inStdDevX3.0 に設定します。

  12. 錠剤の存在をチェックするために、フィルター CheckPresence_PixelAmount を使用します。

    選択された色は outForeground の出力で見つけることができます。結果は以下の画像に示されています。

  13. CheckPresence_PixelAmount.inRoiCircles を接続し、CheckPresence_PixelAmount.inRoiAlignment に、以前に作成した CoordinateSystem を接続します。

  14. フィルター DrawShapeRegions_MultiColor を使用して結果を描画します。 outIsPresent および outAlignedRoi のデータを使用します。

マクロフィルタ メイン

マクロフィルター GrabImage (Files) はディレクトリから画像を読み込みます。

マクロフィルター GrabImage (Camera) はGigEVisionインタフェースを使用してカメラから画像を取得します。

使用したフィルタ

アイコン 名前 説明
SmoothImage_Gauss 画像からのガウシアンノイズの除去。
LineLineIntersection 2つの直線の共通点を計算します。
GigEVision_GrabImage GigE Vision デバイスとの作業に最も推奨されるフィルターです。
CheckPresence_PixelAmount ピクセルの数を基に存在を確認します。(例: キャップ、ネジ、ラベルの有無)
CreateCoordinateSystemFromPoint 1次元エッジ検出またはブロブ分析の結果から、オブジェクトの位置を定義するために使用されることが多いです。
FitSegmentToEdges 事前に大まかな位置がわかっている直線エッジを正確に検出します。
DrawShapeRegions_MultiColor 複数の色で画像上に形状領域を描画します。
EnumerateImages ディスクに保存された画像を使用して画像の列挙を行います。

その他の資料

  • Local Coordinate Systems - 座標系の使用に関する基本的な概念について説明しています。
  • Shape Fitting - シェイプ フィッティング テクニックの使用法を紹介します。
  • Shape Fitting Filter Group - Shape Fittingを行うために使用されるすべてのフィルターのリスト