問題タブ [homogenous-transformation]

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 に答える
4542 参照

opengl - opengl射影行列で符号が重要なのはなぜですか

キャリブレーションされたカメラを使用して 3D モデルをレンダリングする必要があるコンピューター ビジョンの問題に取り組んでいます。キャリブレーションされたカメラ マトリックスをモデルビュー マトリックスと射影マトリックスに分割する関数を作成していますが、opengl で説明に反する興味深い現象に遭遇しました (少なくとも私は)。

簡単な説明は、射影行列を否定すると、何もレンダリングされないということです(少なくとも私の経験では)。スケーリングの影響を受けない同次座標を変換するため、射影行列にスカラーを掛けても効果はないと思います。

以下は、これが予想外であると私が考える理由です。誰かが私の推論のどこに欠陥があるかを指摘できるかもしれません。

正しい結果が得られる次の透視投影行列を想像してください。

これにカメラ座標を掛けると、均一なクリップ座標が得られます。

最後に、正規化されたデバイス座標を取得するために、x_c、y_c、および z_c を w_c で除算します。

ここで、P を否定すると、結果のクリップ座標は否定されますが、それらは同次座標であるため、任意のスカラー (-1 など) を掛けても、結果の正規化されたデバイス座標には影響しません。ただし、openGl では、P を否定すると何もレンダリングされません。P に非負のスカラーを掛けて、まったく同じレンダリング結果を得ることができますが、負のスカラーを掛けるとすぐに、何もレンダリングされません。ここで何が起こっているのですか??

ありがとう!

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

c++ - 外部パラメータと内部パラメータが既知の場合、2D イメージ ピクセルから 3D 座標を取得します

ツァイアルゴからカメラのキャリブレーションを行っています。内部行列と外部行列を取得しましたが、その情報から 3D 座標を再構築するにはどうすればよいですか?

ここに画像の説明を入力

1) X、Y、Z、Wの検索にガウス消去法を使用できます。その後、ポイントは均質システムとして X/W 、 Y/W 、 Z/W になります。

2) OpenCV ドキュメントアプローチを使用できます 。

ここに画像の説明を入力

私が知っているように、、、、u計算できます。vRtX,Y,Z

ただし、どちらの方法も結果が異なり、正しくありません。

私は何を間違っていますか?

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

iphone - すでに変換されているCALayerのサブレイヤーに逆CATransform3Dを適用する

CATransform3D変換を使用して、疑似3D遠近効果をビューに適用しています。

私はiPhone4のジャイロスコープを使用して、変換のパラメーターを制御しています。

私が変換しているビューには、いくつかのサブビューがあります。

サブビューで表示

結果は次のようになります。

動作中の3D変換

次のタスクは、メインビューが変換されるときにサブビューが変換されないようにするか、サブビューが影響を受けないように逆変換を適用することです。

私の目的は、各サブビューをスーパービューに対して垂直にして、「立っている」という印象を与えることです。

変換に使用しているコード:

Y軸の周りのサブビューに90度の遠近法の回転を適用することにより、変換を反転させるために次のコードを試しました。

しかし、これが成功するのは、サブビューを非表示にすることだけです。レイヤーからの既存の変換を使用し[sublayer transform]て3D回転を適用しようとすると、サブビューがちらつきますが、回転しません。

行列の数学についての私の知識はあまりよくないので、これが正しいアプローチであるかどうかはわかりません。

サブビューをスーパービューに対して垂直に配置するにはどうすればよいですか?

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

java - OpenNni: 色座標から深度座標へ

フル解像度のカラー画像から取得した座標を深度ストリームの座標に変換する方法を知りたいと思っていました。

たとえば、フル解像度の色から (763,234) を取得し、深度画像から (x、y、z) を知りたいですか? (ところで私はJavaでこれをやっていますが、C ++での答えはおそらく簡単に翻訳できます)

事前にThx

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

image-processing - ポジアルゴリズムを使用してプロジェクターとカメラを調整するにはどうすればよいですか

キネクトをプロジェクターに合わせて調整しようとしています。マイクロソフトの研究から、彼らがこれを行う方法に関するいくつかの論文を読みました。

深度カメラとプロジェクター画像の両方で 4 つのポイントを正しく識別しなければなりません。その後、POSIT アルゴリズム [6] を使用してプロジェクターの位置と向きを見つけます。このプロセスには、プロジェクターの焦点距離と投影の中心が必要です。

(これにより、プロジェクターの位置が決まります)

しかし、私はポジトアルゴリズムに精通しておらず、ここでの使用方法も確かによく知りません。Posit アルゴリズムの結果は、並進ベクトルと回転行列です。ここで私の質問は、これをどのように相互作用に使用できるかです。

たとえば、kinect で手を追跡すると、座標 (x,y) が得られます。上記の並進および回転行列を使用して、投影で対応する (x、y) 座標を見つけるにはどうすればよいですか?

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

computer-vision - 同次行列には、行列要素の 8 つの独立した比率がありますか?

コンピュータビジョンに関する論文を読んでいます。単純な事実のように見えますが、私には理解できません。平面射影変換に使われる同次[3x3]行列についてです。そして、マトリックス要素の8つの独立した比率を持つと言われています. 比率が何かわかりませんが、8 つの独立した比率とは何ですか? この問題を助けてください。

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

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

matrix - 2D 変換に 3x3 行列が必要なのはなぜですか?

私はいくつかの 2D 描画を行いたいので、いくつかの行列変換を実装したいと考えています。私の軽い数学のバックグラウンドで、C#でこれを行う方法を理解しようとしています(他のoop言語は明らかにそれを行います)。

私が読んだのは、翻訳に対処できるようにするには 3x3 マトリックスを使用する必要があるという説明だけです。掛け算では翻訳できないからです。しかし、これは変換を作成する行列の乗算によるものです。したがって、次のようなものを使用します。

3 列目の平均はわかりましたが、なぜ 3 行目が必要なのですか? 回転、スケール、または回転と同様に恒等行列では、最後の行は同じです。まだ到達していない操作はありますか? 一部の言語 (Java) は「二乗次元」配列でパフォーマンスが向上するためですか? その場合、C# で 3 列と 2 行を使用できます (ギザギザの配列も同様またはそれ以上に機能するため)。

たとえば、回転 + 平行移動の場合、次のような行列があります

最後の行は必要ありません。

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

html - 3x3行列を使用したhtml5非アフィン画像変換

3D変換を使用せずにcanvas/css / svgを使用して画像で非アフィン変換を行う簡単な方法はありますか?非アフィン変換とは、「遠近法」変換を行うために、画像に3x3の均質な行列を適用することを意味します。

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

3d - 3D 点のベクトルを Eigen の同次表現に変換する

として保存されている N 個の 3D ポイントを含むバッファがあり[XYZXYZXYZ ... XYZ]ます。

Eigen::Matrix<float, 3, N>このバッファは、 Eigen::Map を使用して に直接マップできます。アフィン変換 (つまり、Eigen::Matrix4f行列) を使用してポイントを変換するので、同じバッファーを固有構造にマップして、バッファーをEigen::Matrix<float, 4, N>最後の行に 1 のみが含まれるマトリックスと見なすことができるようにしたいと思います。つまり、各単一ポイントは同次ベクトル [XYZ 1]。

元のバッファをコピーしたり、各ポイントに変換を適用したりせずにこれを行う便利な方法はありますか?