問題タブ [projection-matrix]

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 投票する
1 に答える
699 参照

android - 与えられたポイント間の距離を概算する方法は?

私はスクリーンポイント(x、y)と経度、緯度を持つ値P1、P2、P3、P4を持っています。それに加えて、カメラ (緯度、経度)、カメラの高さ (1.6m (一定))、カメラの向き (方位、ピッチ、ロール) があります。カメラの水平視野角と垂直視野角もあります:)

ここで、PX(緯度、経度) のディスプレイ上の推定位置を計算したいと思います (表示されている場合)。 次の問題

指定された PX(lat,long) の P(?,?) を取得するにはどうすればよいですか? (グラフィックの紫色の点) カメラの角度を知っていて、4 つの頂点をすべて持っているので、これは可能だと思われます。しかし、私はこの問題を解決する方法がわかりません。

この 4 つの頂点に基づいて、(lat,long) を (screenX, screenY) に変換できる関数が必要です。

(screenX, screenY) を (lat,long) に変換できる式がありますが、この式を逆にすることはできません。したがって、頂点以外の点が必要な場合は、それらを計算できます (ただし、画面内のすべてのピクセルに対してこの式を単純に使用することはできません... 100 ミリ秒ごとに 100 万回のメソッド呼び出しが必要になります...)

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

opencv - 射影行列を求める

最初に、私の悪い英語をお詫びしたいと思います。

私は OpenCV とバーチャル リアリティの分野ではまったくの初心者です。画像処理の理論を調べようとしましたが、いくつかの点が欠けています。射影行列は 3 次元の点を 2 次元に変換するための行列であることを学びました。私は正しいですか?エッセンシャル マトリックスは 2 台のカメラ間の回転に関する情報を提供し、基本マトリックスは 1 つの画像のピクセルと他の画像のピクセルとの関係に関する情報を提供します。ホモグラフィ行列は、2 つの画像のピクセルの座標を関連付けます (正しいですか?)。基本行列とホモグラフィ行列の違いは何ですか?

射影行列を取得するには、これらすべての行列が必要ですか? 私はこれらが初めてなので、できれば簡単に説明してください。ご協力いただきありがとうございます。

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

math - 既知の点を持つ 2D 画像への 3D 座標の投影

私は、ユーザーが画像上の特定の点を識別し、それらの各点に関連付けられた実世界の座標を指定することで画像を登録できるようにする .NET プログラムを作成しています。

http://www.ironbyte.ca/temp/mountain.jpg

画像登録プロセスでは、ユーザーはカメラの座標も指定する必要があります。

画像が登録された後にできるようにしたいのは、実際の座標に基づいて画像上に他のポイントを描画することです。

私は透視投影について多くのことを読んできましたが、物事を機能させるのに苦労しています。私の数学のスキルは、闘争の一部であるべきものではないことを認めなければなりません. 私が立ち往生している場所は、焦点距離とディスプレイ表面までの距離を決定しようとしています:

この記事ではビューアーの位置 (e [x,y,z]) と呼びます: http://en.wikipedia.org/wiki/3D_projection#Perspective_projection

この記事も参照しています: http://www.shotlink.com/Tour/WebTemplate/shotlinknew.nsf/2c47cc31e412bc4985256e6e00287832/c1743b40acf6aa03852575b7007122b0/$FILE/Plotting%203D%20ShotLink%20Data%20%on%202D視野から焦点距離を抽出する .pdf は、事前にわかっているように見えますが、私の場合はそうではありません。

私の質問は、逆に作業して、画像上の既知の点の位置に基づいて焦点距離や視野を決定する方法はありますか? それとも、これを間違った方法で見ていて、最終目標を達成するためのより簡単な方法があるのでしょうか?

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

opengl - OpenGL プロジェクション マトリックス

基本的な OpenGL プログラムを動作させようとしています。モデルビュー マトリックスを作成する 2 つのメソッドを作成しました (現時点では非常に初歩的で、Z 軸上でオブジェクトを移動するだけです)。

私の問題は、私が OpenGL を理解している限り、投影マトリックスは画面上に正の Z 座標を持つ頂点を配置し、画面の後ろに負の座標を持つ頂点を配置する必要があるということです。

しかし、私が経験したことは、表示したい場合は、描画した立方体を負の z 方向に移動する必要があるということです。これがなぜなのか説明できますか?どこが間違っていますか?または、私のコードにエラーがありますか?

この関数を使用して、射影行列を作成します。

そして、これはModelview用です(さまざまなオフセットを渡します。それらは0を中心にスイングし、zは-2を中心にスイングします):

行列は両方ともopenglに正しく渡されます。次の方法で頂点位置を計算します。

誰かが必要な場合に備えて、コード全体を次に示します。

main.h

main.cpp

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

c++ - OpenCV:projectPointsは負の値を返すことができますか?

cv::projectPoints を使用して、3D ポイントのベクトルの対応するピクセルを取得しています。

ポイントはすべて互いに近くにあります。

問題は、いくつかのポイントでは正しいピクセル座標が得られることですが、他のポイントでは -22599 のような奇妙な負の値が得られることです...

cv::projectPoints が負の値を返すのは正常ですか、それとも私のコードのバグですか?

ご提案いただきありがとうございます。

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

graphics - Unity3D から DirectX への射影行列

OpenGL と DirectX の間で変換を実行するためにこの質問を見つけましたが、Unity3D から同じことを実行する場合は機能していないようです。

OpenGL プロジェクション マトリックスと Unity3D プロジェクション マトリックス (およびビュー マトリックス!) の違いについて何か知っている人がここにいることを期待していました。

この記事も使用しようとしましたが、うまくいきませんでした。

Unity3D では、独自のネイティブ C++ プラグインを呼び出しています。

そして、私のC++プラグインでは、記事を介してこれらの行列を変換しようとしています:

ビューと射影行列に単位行列を使用すると、頂点の三角形が得られるため、物事が描かれていることがわかります: {0,0,0}、{0,1,0}、{1,0,0}。また、カメラを動かすと、あらゆる種類のせん断効果が見られます。

編集 - 詳細情報:
Unity3D のドキュメントには、OpenGL 表記を使用していると書かれています。

編集 - サンプル プロジェクト:
誰かが私のコードを試してみたい場合は、テスト プロジェクトを作成し、ユニティ フォーラムにアップロードしました。