問題タブ [stereoscopy]
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.
opengl - 3D画像を3DTVに出力するにはどうすればよいですか?
私は3Dテレビを持っていて、少なくとも自分で作成したきれいな3D画像を表示させようとしないと、(オタクとしての)自分の責任を怠るだろうと感じています。
私は以前に非常に基本的な量のOpenGLプログラミングを行ったことがあるので、関連する概念を理解しています。単純な四面体または立方体をレンダリングして、少し回転させることができると仮定します。3D TVでこの画像を3Dで表示するにはどうすればよいですか?
3Dの仕組みの基本を理解していることに注意してください(同じ画像を2つの異なる角度から2回、それぞれの目に1つずつレンダリングします)、私の質問は実際にこれを行うためのロジスティクスについてです(SDKが必要ですか?など...)
- 私が持っているテレビは偏光3Dを使用していますが、この質問は他の3Dテクノロジーにも関連することを意図しています(可能な場合)
- 私のラップトップにはHDMI出力があります。これは、テレビに接続するために使用する予定です(これは、VGA /コンポーネントビデオケーブルを使用する場合と違いがありますか?)
- 過去に私はGLUT/OpenGLで実験しましたが、いくつかの代替技術を使用してこれを行うのがより簡単で/本当に可能である場合、それは問題ありません
opengl - OpenGL アプリケーションから HDMI 1.4a 互換の立体信号を 3DTV に出力するにはどうすればよいですか?
HDMI 経由でステレオスコピック 3D ビデオを市販の TV に出力する OpenGL アプリケーションを使用していますが、現在、適切なフォーマット (サイド バイ サイド、トップ ボトム等)。ただし、HDMI 1.4a 3D 信号のみをサポートするサポートが必要なデバイスがあります。これは、3D ビデオの形式を示すディスプレイに送信されるある種のパケットであると理解しています。 NVIDIA Quadro 4000 で、3D Blu-ray やその他の 1.4a と同様に、標準の 3DTV で正しいフォーマットが表示されるようにビデオを出力する (またはビデオ カードにその方法を伝える) ことができるかどうかを知りたいです。 -互換性のあるデバイスで、特定の 3D モードを手動で選択する必要はありません。これは可能ですか?
c# - NV_STEREO_IMAGE_SIGNATUREおよびDirectX10/11(nVidia 3D Vision)
SlimDXとDirectX10または11を使用して、nVidia 3DVisionKitのステレオ化プロセスを制御しようとしています。この質問のおかげで、DirectX 9で動作させることができました。ただし、いくつかのメソッドが欠落しているため、DirectX10または11で動作させることができませんでした。
アルゴリズムは次のようになります。
- 左目の画像をレンダリングする
- 右目の画像をレンダリングする
- それらの両方と追加の行を含むことができるテクスチャを作成します(したがって、テクスチャサイズは2 *幅、高さ+ 1になります)
- このNV_STEREO_IMAGE_SIGNATURE値を書き込みます
- このテクスチャを画面にレンダリングします
すでにステレオテクスチャがあるため、テストコードは最初の2つのステップをスキップします。これは以前の.JPSファイルであり、特にnvidia3Dキットに付属のサンプル画像に含まれているファイルの1つでした。ステップ5は、フルスクリーンクワッドとシェーダーを使用して、正射影行列を介してステレオ化されたテクスチャをレンダリングします。DX9で見たサンプルコードはこれを必要とせず、StretchRect(...)メソッドを呼び出してテクスチャをバックバッファにコピーして戻します。それで、多分それは機能していないこの理由のためですか?DX10でこれを達成するための同様の方法はありますか?バックバッファへのレンダリングは、理論的にはテクスチャをコピー(またはStretchRecting)するのと同じだと思いましたが、そうではないでしょうか?
これが私のコード(slimdx)に従います:ステレオ化手順
NV_STEREO_IMAGE_SIGNATUREデータ
主要
前もって感謝します!
opengl - 3D モニターに OpenGL レンダリングを使用できますか?
3D 対応の LCD モニターと、3D 立体視対応のグラフィックス カード (ATI Radeon 5870 以上) を搭載したマシンの購入を検討しています。これは、OpenGL を使用して 3D でレンダリングしている科学データを表示するためのものです。GPU、モニター、シャッター グラスが立体視ディスプレイを処理することを期待できますか、それともレンダリング プログラムを変更する必要がありますか? 3D 立体視ディスプレイ用のグラフィックス プログラミングの特定のテクニックがある場合は、チュートリアルへのリンクをいくつか教えていただければ幸いです。
3d - 立体視と仮想カメラの設定
単純なカメラ行列から2つのカメラ行列(左と右)を計算する方法を知っている人がいるかどうか知りたいですか?立体視効果を持たせるため(人間の両目をシミュレート)。
ご協力いただきありがとうございます。
opencv - POSIT + OpenCVでmmを使用できますか?
このチュートリアルで説明されているようにPOSITを使用しようとしていますが、いくつかのことを理解するのに問題があります。
平行六面体からの9つの座標(x、y、z)値があります。この座標値の単位はmmで表されます。を使用して2D投影点(x'、y'、z')を計算しました
x'=(x / z)* f && y'=(y / z)* f
zをf/2、f(焦点距離)を1000mmと定義します。
3Dポイントは次のように表されます。
なぜ0.00f?簡単に次のように表現できますか?
すべての単位をmmで表すことはできますか?
私はこの質問に対する答えを得るためにいくつかの調査を行ってきましたが、それでも理解できません。誰かがこれを手伝ってくれるなら、私は最も感謝しています!
c++ - カメラに関する情報を含まない 2 つの画像からの 3D 再構成
私はこの分野では初めてで、2D 画像から 3D で単純なシーンをモデル化しようとしていますが、カメラに関する情報はありません。私は3つのオプションがあることを知っています:
2 つの画像があり、たとえば XML から読み込んだカメラのモデル (intrisics) を知っています
loadXMLFromFile()=>stereoRectify()=>reprojectImageTo3D()持っていませんが、カメラを調整できます =>
stereoCalibrate()=>stereoRectify()=>reprojectImageTo3D()カメラを調整できません (2 つの画像を撮影したカメラを持っていないため、私の場合です。次に、SURF、SIFT などを使用して両方の画像でペアのキーポイントを見つける必要があります (任意のブロブを使用できます)。次に、これらのキーポイントの記述子を計算し、それらの記述子に従って画像右と画像左のキーポイントを照合し、それらから基本行列を見つけます。処理ははるかに難しく、次のようになります。
- キーポイントの検出 (SURF、SIFT) =>
- 記述子の抽出 (SURF、SIFT) =>
- 記述子の比較と照合 (BruteForce、Flann ベースのアプローチ) =>
- これらのペアから基本的なマット (
findFundamentalMat()) を見つける => stereoRectifyUncalibrated()=>reprojectImageTo3D()
私は最後のアプローチを使用していますが、私の質問は次のとおりです。
1) そうですか。
2) よろしければ、最後の手順に疑問がありますstereoRectifyUncalibrated()=> reprojectImageTo3D(). reprojectImageTo3D()関数のシグネチャは次のとおりです。
パラメーター:
disparity– 単一チャネルの 8 ビット符号なし、16 ビット符号付き、32 ビット符号付き、または 32 ビット浮動小数点視差画像を入力します。_3dImage– と同じサイズの 3 チャネル浮動小数点イメージを出力しdisparityます。の各要素には、視差マップから計算され_3dImage(x,y)たポイントの 3D 座標が含まれます。(x,y)Q– で取得できる 4x4 透視変換マトリックスstereoRectify()。handleMissingValues– 関数が欠損値 (つまり、視差が計算されなかったポイント) を処理する必要があるかどうかを示します。の場合handleMissingValues=true、外れ値 (「 」を参照StereoBM::operator()) に対応する視差が最小のピクセルは、非常に大きな Z 値 (現在は 10000 に設定) を持つ 3D ポイントに変換されます。ddepth– オプションの出力配列の深さ。-1 の場合、出力画像にCV_32F奥行きがあります。、または `CV_32F'ddepthに設定することもできます。CV_16SCV_32S
Qマトリックスを取得するにはどうすればよいですか? 、およびまたは別の方法でQ行列を取得することは可能ですか?FH1H2
3) カメラをキャリブレーションせずに xyz 座標を取得する別の方法はありますか?
私のコードは次のとおりです。
3d - 立体視レンダリング
ウェブカメラからの 2 つのビデオストリームを、3D ディスプレイで立体画像として認識できるようにレンダリングするアプリを考え出そうとしています。これまで立体 3D を扱ったことはありませんが、理論的には、ストリームを 2 つの異なるサーフェスにレンダリングし、それぞれを適切な目で表示するのと同じくらい簡単なはずです (申し訳ありませんが、用語に完全に精通していません)。NVidia ドライバーは、あらゆる 3D アプリケーションを「立体視」できることを知っています。また、ビデオゲームにはこの機能が別の設定として含まれていることも知っているので、これをオンにして操作するのは簡単なはずです.
それにもかかわらず、MSDN または NVidia Web サイトでこれを行う方法に関するガイドを見つけることができませんでした。
この分野で何か助けていただければ幸いです。
ありがとう!
opencv - ステレオ Web カメラの機械的キャリブレーションと微調整
ステレオ (コンピュータ) ビジョンに関する多くの資料があります。これらの読み取りから取り除かれる最も注目すべきメッセージは、OpenCV にかなり行き詰まっているということです...これは間違いなく悪いことではありません。
ほとんどの記事は、貧弱な/安価なレンズを補うために OpenCV 機能を使用して調整することに関するものです。
今は、バックプレーンにカメラを配置するための機械的なキャリブレーションに関心があります。キャリブレーションで補正できることは限られているため、カメラの位置をほぼ完璧にしたいと考えています。
2 台の Logitech 9000 をアルミ製バックプレートに約 10cm 離してねじ止めしています。私の目標は、2 ~ 40 メートルの範囲で深さを知覚することです。
カメラが相互に正しく配置されているかどうかを確認するにはどうすればよいですか? カメラを遠く (> 500m) に向けて、カメラの中心 (ピクセル) がシーンの同じ (一部) を見ていることを確認することを考えていました。これで十分ですか?隅に表示されるものにも注意を払う必要がありますか、それとも後でレンズ キャリブレーションによって行われますか?
また、やや関連するメモとして、最終的には視差マップを描く必要があります。「高速」アルゴリズムと「低速」アルゴリズムを使用した OpenCV に関するガイドは無数にあります。多くのパラメーターを使用して微調整する必要がある「高速」のものをリアルタイムで使用します。これはカメラの種類/レンズの 1 回限りの調整ですか、それとも (新しい) シーンごとに行う必要がありますか? 後者の場合、私のステレオカメラは実際にはあまり役に立たなくなります。