Calibration World Coordinates On Original Images
目的
目的は、各円の中心点間の距離を測定することです。
Input
円のキャリブレーショングリッドのいくつかの画像。
Output
キャリブレーショングリッド上の黒い円の検出された中心点とそれらの間の距離。
ヒント
黒い円は明確に見分けがつくため、それらを見つけて中心点を見つけ、ImagePointsToWorldPlaneを使用して整列するのが良いアイデアです。
Solution (AVS)
EnumerateImagesフィルターを追加し、inDirectoryに画像のディレクトリを指定します。
新しいステップマクロフィルターを作成し、そこで中心点を見つけるアルゴリズムを作成します。これをFindCircleCenterと名前付けます。 outImageをその入力に接続します。
マクロフィルターの内部に、ExtractBlobs_Intensityを追加します。以下の変更を行います:
- inThresholdParams.Thresholdを50に設定して、背景から暗いピクセルを分離します。
- inSplittingParams.MinAreaを1000に設定して、面積が小さいブロブを除去します。
ClassifyRegionsフィルターを追加します。 outBlobsを inRegionsに接続します。以下を設定します:
SortRegionsフィルターを追加します。 outAcceptedを inRegionsに接続します。 inFeatureを MassCenterYに設定します。
RegionMassCenterフィルターを追加し、 outSortedRegionsを inRegionに接続します。 outMassCenterをマクロフィルターの入力として outCenterに接続します。マクロフィルターを終了します。
Mainに戻り、ImagePointsToWorldPlaneフィルターを追加します。 outCenterを inImagePointsに接続します。
プロパティウィンドウの左下にあるinTransform入力をクリックして、キャリブレーションエディターを開きます。オレンジで囲まれたボタンをクリックして、キャリブレーショングリッドの画像をロードします:
ボードパラメーターを決定します:
- 適切なキャリブレーショングリッドを選択します,
- 寸法を指定します - キャリブレーショングリッドの幅と高さ,
- 準備ができたら、Locateをクリックします。
もしキャリブレーショングリッドの点が正しく配置されている場合、必要に応じてカメラパラメーターを調整することもできます。最終的にはCompute Camera Calibration Modelをクリックします:
もしカメラキャリブレーションモデルが正常に計算された場合、Nextボタンをクリックします。このステップではImage to World Transformが計算されます。エディターに少なくとも1つの画像を追加します:
これで、手動でポイントを入力するか、またはキャリブレーショングリッドを使用して自動的に行うことができます。この例では、他のオプションが示されています。準備ができたら、Locate...をクリックします:
Originポイントを(0.00, 0.00)に設定し、X-axis pointを(200.00, 0.00)に設定して、原点セグメントを変更します。何も問題がなければ、Compute World Transformをクリックします。
計算が成功したら、Results & Statisticsタブが表示されます。 OKをクリックしてエディターを終了します:
次に、PointSequenceDistancesフィルターを追加し、outWorldPointsを inPointsに接続します。このフィルターは、連続する円の中心点間の距離を測定します。もう一つPointSequenceDistancesフィルターを追加し、outCenterを inPointsに接続すると、接続セグメントが表示されますが、実際の距離を反映しません。これは視覚化の目的でのみ表示されます。
マクロフィルタ メイン
マクロフィルタ FindCircleCenter
使用したフィルタ
アイコン | 名前 | 説明 |
---|---|---|
ClassifyRegions | このフィルターは、領域の配列があり、その中からさらに処理する領域を選択したい場合に使用します。 | |
PointSequenceDistances | 点の系列の連続する点間の距離を測定します。 | |
RegionMassCenter | 領域のピクセルの平均座標に等しい座標を持つ点を計算します。 | |
ImagePointsToWorldPlane | 画像の点の世界座標を見つけます。 | |
ExtractBlobs_Intensity | 単一の値を使用して閾値処理を行い、画像をブロブにセグメント化します。 | |
SortRegions | 入力配列内の領域の順序を、計算された特徴値の昇順/降順に従って変更します。 | |
EnumerateImages | ディスクに保存された画像を使用して画像取得をエミュレートします。 |
その他の資料
- Camera Calibration and World Coordinates - Detailed information about camera calibration and world coordinates.