【问题标题】:How show two images in a figure如何在一个图中显示两个图像
【发布时间】:2014-04-29 18:07:25
【问题描述】:

我需要使用一个图形显示两个 3D 图像,我使用了 alpha(0.5),但我的颜色图有问题 这是我的代码:

%%%%%%%%%%%%%%%%%%%%%%%%%%% liver 1 %%%%%%%%%%%%%%%%%%%%%%
liver_surf1=isosurface(nii.img(:,end:-1:1,:),0.05);
V=liver_surf1.vertices;
F=liver_surf1.faces;
t=trisurf(F,V(:,1),V(:,2),V(:,3),'facealpha',0.5,'FaceColor',colormap([1 0 0])); % red color
shading flat;
hold on;
%%%%%%%%%%%%%%%%%%%%%%%%%%% liver 2 %%%%%%%%%%%%%%%%%%%%%%
liver_surf=isosurface(nii.img(:,end:-1:1,end:-1:1),0.05);
V2=liver_surf.vertices;
F2=liver_surf.faces;
t2 = trisurf(F2,V2(:,1),V2(:,2),V2(:,3),'facealpha',0.5,'FaceColor',colormap([0 1 0])); % green color

这是结果:

然后问题是两个图像颜色都变为绿色,如果我单独运行是可以的,但我不能将两个图像组合在一起。所以在我添加“shading flat”之后它变成了这样:

我怎样才能同时拥有红色和绿色? 谢谢

这是两个不同的肝脏,应该在图像中显示为透明的,因为它们有交集。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    我很惊讶代码甚至可以工作(你有什么版本的 MATLAB?),我预计 trisurf 会出错。无论如何,colormap 是一个设置图像颜色图的函数,而不是单个表面的颜色图。您将颜色图设置为绿色,所有的东西都是绿色的。

    您需要将颜色数据 C 设置为与 z 大小相同的单个值,然后调整颜色图以提供正确的颜色。这是一个简单的方法:

    trisurf(F,V(:,1),V(:,2),V(:,3),zeros(size(V(:,3))));  % Cdata = 0
    trisurf(F2,V2(:,1),V2(:,2),V2(:,3),,ones(size(V2(:,3)))); %Cdata = 1
    colormap([1 0 0; 0 1 0]);
    

    这基本上形成了两个表面,一个所有颜色值都为零,另一个所有颜色值都为 1。 colormap 调用更改了颜色图,因此它只有红色(零​​)和绿色(一)两个值。 (如果添加 facealpha 等也应该有效)。

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 2013-10-04
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多