画像内の平面に投影された座標系を定義したいと考えています。これを実装する方法についてのヒントとアイデアが必要なだけで、必ずしもコードではありませんが、すべてが高く評価されています! コードが提供されている場合は、OpenCV で Python を言語として使用することをお勧めします。
例: テーブルをある角度から見た画像があります。テーブルトップに配置されたチェッカーボード パターンを使用して、N 個のキャリブレーション画像を撮影しました。フラットなスヌーカー テーブルをイメージできます。内因性/外因性キャリブレーション行列、ホモグラフィ行列を計算しました。卓上の表面に画像を投影できます-すべて問題ありません。ただし、テーブルの上に座標系を作成したいと考えています。テーブルトップの寸法が 1 メートル x 2 メートルであることがわかっている場合、次のように言える関数が必要です: ポイントに対応する画像の 2 次元ピクセル座標を教えてください (x=0.75 メートル、y=1.65 メートル) ) 卓上表面。原点はテーブルトップの左上から始めたいのですが、それは単なる翻訳の問題です。この座標系と対応する関数を「使用」するにはどうすればよいですか?
私は 2 つの潜在的なアプローチを考え出しましたが、どちらも非常に効果がないように思われ、より効果的で堅牢な方法が存在するに違いないと確信しています。
1:キャリブレーション プロセスから、卓上に配置されたキャリブレーション パターンの N 個の異なる画像があります。これにより、キャリブレーション パターンごとに 1 つずつ、N 個のローカル座標系が得られます。各キャリブレーション パターンはテーブルの上に置かれているため、x 軸と y 軸は常に同じ平面にあります。これを使ってOpenCVガイド テーブルトップの平面に沿った軸を描くことができます.各ポイントはチェッカーボードの正方形のサイズに一致するため、メートルからピクセルへのメトリック変換が機能します. 大きな問題は、チェッカーボードのエッジがテーブルのエッジと平行でない場合、座標系がずれてしまうことです。もう 1 つの問題は、N 個の小さな座標系を使用することで、任意の座標系を選択し、対応する変換をテーブルの左上の位置に手動で見つけて、origo を中心に回転させて軸を再調整する必要があることです。これにより、ソリューションが非常に手動になり、動的にすることが難しくなります。最終的には、手動で識別された 4 つのテーブル エッジをピクセル値で定義し、ホモグラフィ マトリックス、回転マトリックス、平行移動マトリックスなど、必要な派生値を定義するだけでよいでしょう。
2:座標グリッドの画像を生成し、この画像グリッドをテーブル上の画像に投影できます。テクニックはこれに似たものになります。次に、元の卓上画像を拡張して、正しく変換されたグリッドを含めます (つまり、カメラに近いグリッド座標の正方形は、遠くにあるグリッド座標の正方形よりも大きくなります)。ただし、これにより、描画されたグリッドから座標を抽出することはできません。画像の代わりにグリッドを投影できれば、それは非常に簡単な解決策になります。OpenCVのドキュメントを見る限り、これは不可能です。