元の画像と彼の白黒深度マップから始めて、赤/シアンのアナグリフを計算するための一般的なアルゴリズムを探しています(例:http ://www.swell3d.com/2008/07/turn-2d-painting- into-3d-anagl.html)
そのアルゴリズムは、たとえばPhotoshopで使用されていますが、それを再現するための読みやすい説明が見つかりません。
ありがとう
元の画像と彼の白黒深度マップから始めて、赤/シアンのアナグリフを計算するための一般的なアルゴリズムを探しています(例:http ://www.swell3d.com/2008/07/turn-2d-painting- into-3d-anagl.html)
そのアルゴリズムは、たとえばPhotoshopで使用されていますが、それを再現するための読みやすい説明が見つかりません。
ありがとう
いくつかの調査の後、私は探していたものを見つけました。最初に、画像とそのグレースケール深度マップの2つの入力からアナグリフを作成する方法を説明するPhotoshop/Gimpチュートリアルをいくつか読みました。プロセスの中核は、「変位ツール」と変位マップとしての深度マップの使用です。いくつかのYouTubeチュートリアルの1つ:http ://www.youtube.com/watch?v = gfYMe_vYhu4
そこで、このhttp://docs.gimp.org/en/plug-in-displace.htmlを見て、ツールのソースコードを直接見て、Gimpのディスプレイスツールに関するドキュメントをいくつか入手しました(方法は、 Asgeirによって提案されたもの)。
これにより、深度マップを確認することにより、入力から2つのステレオ画像を生成できます。すべての画像の赤とシアンの色は、このページhttp://3dtv.at/Knowhow/AnaglyphComparison_en.aspxを読んで計算されます(「最適化された」マトリックスが最適です)。
次に、2つの画像を1つに合計すると、最終的なアナグリフが生成されます。みんなありがとう。
関連する2つのアルゴリズムがあります。1つ目は、元の画像と深度マップを使用して、左右の画像を生成します。2つ目は、これらの画像を組み合わせて赤シアンのアナグリフにします。
最初の部分を達成するためのいくつかの方法があります。1つは、元の画像を取得し、それをXY平面に平らに配置された細かいメッシュにテクスチャマッピングすることです。次に、深度マップの対応する値に従って、メッシュの各頂点のZ値を微調整します。基本的に、テクスチャの浅浮き彫りを作成しました。次に、3Dレンダリングアルゴリズムを使用して、水平方向にわずかにオフセットされた2つの視点から画像をレンダリングします(基本的に、浅浮き彫りを見る人の左目と右目の視点から)。
おそらく、ピクセルを左右に直接シフトする方法があります。これは、上記で説明したものに非常に高速に近似します。
左右の画像を取得したら、1つをシアンのフィルターに通し、もう1つを赤のフィルターに通します。RGBソースがある場合は、一方の画像から赤のチャンネルを取得し、もう一方の画像の緑と青のチャンネルと組み合わせるだけです。
アナグリフは、落ち着いた色で最適に機能します。強力な予備選挙がある場合、見栄えは悪くなります。開始する前に、アルゴリズムを使用して元の画像の彩度を下げることができます。
あなたが提供したリンクの説明から、私はそれが次のようなものであると思います
for each pixel in depthmap
x_offset = (depthmap[x][y] / 255.0f) * MAX_PIXEL_OFFSET * DIRECTION
output[x + x_offset][y] = color_buffer[x][y]
blend output with color_buffer
ここで、MAX_PIXEL_OFFSETはピクセル単位の最大シフトであり、DIRECTIONは一方の色で-1、もう一方の色で1です。これは、深度バッファがピクセルあたり1バイト、範囲[0..255]であり、深度バッファの0が最大距離を表すことを前提としています。