MATLAB中同一图中的图像和网格

时间:2012-08-30 13:41:59

标签: image matlab plot mesh

已经讨论过这个话题,但我没有成功。

我在MATLAB中有一个基本的网格图,显示在x,y,z轴上,我想在网格底部的地板上插入一个图像(jpg)。

2 个答案:

答案 0 :(得分:4)

只是为了支持@Dan的第一个建议(在发布时看同样的事情)的例子,下面是如何使用强度值作为表面灰度来覆盖或底层图像:

[X,Y,Z] = peaks(256); % surface
I = double(imread('cameraman.tif')); % image  

figure;
mesh(X, Y, Z, I); % overlay image as texture
colormap gray; hold on; 
c = 1.5*min(Z(:)); % scaling Z- location of image 
mesh(X, Y, c*ones(size(Z)), I) % underlay image as a constant-height surface

enter image description here

然而surf设置为'texturemap'(链接答案,正如他的建议)是一种更光滑的方法。

答案 1 :(得分:2)

如果它是灰度图像,那么也许您可以使用surf(X,Y,Z,C)显示图像,其中X和Y将是像素坐标,也对应于网格底部的地板(即使用{{1创建它们) }},Z将是meshgrid,C将是像素强度。然后使你的颜色条灰度。我不是100%肯定我会假设你可以使用像zeros(n)这样的东西在相同的数字上绘制冲浪和网格。

在使用我的上述建议后,我发现了这一点:How can I plot an image (.jpg) in MATLAB in both 2-D and 3-D?。看起来hold on是可行的方法,但不是使用C参数,而是可以为其提供可以是图像的纹理贴图。而且你只需要指定图像角落的X,Y,Z坐标就可以了。