問題タブ [projective-geometry]

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.

0 投票する
3 に答える
16338 参照

opencv - 基本行列、本質行列、ホモグラフィ行列の違いは何ですか?

異なる位置から撮影した 2 つの画像があります。2 番目のカメラは、1 番目のカメラに対して右、上、後方に配置されています。

したがって、カメラの深度が比較的異なるため、アフィン変換だけでなく、2 つのビューの間に透視変換があると思います。私は正しいですか?

2 つの画像の間にいくつかの対応する点があります。これらの対応点を使用して、1 番目の画像から 2 番目の画像への各ピクセルの変換を決定することを考えています。

関数findFundamentalMatfindHomographyに混乱しています。どちらも 3x3 行列を返します。2つの違いは何ですか?

それらを使用するために必要な条件/前提条件はありますか (いつ使用するか)?

ポイントを 1 番目の画像から 2 番目の画像に変換するために使用するものはどれですか? 関数が返す 3x3 行列には、2 つの画像フレーム間の回転と移動が含まれていますか?

ウィキペディアから、基本行列は対応する画像点間の関係であると読みました。SO answer hereでは、対応する点を取得するには必須行列 E が必要であると言われています。しかし、E を計算するための内部カメラ マトリックスがありません。2 つの画像しかありません。

対応点を求めるにはどうすればよいですか?

0 投票する
0 に答える
133 参照

algorithm - 球にマッピングされた個々のビューから任意のビューを補間するアルゴリズム

ポイントクラウドデータを表示するグラフィックエンジンを作成しようとしています(今のところ一人称で)。私の考えは、私たちが見ている空間のさまざまなポイントから個々のビューを事前に計算し、それらを球にマッピングすることです。そのデータを補間して、空間上の任意のポイントからのビューを決定することは可能ですか?

私の英語と下手な説明で申し訳ありませんが、別の説明方法がわかりません。私の質問が理解できない場合は、必要に応じて喜んで再構成します。

編集:

例を挙げて説明しようと思います

画像 1: 最初の視点

画像 2:第二の視点

これらの画像では、カボチャの 2 つの異なるビューを見ることができます (両方のケースで 360 ビューの球体マップがあると想像してください)。最初のケースでは、カボチャの遠景があり、その周囲を見ることができ、キャラクターのすぐ後ろに胸があると想像できます (後ろを見ると、胸の詳細が表示されます)。

したがって、最初のビュー: カボチャの周囲と詳細度の低い画像、および胸部の詳細な画像ですが、周囲はありません。

2 番目のビューでは、正反対のビューが表示されます。カボチャの詳細ビューと胸部の非詳細な全体ビュー (まだ背後にあります)。

アイデアは、両方のビューからのデータを組み合わせて、それらの間のすべてのビューを計算することです。したがって、パンプキンに向かうということは、最初の画像のポイントを伸ばして、2 番目の画像でギャップを埋めることを意味します (他のすべての要素は忘れて、カボチャだけを忘れてください)。同時に、胸部の画像を合成し、2 番目の画像の一般的なビューからのデータで周囲を埋めます。

私が望むのは、ピクセルのストレッチ、コンプリミング、およびコミネーションを指示するアルゴリズムを持つことです(前方と後方だけでなく、2つ以上の球マップを使用して斜めにも)。恐ろしく複雑なことは承知していますが、今回は自分自身を十分に表現できたことを願っています。

編集:

