【问题标题】:Mapping image into cylinder or sphere shape?将图像映射成圆柱体或球体?
【发布时间】:2013-05-04 17:05:32
【问题描述】:

假设我有黑白图像,用 imread() 命令读取并保存到矩阵 A 中。

我想以圆柱形状输出/绘制此矩阵 A 图像。我知道如何在 MATLAB 中绘制圆柱体,但是如果我想将图像放在圆柱体上或以圆柱体形状绘制图像,我不知道该怎么做。任何帮助将不胜感激。谢谢。

我通过谷歌搜索找到了这个网站。 http://www.flashandmath.com/advanced/rolls/cylin.html 这正是我想做的,但我需要在 MATLAB 中这样做。

【问题讨论】:

标签: image matlab image-processing


【解决方案1】:

该技术称为纹理映射。这是来自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)

正如 natan 建议的那样,使用 warp 函数(图像处理工具箱附带)让事情变得更加简单:

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

【讨论】:

    猜你喜欢
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多