Matlab:在3D绘图中显示具有特定颜色编码的2D投影作为rgb图像

时间:2013-07-29 09:25:46

标签: image matlab graphics 3d 2d

由于我无法找到自己及相关主题的解决方案,我想问一下是否有人可以给我一些提示如何解决以下问题:

在3D绘图中,可以通过将函数contourf的结果分配给图形句柄来将2D投影显示为(填充)等高线图,如下面的matlab代码片段所示:

[~,h2]=contourf(w1,w3,sz,level_list2,'LineWidth',1);

h2=findobj(h2,'type','patch');

for j=1:length(h2),

     zd=w5(1).*ones(size(get(h2(j),'XData')));

     set(h2(j),'ZData',zd);

end

set(h2,'FaceLighting','none');

函数w1的参数w3contourf定义了3D图的x轴和y轴,而sz包含三个图的投影 - 尺寸数据设置在(x,y)平面上。

然而,由于我想对2D投影使用特定的颜色编码,(填充的)等高线图似乎不是合适的解决方案。 相反,在应用所需颜色编码的过程之后,2D投影被给出为RGB图像。

因此我尝试使用函数mapshow,这在这种情况下似乎更合适。然后相应的代码片段读取

[~,h2]=mapshow(w1,w3,szIndexedImage,hsv);

h2=findobj(h2,'type','patch');

for j=1:length(h2),

    zd=w5(1).*ones(size(get(h2(j),'XData')));

    set(h2(j),'ZData',zd);

end

set(h2,'FaceLighting','none');

索引图像szIndexedImage是通过

从rgb图像szRGBimage获得的
szIndexedImage=rgb2ind(szRGBimage,hsv);

hsv是HSV颜色贴图。

运行程序会出现错误消息

Error in `mapshow` (line 214)
error(nargchk(1,Inf,nargin,'struct'))

Output argument "varargout" (and maybe others) not assigned during call to
"/usr/local/MATLAB/R2012a/toolbox/map/map/mapshow.m>mapshow".

非常感谢任何有助于我解决此问题的想法。

致以最诚挚的问候,

约阿希姆

1 个答案:

答案 0 :(得分:0)

您正在使用输出参数“[〜,h2]”调用mapshow,但mapshow仅返回一个输出(句柄)。因此,虽然使用contourf这意味着“不返回轮廓矩阵,返回句柄”,使用mapshow它没有意义。

用h2替换[〜,h2]应该会删除你当前得到的错误。