(私はビューという言葉をよく使っていますが、それが問題の一部だと思います。「ビュー」の意味の定義は次のとおりです。「各点が画面上のピクセルに対応する、色付きの点のマトリックス。画面には、毎回マトリックスの一部のみが表示されます (マトリックスは 360 球体であり、その球体の一部が表示されます) ビューは、カメラの位置を動かさずにカメラを回転させることで見ることができるすべての可能な点のマトリックスです。 " )

さて、あなた方はまだその周りの概念を理解していないようです. アイデアは、リアルタイムで表示する前に最大量のデータを「プレクック」することにより、可能な限り詳細な環境を表示できるようにすることです。今のところ、データの前処理と圧縮について説明しますが、それについては質問していません。最も「事前準備された」モデルは、表示されたスペースの各ポイントで 360 ビューを保存することです (たとえば、キャラクターが 1 フレームあたり 50 ポイントで移動している場合、50 ポイントごとにビューを保存する場合、ライティングとシェーディング、および表示されないポイントをフィルタリングして、それらが無駄に処理されないようにします)。基本的に、可能なすべてのスクリーンショットを計算します (完全に静的な環境で)。もちろん、それはばかげているだけですが、

別の方法は、頻度を減らして、一部の戦略的ビューのみを保存することです。可能なすべてのポイントを保存すると、ほとんどのポイントが各フレームで繰り返されます。画面上の点の位置の変化も数学的に規則的です。私が求めているのは、いくつかの戦略的視点に基づいてビュー上の各ポイントの位置を決定するアルゴリズムです。さまざまなポジションの戦略的ビューからのデータを使用および組み合わせて、任意の場所でのビューを計算する方法。

0 投票する
1 に答える
128 参照

android - フルマップのピクセルサイズを取得するには?

私は世界の部分的な地図を持っています (アメリカやアフリカなど)。部分/トリミングされたマップのピクセルサイズのサイズに基づいて、世界地図のピクセルサイズを知る必要があります。

部分マップのピクセル単位のサイズ ( など480x256) とminLongitude,maxlongitude,minlatitude,maxlatitude(別名、左、右、上、下の端) があります。

線形であるため、経度が簡単であることはわかっています。

FULL_CIRCLE_DEG = 360

longitudeDelta = (maxLongitude-minLongitude)/FULL_CIRCLE_DEG

MapFullSize = mapCroppedWidth/longitudeDelta

しかし、緯度については、少し異なります。

FULL_LATITUDE_DEG = MAX_LAT_ON_EARTH - MIN_LAT_ON_EARTH(85.7543...-(-85.7543...) のように)

latitudeDelta = (maxLatitude-minLatitude)/FULL_LATITUDE_DEG

MapFullHeight = ????

誰かが私を助けることができますか?

GPScoordinateToPixel 変換を取得するためのアルゴリズムはたくさんありますが、平方計算には何もありません。

ありがとうございました。

0 投票する
1 に答える
307 参照

image-processing - ホモグラフィから極端な歪みを切り取る

任意のカメラ アングルから撮影したチェッカーボードの写真があります。チェッカーボード グリッドを形成する 2 組の線に対応する 2 つの消失点を見つけます。これら 2 つの消失点から、チェッカーボード平面から画像平面へのホモグラフィを計算します。

次に、逆ホモグラフィを適用して、チェッカーボードを上面から再レンダリングします。ただし、特定の画像では、再レンダリングされたトップ ビューが非常に大きくなります。つまり、カメラの角度により、逆ホモグラフィは画像の特定の部分 (つまり、消失点の 1 つに非常に近い画像の領域) を非常に大きく引き伸ばします。

これは不必要に大量のメモリを占有し、高度に拡張される領域のほとんどは私が必要としないものです。そのため、逆ホモグラフィを適用するときは、画像の非常に引き伸ばされる領域のレンダリングを避けたいと考えています。これを行う良い方法は何ですか?

(私はMATLABでコーディングしています)

0 投票する
1 に答える
640 参照

matrix - ファンダメンタル行列計算の参照データのソースをお勧めできますか

具体的には、理想的には、点対応と「ゴールド スタンダード」で計算された F 値と左右のエピポールを含む画像が必要です。エッセンシャル マトリックスと、内的および外的カメラ プロパティも操作できます。

2 つの射影行列から F を構築し、3D の実際の点から左右の射影点座標を生成し、ガウス ノイズを適用できることはわかっていますが、有効性をテストしようとしているので、他の人の参照データを使用したいと思っています。私のコードの最初のバッチ (おそらく悪い) コードをテストするためにさらにコードを書くことは賢明ではないようです。

助けてくれてありがとう

よろしくデイブ

0 投票する
2 に答える
16971 参照

opencv - 3D カメラ座標からワールド座標へ (基準の変更?)

カメラに対するオブジェクトの座標 X、Y、Z と向き Rx、Ry、Rz があるとします。さらに、世界でのこのカメラの座標 U、V、W と方向 Ru、Rv、Rw を持っています。

オブジェクトの位置 (位置と回転) をワールド内の位置に変換するにはどうすればよいですか?

私には根拠の変更のように聞こえますが、明確な情報源はまだ見つかりません。

0 投票する
1 に答える
1128 参照

opencv - 透視変換係数から回転角度 (ピッチ、ヨー、ロール) を見つけるにはどうすればよいですか?

2 つの 2D クワッド (それぞれ 4 つの xy ペアを使用して表される) があり、そのうちの 1 つはもう 1 つの透視変換です。これらのクワッドを使用して、遠近法の歪みの原因となった回転 (ピッチ、ヨー、ロール) を推定するにはどうすればよいですか?

透視変換係数を 3x3 行列の形式で返す cvGetPerspectiveTransform() を使用したことに注意してください。このような係数を使用して、ある空間から別の空間にポイントをマッピングできます。ただ、気になるのは回転角度です。

何か案は?

ありがとう、ハッサン。

0 投票する
1 に答える
1374 参照

webgl - 射影変換を計算して任意のクワッドをテクスチャリングする

webgl で任意のクワッドをテクスチャリングするための射影変換を計算したいと思います (可能/必要に応じて three.js とシェーダーを使用)。

四角補間

これは、この回答から取得したいものです。

すべてが投稿でよく説明されているので、少し作業すれば問題を解決できると思います。ソリューションの疑似コードは次のとおりです。

しかし、webgl でそれを行うためのより簡単な方法があるかどうか疑問に思っています。

---- 関連トピックへのリンク ----

hereで数学的に説明されている問題を解決する同様の方法がありますが、多対多のポイントマッピングを計算するソリューションであるため、私にはやり過ぎのように思えます。

これは OpenGL のソリューションだと思っていましたが、幸いなことにデフォルトで有効になっている単純なパースペクティブの正しい補間を実行するソリューションであることに気付きました。

私が解決したいより一般的な問題の単純なバージョンである台形について多くのことを見つけました: 12、および3。最初はそれらが役立つと思っていましたが、代わりに多くの読書と誤解を招きました.

最後に、このページではこの問題を解決するための解決策について説明しますが、これが最も単純で最も一般的な解決策であることに懐疑的でした。今、私はそれが正しいかもしれないと思います!

- - 結論 - -

それが特に複雑な問題だからではなく、単純で典型的/一般的な解決策を探していたからです。多くの場合 (すべてのビデオ マッピング アプリで) 簡単に解決できる問題であり、些細な答えがあると思います。

0 投票する
1 に答える
305 参照

opencv - カメラの動きを画像に「変換」する方法は?

OpenCV を使用してカメラとビデオの安定化を行っています。

カメラがあるフレームから別のフレームにどれだけ移動したかを正確に (メートル単位で) 知っているとしましょう。

翻訳行列を作成する前に、この数値を計算する必要があると確信していますが、それで少し迷っています...何か助けはありますか?

ありがとう。

編集:わかりました、より良い説明を試みます: ビデオからカメラの動き (揺れ) を取り除きたいのですが、カメラがあるフレームから別のフレームにどれだけ移動したか (および方向) を知っています。だから私がやりたいことは、私が持っているその情報を使用する必要がある 2 番目のフレームを戻すことです。2 つのフレームごとに翻訳行列を作成し、それを 2 番目のフレームに適用する必要があります。しかし、ここで私が疑問に思うのは、私が持っている情報はメートル単位であり、カメラの動きであり、現在は画像とピクセルで作業しているため、翻訳が正しいようにいくつかの操作を行う必要があると思いますが、それらが正確に何であるかはわかりません

0 投票する
3 に答える
1975 参照

matlab - ステレオペアを使用して基本行列を計算する方法は?

基本行列に関する質問を参照して、ステレオ ペア (2 jpeg) があり、F を取得するために Peter Kovesi または Zisserman の関数を適用したい場合、どのように P1 と P2 を取得できますか? これらの2つの行列は2つの画像からの3x4行列ですが、それらがどのように関連しているかはわかりません...グレースケールの最初の画像からランダムな3x4行列を取得し、2番目の画像から対応する3x4行列を取得すると正しいですか相関などのマッチング技術を使用して最初のもの?もしそうなら、3x4 マトリックスは十分に詳細ではないと思いますか?