Inset Distances
目的
課題は、リッジ間の距離を計算するアルゴリズムを考案することです。
Input
以下の図のように、オブジェクトの位置が変化する一連の画像を用意します。
Output
画像内で検出された隆線とそれらの間の計算された距離 (ギャップの幅)
ヒント
リッジの位置が微妙に変化するため、テンプレートマッチングを使用せずにリッジを見つける方法を考えます。画像の他の部分を使用して位置を確認することもできます。 Region Analysisを使用すると、穴の位置を特定し、この情報に基づいてローカル座標系を作成できます。
接続のラベル付けについては こちらを参照ください。
Solution (AVS)
- Workspace Explorerでワークスペースの例題を開き、フィルム ストリップ ウィンドウでInsetDistanceデータセットを選択します。 Imageチャンネルを「ACQUIRE」セクションにドラッグします。
- ThresholdToRegionフィルターを追加します。前のフィルターからのoutImage 出力を現在のフィルターのinImageに接続します。inRoi 入力を次のように設定します。
- SplitRegionIntoBlobsを追加します。前のフィルターのoutRegionを現在のフィルターのinRegionに接続します。 最小の BLOB のみが残るように、inMaxBlobAreaを 1000 に設定します。
- RegionMassCenterを追加します。outBlobsをinRegionに接続します。outMassCenter出力を右クリックし、プロパティ出力を見つけてXを選択します。これはフィルターの新しい出力として表示されます。
- Point2DタイプのGetSortedElementsを追加します。outMassCenterをinArrayに接続し、outMassCenter.XをinValues に接続します。 X 座標に従って BLOB を並べ替えます。
- CreateCoordinateSystemFromSegmentを追加します。inSegment入力を右クリックし、outElement0とoutElement1をそれぞれinSegment.Point1 とinSegment.Point2に接続します。
- ScanExactlyNRidgesを追加後、
- ReadFilmstripのoutImage output出力をinImageに接続
- outCoordinateSystemをinScanPathAlignmentに接続
- 次のスキャンパスを設定:
- inRidgeCountを2に設定
- 利用可能な出力のリストからoutGaps.Widthを選択し、プレビュー ウィンドウにドラッグします。
マクロフィルタ メイン
使用したフィルタ
アイコン | 名前 | 説明 |
---|---|---|
RegionMassCenter | 領域のピクセルの平均座標に等しい座標を持つ点を計算します。 | |
CreateCoordinateSystemFromSegment | 指定されたセグメントを原点とする座標系を作成します。 | |
ThresholdToRegion | 顕著な明るさによって定義できるオブジェクトの領域の抽出。 | |
ScanExactlyNRidges | ワイヤーやスケールマークなどの薄い構造物を非常に高速に検出 (または存在検証) します。 | |
SplitRegionIntoBlobs | オブジェクトが互いに接触していない場合に、領域を個々のオブジェクトにセグメント化します。 | |
GetSortedElements | 値の配列から 8 つの最小/最大値に対応する要素を返します。 |
その他の資料
- 1D Edge Detection - エッジ検出フィルターがどのように機能するかを説明しています。
- Array- Aurora Vision Studio の配列に基づくすべての操作にリンクします。
- Blob Analysis - ブロブ分析手法について詳しく説明します。
- Local Coordinate Systems - 座標系の使用に関する基本的な概念について説明しています。