問題タブ [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.
algorithm - 8 ポイント アルゴリズムからのエッセンシャル マトリックス
R.Hartley、A.Zisserman の第 11 章の「<em>Multiple View Geometry in Computer Vision」では、計算の基礎マトリックスについて次のように読むことができます。
„<strong> 11.7.3 校正済みケース
キャリブレーションされたカメラの場合、正規化された画像座標が使用される場合があり、基本行列の代わりに基本行列 E が計算されます」</p>
つまり、適切な Intrinsic Cameras マトリックスがある場合 (この場合、キャリブレーションされていることを意味しますか?)、Fundamental Matrix の計算を省略して、 Essential Matrixを直接 (8 ポイント アルゴリズムを使用して) 計算できますか?
また、計算されたエッセンシャル マトリックスからマトリックスRとTを再構築 3D モデルに取得できますか?
よろしく、
アートク
3d - 正距円筒図法によるパノラマ画像の適切な直線投影のヘルプが必要
以下のアルゴリズムでは、投影面が赤道 (正距円筒図法の中心線) に接している場合、投影された画像は直線的に見えます。
しかし、投影面が傾いていると (py0 != panorama.height/2)、線が歪んでしまいます。
以下のアルゴリズムの最後の 2 つの「線」は、宛先平面の中心線が正距円筒イメージの中心線と同じレベルにない場合に px および/または py を調整するために、「修正」する必要があります。
各デスティネーション ピクセルの法線と球の間の交点 p を計算し、利用可能な C コードを使用してデカルト座標を経度/緯度に変換できます。
しかし、投影面の中心が「球」と交差する経度/緯度 (px0,py0) を知っている正距円筒図法画像 (px,py) のソース ピクセル座標を調整することを含む、より簡単で時間がかからない方法があることを私は知っています。
助けていただけますか?
geometry - キューブベースの 3 次元ゲームの作成
まったく同じサイズの立方体に完全に基づく 3 次元ゲームを作成しようとしています。2 次元のゲーム ライブラリのみを使用して、独自の 3 次元ゲームを作成する方法を学びたかったのです。現在、私がやっている方法は、ゲーム内の各キューブのすべての中心の位置を格納する配列を持っていることです。次に、1 つの立方体を描くときに、立方体のどの 3 面を描く必要があるかを判断します (立方体の 3 面すべてを描く必要はないため)。次に、立方体のすべての角の 3 次元の点を知っているので、カメラの位置、カメラの角度、および投影している点を使用して、それらの点を 2 次元空間に投影します。
ここで私の本当の質問は次のとおりです。単一のキューブを描画できるようになったので、キューブを特定の順序で描画する必要があることを考慮して、複数のキューブを描画するにはどうすればよいですか (つまり、遠くにあるキューブを最初に描画して、キューブが私たちに近い立方体は、私たちから遠く離れた立方体の上に表示されます)?立方体の中心とそのサイズのリスト、およびカメラの位置/角度を考慮して、最初に描画する立方体を決定するにはどうすればよいですか?
computer-vision - エピポールと斧の配置がわかりにくい
この論文を読んでいるときに、この疑問が浮かびました。目標は、2 つのカメラC 1およびC 2の相対的な姿勢を推定することです。
射影平面は単位球と見なされ、グローバル座標系はZ G軸がカメラの中心に結合するように選択されます。C 1とC 2の内部座標系を前述のグローバル システムにそれぞれマッピングする2 つの行列R 1とR 2を見つけることができれば、問題は解決されます(私には、これらの行列は単にZ c_1とグローバルZ G軸を持つカメラのZ c_2軸)。
これらの行列は反復的に計算され、各反復で、すべての点対応(v 1 ,v 2 )が回転によって更新され、(R 1 v 1 ,R 2 v 2 )になります。
これまでのところ、すべてが理にかなっています。しかし後に、著者は、これらの回転がエピポールの方向を変更し (カメラの Z 軸に対して相対的であると仮定します)、「z 軸Z Gがエピポール、つまりZ G=R1e1=R2e2回転された点対応(v1、v2)は、エピポールe1、e2と同一平面上になる。
私にとって、ベースラインであるZ G軸は常にエピポールと整列しており、回転したエピポールReはベースラインから離れているため、もはやエピポールではありません。しかし、上記の引用は、エピポールが整列していない構成があることを意味します...ご覧のとおり、私は完全に混乱しています...著者がそれによって何を意味するかを理解するのを手伝ってください.
homography - 間違ったホモグラフィ変換
最近では、ホモグラフィ変換 (2 次元の点 [x,y]->[wx,wy,x] に追加次元を追加する変換) と射影幾何学を研究しました。
写真 1 の下部を新しい画像の上部に変換しようとすると、結果が間違っています。
私が間違っていると呼んだ理由は、写真 1 の下部が新しい画像の上部に投影されていたのに、写真 1 の上部が新しい画像の下部に投影されているためです。写真 1 の上部は、画像の「外側」にあると予想されます (負の y)。
次に、対応する w が正の変換されたピクセルを削除すると、結果が正しいことがわかりました。結果は写真3のとおりです。
w の符号が異なる結果をもたらす理由を数学的または直感的に説明する方法がわかりません。負の w が機能するか、合理的である場合があると思います。
誰かが私の投稿に感謝したい場合は、ソース コード (matlab) に写真を提供できます。
ありがとうございました!
matlab - 2 台のカメラ間の変換行列を求める
Matlab で 2 つのカメラ (Kinect RGB と IR) 間の射影変換を見つけようとしています。いくつかの回答を読みましたが、すべて OpenCV を使用しています。この時点で、2 つの画像 ( imageRGBPoints
、imageIRPoints
) でチェス盤のポイントを見つけることができます。両方の画像を重ねると、次のようになります。
両方のカメラの視点が異なることは明らかです。検索したところ、次のことがわかりました。
2倍のサイズと小さな回転で最初の画像を取得します。最後に、SURF 機能を使用して Mathworks のこのチュートリアルを試しましたが、行列変換がどこにあるのかわかりません。両方の画像を合わせるにはどうすればよいですか?
delphi - Delphi の GLScene または OpenGL を使用して、テクスチャを 4 ポイント ポリゴン/プレーンに適合させる
Delphi XE2 用の最新の GLScene トランクを使用しており、2D ではなく 3D を使用して画面に GUI 要素を描画する GUI っぽいタイプのプロジェクトに取り組んできました。
動作しますが、明らかな理由により、グラフィックスの配置はピクセル単位で完璧ではありません。
TGLSceneViewer の 1 ピクセルが画面上でほぼ 1 ピクセルになるように、3D ビューをマッピングすることができました。私にはそれで十分です。
ただし、GUI に 3D を使用するという考えはあきらめており、代わりに GLScene を 2D グラフィックス表現専用に使用することに集中します。これは GPU アクセラレーションであるためです。
次に、GUI に Graphics32 を使用した以前のプロジェクトで Projective Transformation を使用したことを思い出しました。
射影変換を使用すると、単純に 3D 空間にポイントをプロットし、それらのポイントの 3D 座標を読み取り、座標を 2D 座標に変換して、それらを TBitmap32 射影変換パラメーターに適用することができました。私のソフトウェアには 3D 機能がありました。
だから、私の質問は:
GLScene または OpenGL でテクスチャを「ストレッチ」して、テクスチャが 4 点間または平面内に収まるようにすることはできますか?
そうすれば、2D グラフィックスに GLScene を使用できますが、3D のように見せるために簡単なトリックを行うことができます。
以下のリンクは、私が探しているものを視覚的に表現したインターネット上の画像を指しています: http://i.stack.imgur.com/hDdqa.png
matlab - キャリブレーションされていないマルチビュー再構成深度推定
MATLAB でキャリブレーションされていない一連の写真から 3D 再構築を試みています。SIFT を使用して、画像間の特徴点と一致を検出します。最初に射影再構成を行い、次に自動キャリブレーションを使用してこれをメトリックに更新したいと考えています。
基本行列、カメラ行列、三角測量を計算して、2 つの画像から 3D ポイントを推定する方法を知っています。ここで、a、b、c の 3 つの画像があるとします。画像 a と b のカメラ行列と 3D ポイントを計算します。次に、画像 c を追加して構造を更新します。画像 c の 2D ポイントと一致する既知の 3D ポイント (a と b から計算) を使用してカメラ行列を推定します。
ただし、b と c の間の 3D ポイントを再構築すると、a と b の既存の 3D ポイントと加算されません。これは、ポイントの正しい深さの推定値がわからないためだと思います (上記の式の sで示されています)。
Sturm と Triggsの因数分解法を使用して、深さを推定し、構造と動きを見つけることができます。ただし、これを行うには、すべてのビューですべてのポイントを表示する必要がありますが、これは私の画像には当てはまりません。すべてのビューで表示されないポイントの深さを推定するにはどうすればよいですか?