問題タブ [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.
image-processing - 遠近法で変形した長方形の比率
遠近法によって歪んだ四角形の 2D 画像が与えられた場合:
形がもともと長方形だったことは知っていますが、元の大きさはわかりません。
この画像の角のピクセル座標がわかっている場合、元の比率、つまり長方形の商 (幅/高さ) を計算するにはどうすればよいですか?
(背景: 目標は、長方形のドキュメントの写真を自動的に歪ませることです。エッジ検出はおそらくハフ変換で行われます)
アップデート:
与えられた情報で幅と高さの比率を決定できるかどうかについて、いくつかの議論がありました。たとえば、上に示した四角形に 1:4 の長方形を投影する方法が思いつかないので、それは可能であるに違いないと私の素朴な考えでした。比率は明らかに 1:1 に近いので、数学的に決定する方法があるはずです。しかし、私の直感的な推測を超える証拠はありません。
以下に示す議論をまだ完全には理解していませんが、ここで欠落しているという暗黙の仮定がいくつかあるに違いないと思います。
しかし、何時間も検索した後、ようやく問題に関連するいくつかの論文を見つけました。そこで使用されている数学を理解するのに苦労していますが、これまでのところ成功していません。特に最初の論文では、残念ながらコード例と非常に緻密な数学がなく、私がやりたかったことを正確に説明しているようです。
Zhengyou Zhang、Li-Wei He、「ホワイトボード スキャンと画像処理」 http://research.microsoft.com/en-us/um/people/zhang/papers/tr03-39.pdf p.11
「遠近歪みのため、長方形の画像は四角形に見えます。しかし、空間では長方形であることがわかっているため、カメラの焦点距離と長方形の縦横比の両方を推定できます。」
ROBERT M. HARALICK 「四角形の透視投影からのカメラ パラメータの決定」 http://portal.acm.org/citation.cfm?id=87146
「3D 空間でサイズと位置が不明な長方形の 2D 透視投影を使用して、長方形の平面図に対するカメラのルック アングル パラメータを決定する方法を示します。」
computer-vision - コンピュータビジョンにおける射影幾何学とクロスレシオとは何ですか?
素人のやり方を教えてください。このチュートリアルhttp://lear.inrialpes.fr/people/triggs/pubs/isprs96/node27.htmlを読んでいましたが、理解できません。
math - 3点の法線ベクトル
ちょっと数学オタク、私はしばらくの間私を困惑させている問題を抱えています。個人的なプロジェクトです。
赤、緑、青の3つのドットがあります。それらは、赤い点が左下(0,0)にあり、青い点が右下(1,0)にあり、緑の点が左上にあるように、段ボールの伝票に配置されています。一歩下がって、ある角度からカードの写真を撮ることを想像してみてください。画像内の各ドットの中心を見つける場合(たとえば、単位がピクセルである場合)、画像内のカードの顔の法線ベクトル(カメラに対する)をどのように見つけますか?
今、私がこの問題について取り上げたいくつかのこと:
- (「実生活」での)ドットは常に直角です。写真では、カメラが「軸」(軸は赤と青または赤と緑の点によって作成された線)に沿って赤い点の周りを回転している場合にのみ直角になります。
- カードの片面だけにドットがあります。したがって、あなたはそれの後ろを見ることは決してないだろうということを知っています。
- カードからカメラまでの距離は関係ありません。各ポイントの深さを知っていれば、これははるかに簡単になります(単純な外積ですよね?)。
- カードの回転は、私が探しているものとは無関係です。これを理解するために私が行ってきたいじくり回しでは、最終的に法線ベクトルの助けを借りて回転を見つけることができます。回転が法線ベクトルを見つけることの一部(またはその積)であるかどうかは私にはわかりません。
これを行ったか、数学の天才である誰かがそこにいることを願っています。ここに2人の友人がいて、私を助けてくれましたが、これまでのところ、成功していません。
math - 3D空間の平面に平面ポリゴンを投影する方法
ベクトルに沿ってポリゴンを3D空間の平面に投影したいと思います。これを行うには、単一の変換行列を使用することが望ましいですが、この種の行列を作成する方法がわかりません。
与えられた
- 平面のパラメーター(ax + by + cz + d)、
- 私のポリゴンの世界座標。見出しで述べたように、私のポリゴンのすべての頂点は別の平面にあります。
- ポリゴンを投影する方向ベクトル(現在はポリゴンの平面の法線ベクトル)
目標 -必要な射影を実行する4x4変換行列、
また
- 自分で構築する方法についての洞察
アップデート
答えてくれてありがとう、それは意図したように動作します。
これを見つけた人への注意:射影の法線の平面が射影ベクトルに平行である場合、分母Dは(ほぼ)0になるので、奇妙なことが起こらないようにするために、この特殊なケースのある種の処理が必要です。D <1e-5かどうかを確認して解決しました。その場合は、ポリゴンを押し出しベクトルに沿って移動します。
projective-geometry - 射影行列 + 世界平面 → 画像平面から世界平面へのホモグラフィ
私はこれでワイヤーが交差していると思います。それは非常に簡単なはずです。
世界座標から画像座標 (4D 同次から 3D 同次) への射影行列があるため、画像座標から世界の「光線」への逆射影行列もあります。
画像のポイントをワールド内の平面に投影したいと思います(もちろん、4D同種ベクトルとして与えられます)。必要なホモグラフィは一意に識別される必要がありますが、計算方法がわかりません。
もちろん、逆投影された光線を世界平面と交差させることもできますが、これを行うホモグラフィーが必要であることを知っているため、これは良い方法ではないようです。
前もって感謝します、ベン
algorithm - そのような投影再構成の幾何学的問題を解決するためのアルゴリズムはありますか?
赤い四角のグリッドがあります。つまり、3つの正方形(角度== 90度)の配列があります。これは、同じサイズで、同じ平面上にあり、それらが横たわっている平面に対して同じ回転であり、上の同じ線上に配置されていません。飛行機。
正方形の平面を含む空間の投影があります。
平面投影を正方形で回転させて、正面を向いているように見せたいのですが、一般に、元の平面投影の各ポイントを、下の画像のように向きを変えるように回転させる式が必要です。
そのような問題を解決するためにどのような公式を使用することができますか、それをどのように解決するか、誰かが以前にこのようなことに直面したことがありますか?
algorithm - ワールドプレーンに対するイメージプレーンの回転角を取得するにはどうすればよいですか?
したがって、このような状況が発生します。
この図では、最初の四辺形がイメージプレーンに表示され、2番目の四辺形がワールドプレーンに表示されています。[ 1 ]
私の特定のケースでは、画像平面には3つの四角形があります。実世界の正方形の投影です。これは、私たちが知っているように、同じサイズで、同じ平面上にあり、それらが横たわっている平面に対して同じ回転であり、上に配置されていません。平面上の同じ線。
説明されていることを知っているので、イメージプレーンからワールドプレーンへの回転角を取得できるかどうか疑問に思います。
私の場合、入力として、元の画像(RGBピクセル)、画像平面上のピクセル(x、y)単位の角度ポイントを持つオブジェクト(正方形)などのデータ構造があります。
geometry - 平面の法線ベクトルとカメラの視線方向を指定して、平面構造の透視画像を修正します
複数の視点で建物のファサードを撮影しました。次に、バンドラーを使用して、建物の3D点群を再構築します。次に、RANSACメソッドを使用して、点群内のファサードの平面を見つけます。
これにより、平面とその表面法線のパラメータが得られます。
バンドラーから、カメラの回転行列も取得します。これを使用して、カメラの視線方向を計算します。
平面の法線とカメラの視線方向がわかったので、これを使用して画像を修正します。つまり、カメラの視線方向が平面の法線と同じであるかのように画像を修正します。
これらの2つのベクトルから射影変換行列を計算するにはどうすればよいですか?
graphics - 4点で識別される任意の平面を2次元平面に投影するにはどうすればよいですか?
私たちが解決しようとしている問題は、平面の 2 つの異なる表現で点を見つけるという問題です。最初の平面を回転させて遠近法を作成します。2 番目は同じ平面の 2D ビューです。同等であることがわかっている各プランには 4 つのポイントがあります。問題は、平面 1 に任意の点がある場合、対応する平面 2 の点をどのように見つけるかということです。
質問を最も明確にするために、ユースケースを説明するのがおそらく最善です。左図にイメージがあります。
空間の2D配置図
したがって、与えられたのは、両方の写真の赤い四角です。可能であれば、2D 空間が必ずしも正方形ではない可能性があることに注意してください。これらは事前に入手可能であり、既知です。また、最初の画像では、平面上に緑色の点が配置されています。イメージ 1 のドットをイメージ 2 のスペースに投影できるようにしたいと考えています。
画像1にも注意してください。定義されたウィンドウまたは目の位置がありません。画像 1 の赤い正方形は、画像 2 の赤い正方形の変換であり、画像 2 は 2D 空間にあることを知っています。
c++ - アスペクト角の計算方法
私は多くの3D平面を持っています。私が知る必要があるのは、アスペクト角の計算方法です。各平面の射影された法線ベクトルを使用してアスペクト角を計算できることを願っています (私の平面方程式は ax+by-z+c=0 です。したがって、この平面の法線ベクトルは a,b,-1 です)。飛行機。次に、Y 軸からアスペクト角を計算できます。しかし、XY 平面に投影した後、投影された法線ベクトルを取得する方法がわかりません。次に、2 つのベクトル間の角度を与える式を適用して、目的のベクトルの y 軸からの角度を計算できますか。
一方、アスペクト角は、平面の最も急な斜面を通る任意の線と北方向 (ここでは Y 軸) との間の角度として定義されることがわかりました。この定義は、法線ベクトルを使用する私の提案した方法に従いますか? つまり、射影された法線ベクトルは常に平面の最も急な傾斜に沿って与えられるのでしょうか? また、ある人は、この問題は 2D 問題と考えるべきだと私に言いました。アスペクト角を計算するために、私にコメントして、関連する式を送ってください。ありがとうございました。