2013-07-29 37 views
0

由于我无法找到自己和相关主题的解决方案,我想问问有没有人可以给我一些提示如何解决以下问题:Matlab:在3D图中显示具有特定颜色编码的2D投影作为RGB图像

在三维曲线图,可以通过分配的功能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'); 

函数contourf的参数w1w3定义了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'); 
其中从RGB图像szRGBimage经由

szIndexedImage=rgb2ind(szRGBimage,hsv); 

hsv获得的索引图像szIndexedImage

在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". 

非常感谢您的任何想法,可以帮助我解决这个问题。

最好的问候,

约阿希姆

+0

现在错误再也没有出现。谢谢!但是,2D投影仍未在3D图中显示。可能需要额外分配3D切割的手柄(如上例中的h2)到3D坐标系。可能我目前的3D代表代码为ha = gca; set(gca,... 'XLim',sort([w1(1),w1(end)]),... 'YLim',sort([w3(1),w3(end)]) ,... 'ZLim',sort([w5(1),w5(end)])); daspect([100 100 4]); 查看(3); camproj(projection_type);干扰显示2D投影。有没有人有一个想法如何解决这个问题? – Joachim

回答

0

您调用带有输出参数mapshow “[〜,H 2]”,但只mapshow返回一个输出(手柄)。因此,虽然contourf这意味着“不返回轮廓矩阵,返回句柄”,与地图显示它没有任何意义。

只要用h2代替[〜,h2]就可以消除你当前得到的错误。