MATLABを使用して2D画像から3D立体画像を作成するにはどうすればよいですか?イメージツールを使用してMATLABを使用して3Dストロス画像を作成する方法は?
答えて
私はあなたの質問を誤解しています(人々は既にそれが明らかではないことを指摘しています)か、3Dビジョンの仕組みを誤解しています。 「3Dガラスを使って2D画像を見る」ことはできません。 3D視覚は、左画像および右画像の2つの異なる画像をそれぞれ左眼および右眼に提供することによって達成される。基本的なレベルでは、MATLABには何も関係ありません。
わかりやすくまとまった質問がなければ、できるだけthisのようなものが必要だと思うのです。あなたは1つの2D画像を持っていますが、まだ「3D画像フォーマットを見たい」と思っています。その場合、あなたは何とか2枚の新しい画像にその単一の画像を分割する必要があります。
- 左画像を左目用の
- 右画像を右目これは簡単ではありません
ため。一般に、2D画像の各ピクセルのinferring the depthから開始します。深度情報を「推測」しているので、2つの新しい画像は3Dシーンを完全に表現することはできません。
次に、その奥行き情報を使用して画像をレイヤーに分割します。それは本質的に子どもの本からポップアップの切り欠きのようになります。
以上の層は、あなたが思い付くことができ、より正確なあなたの奥行き推定は、より現実的なあなたの3D表現が可能になります。
最後に、レイヤーされた表現を、2つの異なる位置(左目用と右目用)から2Dに投影します。これにより、必要な2つの異なるイメージが得られます。
EDITあなたは、一般的にanaglyph imageとして知られているものの簡素化作成方法を説明するためにリンクされ
二video。 3Dレッドシアンのメガネが必要です。ではなく、で、ほとんどの3D劇場で使用されている偏光メガネです。私がをで簡略化したと言う理由は、前景と背景を区別しないからです。
フォアグラウンドをバックグラウンドから分離してフォアグラウンドにのみ適用します。これは、通常、背景が無限の深さを持ち、モノラルからステレオビジョンに移行するときに変化しないためです。ピアノの場合、すべてが多かれ少なかれフォアグラウンドなので、アプローチは機能します。ビデオで説明
アルゴリズムは次のとおりです。二つの画像、im1
とim2
と
- スタート。それらは同一です
im1
の緑と青のチャネルをゼロに設定します。これで赤のイメージが作成されますim2
の赤のチャネルをゼロに設定します。これにより、シアンの画像が作成されます。im1
が左側にあり、右側にim2
があるように、指定された量だけ(対象の深度に応じて)2つの画像をオフセットします。 3Dレッドシアンのメガネは左側が赤、右側がシアンなので、この注文を正しく取得する必要があります。- シフトされた2つの画像を要素ごとに加算します。チャネルが飽和しないことに注意してください。
は、ここで私が書いたいくつかのPython/OpenCVのコードです:
import cv
SHIFT=8
if __name__ == '__main__':
import sys
_, fname = sys.argv
im = cv.LoadImage(fname)
size = cv.GetSize(im)
width, height = size
left = cv.CreateImage(size, im.depth, im.nChannels)
right = cv.CreateImage(size, im.depth, im.nChannels)
anaglyph = cv.CreateImage((width - SHIFT, height), im.depth, im.nChannels)
#
# This would be easier if we had COI support for cv.Set, but it doesn't
# work that way.
# OpenCV uses BGR order (even if input image is greyscale):
# http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html
# red goes on the left, cyan on the right:
# http://en.wikipedia.org/wiki/Anaglyph_image
#
b = cv.CreateImage(size, im.depth, 1)
g = cv.CreateImage(size, im.depth, 1)
r = cv.CreateImage(size, im.depth, 1)
cv.Split(im, b, g, r, None)
zeros = cv.CreateImage(size, r.depth, 1)
cv.Merge(zeros, zeros, r, None, left)
cv.Merge(b, g, zeros, None, right)
#
# cvRect is (x, y, width, height) and it MUST be a tuple, not a list
#
cv.SetImageROI(left, (SHIFT, 0, width - SHIFT, height))
cv.SetImageROI(right, (0, 0, width - SHIFT, height))
cv.Add(left, right, anaglyph, None)
cv.SaveImage('anaglyph.jpeg', anaglyph)
ここで同様の画像が動画で使われているものにです:
ここでは出力です:
残念ながら、私は3D赤色シアンのメガネを持っていないので、これが動作することを確認できません。しかし、それは少なくとも理論的にはそうすべきだと思われる。もし私が間違いをしたら、誰かが私を訂正するかもしれない。
ありがとう@misha ..しかし、私はビデオリンクhttp://www.youtube.com/watch?v=3r4M_KHt6aw、http://www.youtube.com/watch?v=g_JRHtHpuSY、http ://www.youtube.com/watch?v = zdXxS2KHXloのように.. - Abhiに感謝します。 –
基本的に、最初のリンクは私が何をしたかを説明しました。深度マップを計算し、2番目の画像を作成します。実際の変位フィルターの実装についてはわかりません。 2番目のリンクは、ステレオイメージではなく、疑似3D効果を実現するだけの関連性はありません。これがあなたの望むものであれば、実装するのはかなり簡単です。子供がビデオで言っていたとおりに正確に行います。私は後で3番目のビデオを見るかもしれない - それは少し長いです、そして、ここに遅れています。関連するリンクを元の質問に入れて、あなたが望むものを明白にします。 – misha
ありがとう@mishaはいあなたが得る。私は2D画像から擬似3D効果を追加したい。私はビデオリンクごとにシンプルな3D効果を実現します。あなたがそれについてのコードを持っているなら、私に返信してください。 - Abhi –
これは、わずかに異なる視点から2つの画像を撮影した場合、はるかに簡単です。 2つの画像を整流することでステレオアナグリフを作成できます。関連する機能は、Computer Vision System ToolboxのestimateUncalibratedRectifiation
とstereoAnaglyph
です。 Uncalibrated Stereo Image Rectificationの例を参照してください。
また、Stereo Camera Calibrator appを使用してカメラを調整してからrecifyStereoImages
機能を使用することもできます。 Stereo Calibration and Scene Reconstructionを参照してください。
あなたの答えをありがとう..私たちが1つの画像しか持っていないなら、我々は立体画像を作ることができますか? –
- 1. PHPを使用して3D画像を作成するには?
- 2. Silverlightを使用して3D画像操作を実装する方法は?
- 3. スキャナメソッドを使用して画像を再作成する方法
- 4. 3Dオブジェクトを使用してUIViewを作成する方法
- 5. Hadoop MapReduceを使用して3D画像を処理する方法は?
- 6. Unity 3DでC#スクリプトを使用してカスタム3D名を作成する方法
- 7. griddata()を使用してMATLABで画像を変換する方法は?
- 8. 線形相関を使用してMATLABを使用して画像を比較する方法
- 9. jqueryを使用して画像のズーム効果を作成する方法は?
- 10. .binを画像係数に変換し、MATLABとCを使用してバイナリ画像を作成する
- 11. Pythonを使用して3Dメッシュを画像にレンダリングする
- 12. バイナリ画像を使用したマスクの作成 - matlab
- 13. Matlabを使用してtifファイルの画像数を取得する方法
- 14. cudaMalloc3Dを使用してCuda Memory 3Dを使用する方法
- 15. リーフレットを使用して画像から地図を作成する方法
- 16. Swiftを使用して画像のURLを作成する方法
- 17. Senchaで背景画像を使用してパネルを作成する方法
- 18. iOS:AVAssetWriterを使用して一連の画像でムービーを作成する方法
- 19. JavaFx:シーンビルダを使用してクリック可能な画像を作成する方法
- 20. 画像を使用してカスタマイズされたGrouped UITableViewを作成する方法
- 21. Django:デジタルオーシャンスペース/ AWS S3、django_storagesを使用して画像を作成する方法
- 22. AngularJSを使用してフォルダと画像を作成する方法
- 23. テキストと画像を使用してスライドショーを作成する方法
- 24. Matlabを使用してExcelに画像を挿入する
- 25. MATLABを使用して画像に矩形ボックスをプロットする
- 26. Matlabでimfuseを使用してグレースケール画像をアルファブレンドする
- 27. CSSを使用して3Dイメージを作成するには
- 28. html5を使用して画像を作成する
- 29. Javaを使用して画像ギャラリーを作成する
- 30. iPhone - テキストと画像を使用してPDFを作成する
質問は何ですか?何を試しましたか? – carlosdc
3Dデータがあれば作成する方が簡単だと思います。なぜなら、必要なのは、異なる画角で2つの投影を作成するだけだからです。 –
@carlosdc @Itamar Katz:3Dガラスを使って2D画像を見たいのであれば、3D画像フォーマットに見えます。それとも他の方法でも3次元で見ることができますか? –