【问题标题】:Matlab: displaying 2D projections with specific color encoding as rgb images in 3D plotMatlab:在 3D 图中将具有特定颜色编码的 2D 投影显示为 rgb 图像
【发布时间】:2013-07-29 09:25:46
【问题描述】:

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

在 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');

函数contourf 的参数w1w3 定义了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".

非常感谢任何可以帮助我解决此问题的想法。

最好的问候,

约阿希姆

【问题讨论】:

  • 现在该错误不再出现。谢谢!但是,2D 投影仍未显示在 3D 图中。可能需要将 2D 切割的手柄(例如上例中的 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 投影。有谁知道如何解决这个问题?

标签: image matlab graphics 3d 2d


【解决方案1】:

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

只需将 [~,h2] 替换为 h2 即可消除您当前遇到的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-20
    • 2013-10-21
    • 2014-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    相关资源
    最近更新 更多