2013-05-10 141 views
4

所以可以說我有被讀與imread()命令,並保存到矩陣A.將圖像映射爲圓柱體或球體形狀?

我要輸出/圖形此矩陣爲圓筒形狀的圖像的黑色&白色圖像。我知道如何在MATLAB中畫一個圓柱體,但如果我想將圖像放在圓柱體上或以圓柱體形狀繪製圖像,我不知道該怎麼辦。任何幫助將不勝感激。謝謝。

我發現這個網站從谷歌搜索。 http://www.flashandmath.com/advanced/rolls/cylin.html 這正是我想要做的,但我需要在MATLAB中做到這一點。

+0

你可以用它的圖像創建面...使用'surf(x,y,z,c);'其中'x,y,z'是圓柱體的座標(每個是相同大小的二維數組),'c'是您要映射的圖像。 – Floris 2013-05-10 04:13:07

+0

請參閱:http://www.mathworks.com/support/solutions/en/data/1-15PCO/index.html?product=SL&solution=1-15PCO – Amro 2013-05-10 08:02:03

回答

7

該技術被稱爲紋理映射。這是從surface函數(R2011b)一個代碼示例:

load clown 
surface(peaks,flipud(X),... 
    'FaceColor','texturemap',... 
    'EdgeColor','none',... 
    'CDataMapping','direct') 
colormap(map) 
view(-35,45) 

此示例從「peppers.png」加載RGB圖像,並將其映射到汽缸:

imgRGB = imread('peppers.png'); 
[imgInd,map] = rgb2ind(imgRGB,256); 
[imgIndRows,imgIndCols] = size(imgInd); 
[X,Y,Z] = cylinder(imgIndRows,imgIndCols); 
surface(X,Y,Z,flipud(imgInd),... 
    'FaceColor','texturemap',... 
    'EdgeColor','none',... 
    'CDataMapping','direct') 
colormap(map) 
view(-35,45) 

事情甚至與warp簡單功能(自帶圖像處理工具箱)爲納坦建議:

imgRGB = imread('peppers.png'); 
[imgRows,imgCols,imgPlanes] = size(imgRGB); 
[X,Y,Z] = cylinder(imgRows,imgCols); 
warp(X,Y,Z,imgRGB);