シェイプフィッティング
イントロダクション
シェイプフィッティングは、事前に形状と大まかな位置がわかっているオブジェクトを正確に検出する機械ビジョンの技術です。通常は、測定アプリケーションで線セグメント、円、円弧、および形状の定義に使用されます。
この技術は1Dエッジ検出から派生しているため、その主な利点は類似しており、サブピクセルの精度と高いパフォーマンスが含まれます。
コンセプト
シェイプフィッティングの背後にある主なアイデアは、連続したオブジェクト(円、円弧、セグメントなど)を構成するために、それに属する有限のポイントセットを使用できるというものです。これらのポイントは、適切な1Dエッジ検出フィルターを使用して計算され、それらを単一の上位レベルの結果に組み合わせます。
したがって、単一のシェイプフィッティングフィルターの作業は、次の手順で構成されます:
- スキャンセグメントの準備 – セグメントのシリーズが準備されます。セグメントの数、長さ、および方向は、フィルターのパラメータから計算されます。
- ポイントの抽出 – フィッティングされるオブジェクトに属するはずのポイントは、各スキャンセグメントをスキャンパスとして使用して(内部的にはScanSingleEdgeなどの適切な1Dエッジ検出フィルターを使用して)抽出されます。
- オブジェクトのフィッティング – 最終結果は、ポイントセットにオブジェクトをフィットさせる技術を使用して計算されます。このステップでは、内部的にGeometry 2D Fittingのフィルターが使用されます(たとえば、FitCircleToPointsはFitCircleToEdgesで使用されます)。パスのフィッティングに関しては、Geometry 2D Fittingフィルターは必要ありません。なぜなら、見つかったポイント自体が出力のパスの特徴点として機能するからです。
ツールセット
シェイプフィッティングのためのツールセット全体は、複数のフィルターで構成されています。これらのフィルターは、フィットされるオブジェクト(円、円弧、線セグメント、またはパス)と、スキャンセグメントに沿って抽出される1Dエッジ検出構造(エッジ、リッジ、またはストライプ)によって異なります。これらはすべて、入力画像で明確に識別できます。
パラメータ
1Dエッジ検出フィルターおよびGeometry 2Dフィッティングフィルターの内部使用のため、これらから知られるすべてのパラメータがシェイプフィッティングフィルターのインターフェースにも存在しています。
これらに加えて、シェイプフィッティングの対象に特有のいくつかのパラメータもあります。 inScanCount パラメータは、スキャンセグメントの数を制御します。ただし、全体のフィッティングプロセスを成功と見なすためには、すべてのスキャンが成功する必要はありません。 inMaxIncompleteness パラメータは、失敗してもよいスキャンの割合を決定します。
パスフィッティング関数には、出力パス形状を制御するためのいくつかの追加のパラメータがあります。これらのパラメータは次のとおりです。
- inMaxDeviationDelta – これは、出力パスの連続する点の偏差の最大許容差を定義します。連続する点の偏差の差が大きい場合、その点はまったく見つからないと見なされます。
- inMaxInterpolationLength – いくつかのスキャンが失敗するか、他の制御パラメータに従って見つかった点のいくつかが誤って分類される場合(例:inMaxDeviationDelta)、それらに対応する出力パスの点は、それらの最寄りの周辺の点に依存して補間されます。補間できる連続した点は inMaxInterpolationLength を超えてはならず、補間される必要があるよりも長い系列の点が存在する場合、フィッティングは失敗と見なされます。この動作の例外は、入力パスの両端で見つからなかった点です。これらは結果の一部ではありません。