2011-10-10 93 views
2

我在尋找一個通用的算法來計算紅色/奇安浮雕從原始圖像開始,他的B/W深度圖(例如:http://www.swell3d.com/2008/07/turn-2d-painting-into-3d-anagl.html3D-Anaglyph創建算法,使用深度圖圖像:在哪裏可以找到?

這algorythm使用,例如,在Photoshop中,但我找不到可讀的解釋來重現它。

謝謝

+1

相關:http://stackoverflow.com/questions/4720857/how-to-create-3d-streoscopic-images-using-matlab-with-image-tool – misha

回答

4

經過一番研究,我發現了我在找的東西。 首先,我參考了一些Photoshop/Gimp教程,介紹如何從兩個輸入中生成浮雕:圖像及其灰度深度圖。該過程的核心是使用「Displace Tool」和深度圖作爲位移圖。 其中一些YouTube的教程:http://www.youtube.com/watch?v=gfYMe_vYhu4

所以,我花了大約GIMP的替換工具的一些文檔,通過查看該http://docs.gimp.org/en/plug-in-displace.html並直接在工具的源代碼(該方法非常類似於Asgeir提出的一個) 。

這讓我們通過查看深度圖從輸入中產生兩個立體圖像。每個圖像的紅色和青色顏色通過閱讀此頁http://3dtv.at/Knowhow/AnaglyphComparison_en.aspx(「優化」矩陣是最好的)來計算。

然後,一個兩個圖像的總和將產生最終的浮雕。謝謝大家。

3

有兩種算法涉及到。第一個使用原始圖像和深度圖生成左圖像和右圖像。第二個將這些圖像組合成一個紅色的青色浮雕。

有幾種方法可以完成第一部分。一種是將原始圖像和紋理映射到平面在XY平面上的細網格上。然後根據深度圖中的相應值調整網格中每個頂點的Z值。你基本上已經創建了一個質感的淺浮雕。然後,您使用3D渲染算法從兩個水平偏移少量的有利位置(基本上從人左右眼的有利位置,因爲他們將查看浮雕)渲染圖像。

可能有一種方法可以直接將像素左右移位,這與我上面描述的很好地近似。

一旦你有左和右的圖像,你通過青色過濾器和一個通過紅色過濾器。如果您有RGB信號源,就像從一張圖像中取出紅色通道並將其與另一張圖像中的綠色和藍色通道進行梳理一樣簡單。

浮雕顏色效果最好。如果你有強大的初選,它會看起來不太好。在開始之前,您可以使用一種算法來減少原始圖像的顏色飽和度。

+0

真的很有趣。我假設第一個涉及的算法是最難的部分,是的,可能有一種方法可以通過直接讀取深度圖的較深/較亮區域來左右移動像素。我正在尋找這種方法,因爲您描述的渲染3D網格的方法看起來不錯,但對於我的需求來說太複雜了。 第二步比較容易,我已經選擇了一些顯示大量不同顏色調整以便更好渲染的網站。 非常感謝現在,但我在工作的50%:) – TheUnexpected

+0

顯然,如果你可以發佈一些有用的第一步的鏈接,他們將被讚賞 – TheUnexpected

1

從鏈接中的描述你提供我會認爲它是像

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是在像素和方向上的最大變化是-1爲另一種顏色,1。這是假設深度緩衝區是每個像素一個字節,範圍[0..255],並且深度緩衝區中的0表示最大距離。

相關問題