Calibration World Coordinates With Remapped Images
目的
この目的は、キャリブレーショングリッドの与えられた画像を基に世界座標を計算することです。
Input
キャリブレーショングリッドの数枚の画像。
Output
位置が特定されたキャリブレーショングリッドとボード上の最初の2つの円の中心点。
ヒント
まず、レンズおよび透視の歪みがあるため、RectifyImage フィルタを使用してこれらを取り除く必要があります。次に、円のボードを正確に位置させるには、LocateSingleObject_Edges1 を使用するのが最適です。最後に、円の中心点を見つけるには、それに対応する形状をフィットさせて適切なプロパティの出力を使用します。
Solution (AVS)
EnumerateImages フィルタを追加し、inDirectory に画像のディレクトリを指定します。
RectifyImage フィルタを追加します。 outImage を inImage に接続します。 フィルタをクリックし、プロパティウィンドウで inRectificationMap 入力をクリックします。
キャリブレーションエディタでは、オリジナル画像上のキャリブレーションワールド座標の例でステップ8-14に記載されている手順を正確に実行する必要があります。 ただし、追加のステップがあります:
レクティフィケーション変換を準備した場合、アルゴリズムを続行できます。 LocateSingleObject_Edges1 フィルタを追加し、フィルタのプロパティウィンドウで inEdgeModel 入力をクリックして新しいエッジモデルを作成します。 以下の方法でモデルを作成します:
計算を加速するために検索領域を狭めることもできます。 フィルタのプロパティウィンドウで inSearchRegion 入力をクリックして、適切な領域を指定します。 テンプレートのマッチングの精度を向上させるために、さらに以下を設定します:
- inMaxPyramidLevel を 2 に設定します。
- inMinScore を 0.6 に設定します。
FitCircleToEdges フィルタを2つ追加します。 outImage を inImage に接続し、outObject.Alignment を inFittingFieldAlignment に接続します(両方のフィルタについて同時に行います)。
両方のフィルタについて、inFittingField を設定して、円が正しくフィットするようにします。円は黒なので、inEdgeScanParams.EdgeTransition を DarkToBright に設定します。 outCircle 出力を右クリックし、プロパティ出力を選択して Center を選択します。
PointToPointDistance フィルタを追加し、両方の FitCircleToEdges フィルタから outCircle.Center をそれぞれ inPoint1 および inPoint2 に接続します。このフィルタを使用して、円の中心間のピクセル距離を計算します。
ワールド座標を計算するために、2つの ImagePointsToWorldPlane フィルタを使用し、FitCircleToEdges フィルタからのCenter Pointsを inImagePoints に接続します。最後に、outRectifiedTransform を両方のフィルタの inTransform に接続します。
マクロフィルタ メイン
使用したフィルタ
アイコン | 名前 | 説明 |
---|---|---|
RectifyImage | 歪んだ画像に空間マップを適用し、それを世界座標で定義された整列画像に変換します。 | |
ImagePointsToWorldPlane | 画像の点の世界座標を見つけます。 | |
LocateSingleObject_Edges1 | 輪郭がシャープで硬い物体の検出。 多くの場合、プログラムの最初のフィルターの 1 つです。 | |
PointToPointDistance | 2つの点の間の距離を測定します。 | |
EnumerateImages | ディスクに保存された画像を使用して画像取得をエミュレートします。 | |
FitCircleToEdges | 既知の粗い位置に基づいて円形のオブジェクトまたは穴を正確に検出します。 |
その他の資料
- Camera Calibration and World Coordinates - カメラキャリブレーションと世界座標に関する詳細な情報。