2013-05-10 138 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);