多くの場合、カメラにアクセスせずに処理するビデオのストリームがあります。カメラマトリックスにアクセスできることは、さまざまな処理技術にとって有益です。カメラにアクセスせずにカメラのキャリブレーションをハックすることは可能ですか?
私は、道路を記録している移動中の車に取り付けられた1台のカメラからのビデオストリームを持っています(したがって、地面に複数の平行線、レーンマーカーの角はありますが、円はありません)。これを真上から見下ろしたいのですが、カメラにアクセスできません。出来ますか?もしそうなら?
私は、OpenCVの学習:OpenCVライブラリのあるコンピュータビジョンブックから、次のマトリックスが必要であることを理解しています。
- 組み込み関数、および
- ねじれ
.. cv2.undistort()
画像にホモグラフィcv2.getPerspectiveTransform()
を計算しcv2.warpPerspective()
、最終的にトップビューを取得します。
質問
- 組み込み関数または歪み行列/パラメーターを計算/近似/推測するにはどうすればよいですか?すべてのパラメーターは重要ですか?
- 他のカメラ(OpenCVソースコードサンプルなど)からパラメーターをコピーしても問題ありませんか?
事前調査:
- OpenCV Pythonカメラキャリブレーションチュートリアル -カメラへのアクセスが必要
- カメラのAutoCalibration-「平行線または形状が既知(例:円形)のオブジェクトの複数のセットが識別された場合、キャリブレーションが取得される可能性があります」
- カメラのキャリブレーションに関連する回答を理解しようとしています[ 1 ] [ 2 ] [ 3 ]私の問題に対する回答を見つけようとしています。
何か案は?事前にあなたの助けを感謝します!
更新1:透視変換実験
入力画像の4点を使用getPerspectiveTransform(pts1,pts2)
しdst = cv2.warpPerspective(img,M,(x,y), flags=flags)
て照合し、一種のトップダウンビューを取得しようとしました。しかし、歪みを処理する方法がわかりません:
ポイントの選択:最初に、入力を拡大し、レーンマーカー上の一致する外部ポイントを正確に選択してホモグラフィマトリックスを作成し、で透視変換画像をプレビューしましたwarpPerspective
。車線が歪んでいるのを見ましたが、どれほどひどいのかわかりませんでした。アイデアを得るために、両端のデルタ(50px)フラットでさらにポイントを選択しました。これは私が得るものです:
カメラにアクセスしなくても歪みを修正できますか?これを修正する他の方法はありますか?
使用する入力画像が少ない:
更新2:トップダウンビューでの非平行(散乱)オプティカルフロー
これは、歪みやその他の原因によるものですか?: