問題タブ [homography]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - OpenCVPythonでカメラの世界の位置を計算する
カメラの位置を世界座標で計算したい。これはかなり簡単なはずですが、期待した結果が得られません。このトピックに関するすべてを読んだと思いますが、コードが機能していません。これが私がすることです:
私はある地域を見ているカメラを持っています。
1)その地域の地図を描きました。
2)4つの画像ポイントをマップ上の4つのポイントに一致させることにより、ホモグラフィを計算しました。cv2.getPerspectiveTransform
3)Hホモグラフィは、すべての世界座標をカメラ座標に変換します。これは正しく機能しています
4)カメラマトリックスを計算するために私はこれに従いました:
5)これによると、カメラの位置は次のように計算する必要があります。
私が得ている座標は完全に間違っています。問題はステップ4または5のどこかにあるはずです。私の方法の何が問題になっていますか?
computer-vision - Confusion about methods of pose estimation
I'm trying to do pose estimation (actually [Edit: 3DOF] rotation is all I need) from a planar marker with 4 corners = 4 coplanar points.
Up until today I was under the impression from everything I read that you will always compute a homography (e.g. using DLT) and decompose that matrix using the various methods available (Faugeras, Zhang, the analytic method which is also described in this post here on stackexchange) and refine it using non-linear optimization, if necessary.
First minor question: if this is an analytical method (simply taking two columns from a matrix and creating an orthonormal matrix out of these resulting in the desired rotation matrix), what is there to optimize? I've tried it in Matlab and the result jitters badly so I can clearly see the result is not perfect or even sufficient, but I also don't understand why one would want to use the rather expensive and complex SVDs used by Faugeras and Zhang if this simple method yields results already.
Then there are iterative pose estimation methods like the Ortohogonal Iteration (OI) Algorithm by Lu et al. or the Robust Pose Estimation Algorithm by Schweighofer and Pinz where there's not even a mention of the word 'homography'. All they need is an initial pose estimation which is then optimized (the reference implementation in Matlab done by Schweighofer uses the OI algorithm, for example, which itself uses some method based on SVD).
My problem is: everything I read so far was '4 points? Homography, homography, homography. Decomposition? Well, tricky, in general not unique, several methods.' Now this iterative world opens up and I just cannot connect these two worlds in my head, I don't fully understand their relation. I cannot even articulate properly what my problem is, I just hope someone understands where I am.
I'd be very thankful for a hint or two.
Edit: Is it correct to say: 4 points on a plane and their image are related by a homography, i.e. 8 parameters. Finding the parameters of the marker's pose can be done by calculating and decomposing the homography matrix using Faugeras, Zhang or a direct solution, each with their drawbacks. It can also be done using iterative methods like OI or Schweighofer's algorithm, which at no point calculate the homography matrix, but just use the corresponding points and which require an initial estimation (for which the initial guess from a homography decomposition could be used).
matrix - 台形のポイント位置を長方形の位置に変換します
下の緑の台形内の座標 Pxy を実際の地面の同等の座標に変換する方法を見つけようとしています。
私は部屋の正確な測定値を持っています。つまり、A、B、C、D がその部屋にいる時間を正確に知ることができます。また、A、B、C、および D がその緑色の三角形にどれくらいの長さであるかを知っています (座標に関して)。
私はすでにホモグラフィと行列変換について読んでいますが、それについて頭を悩ませることはできません。私を正しい方向に導いてくれる情報をいただければ幸いです。
ありがとう!
opencv - OpenCVで2D相似変換(線形共形、非反射相似)を推定する方法は?
SIFT記述子を照合し、RANSACによって変換行列を見つけることにより、入力画像内の特定のオブジェクトを検索しようとしています。オブジェクトは、2D空間での相似変換(スケーリング、回転、平行移動)によってのみシーンで変更できるため、3D空間での3x3ホモグラフィ行列ではなく2x2変換行列を推定する必要があります。OpenCVでこれをどのように達成できますか?
c++ - 複数の画像のスティッチング - 3 番目の画像の追加
2 つの画像をつなぎ合わせた後、3 番目の画像をつなぎ合わせようとしていますが、うまくいかないようです。
詳しく説明すると、opencv ドキュメント ( http://docs.opencv.org/doc/tutorials/features2d/feature_homography/feature_homography.html ) に記載されているコードを使用して 2 つの画像をうまくつなぎ合わせ、この画像を取得しました。 http://i.stack.imgur.com/gqQjV.jpg
次に、ROIに関する多くの読み取りと問題の後、画像の黒い部分を削除してこの画像を取得しました。
今、同じコードを使用して 3 番目の画像 ( http://i.stack.imgur.com/nXD86.jpg ) をこれにステッチしようとしていますが、ステッチは機能しません。機能の一致は完全に機能します。
しかし、プログラムを実行した後、(ROI のため) 黒い領域が大きく、3 番目の画像がない同じ画像が得られます。(出力: http://i.stack.imgur.com/WzZA0.jpg )
ステッチされた画像の最後にある小さな黒い帯と関係があると考えたので、WarpPerspective ステートメントはステッチされた領域をマップしません。コード :
warpperspective の結果は、残りの領域ではなく黒い画像になります。
誰かが私が間違っている可能性がある場所とそれを修正する方法を教えてもらえますか? ありがとう
opencv - 画像の 3D 回転 OpenCV
x 軸と y 軸で 2D 画像の 3D 回転を実行する必要があります。OpenCV でホモグラフィック マトリックスを使用する必要があることを読みましたが、一般的な回転角度を実行するためにマトリックスを設定する方法がわかりません。たとえば、x 軸で 30 度、y 軸で 45 度です。
この投稿を読みました: OpenCVを使用して3Dで画像を翻訳および回転します。f のさまざまな値を試しましたが、うまくいきません。
マトリックスのどのパラメーターを変更する必要があり、どのように変更する必要があるか (式) を知りたいです。ありがとうございました!
opencv - 得られたホモグラフィ行列が良いかどうかを確認する方法は?
この質問はすでに尋ねられていますが、まだわかりません。cv::findHomography
点の集合から呼び出してホモグラフィ行列を取得します。該当するかどうかを確認する必要があります。
提案された方法は、インライアの最大再投影誤差を計算し、それをしきい値と比較することです。しかし、そのようなフィルタリングの後、オブジェクトの境界ボックスがほぼ直線またはいくつかの奇妙な非凸四角形に変換され、自己交差などで非常識な変換が行われ続けます。
ホモグラフィ行列自体が適切かどうかを確認するには、どのような制約を使用できますか?
opencv - OpenCV での手ぶれ補正のための画像整流
キャリブレーションされていないカメラから同じシーンを 2 枚撮影しました。写真は少し角度と縮尺(ズーム)を変えて撮っていますが、ブレを一切排除して重ね合わせたいと思います。つまり、ブレが目立たなくなるように変形する必要があるので、モーション補正を行います。
単純な SURF (特徴) 検出器をホモグラフィと共に使用してみましたが、満足のいく結果が得られない場合があります。そのため、動きを補正するためにImage Rectificationを試してみることを考えています。- ユーザーのシェイクなど、わずかな変更で動作しますか? - この 2 つのフレームのブレを拒否することは本当に機能しますか? そして、写真のより大きなバッファ(おそらく10)の場合は?-スケールの不一致(画像のズームが異なる)を修正するかどうかは誰にもわかりますか?- アルゴリズムは実際に何をしますか? 両方の写真を 3 番目の方向に変換しますか?
より良い解決策があれば、私は知ってうれしいです=)
編集
ブラーモーションを補正するのではなく、ディスプレイスメント自体を補正することを目的としています。たとえば、このファイルでは、作成者は Image Rectification によって 2 つのカメラ間の角度差を補正しています。それは実際にどのように機能しますか?それは常に中間の画像の向きを作成しますか、または画像の1つが静止したままになるように指定できますか??
また、これを多くのフレームに適用することはできますか?それとも、入れた 2 つのフレームごとに常に中間の向きを見つけるのでしょうか?
乾杯、
c# - C#で3x3ホモグラフィ行列から回転、平行移動、せん断を取得する方法
3x3 ホモグラフィ マトリックスを計算しましたが、windows8 メディア要素属性のパラメーターとして使用するには、回転、平行移動、せん断、およびスケールを取得する必要があります。
user-interface - Unity の OnGUI での GUI 要素のゆがみ
私は Unity3D を使用しており、アプリケーションのさまざまな GUI コンポーネントをレイアウトするために OnGUI 内で呼び出される関数があります。通常、ラベルとボタンはすべて、私が用意した特定の Rect 内にあり、画面の中央にあります。
そこに問題はありません...しかし、私が望むのは、まったく同じGUI要素を動的にすることができるため、プレハブテクスチャに入れるだけでなく、横にある台形の領域にレンダリングすることです。その GUI は実際には平面上にあり、画面の中心から押しのけられ、わずかに回転していました。関数で描画されたすべての GUI ボタンは、引き続き正常に応答するはずです。
GUI.matrix でいくつかの値を指定して四角形を台形にマッピングできることを望んでいましたが、最初の調査では、GUI 要素が同次座標を使用しているようには見えず、すべてが依然として四角形として表示されることが示されているようです。
理想的にはプロ専用機能へのアクセスを必要とせずに、Unity でこれを行う方法はありますか?