Matlab:AlphaData的警告尺寸必须与CData匹配

时间:2012-07-13 20:10:33

标签: image matlab

以下代码产生错误:

  

警告:AlphaData的尺寸必须为1x1,或者必须与CData匹配。

问题是CData是彩色图像,因此有3个维度,alphadata是透明度数据的矩阵,因此有2维。

red = cat(3, ones(512), zeros(512), zeros(512));
mask = [];
bounds = data(currow,1:6);
if slice >= bounds(5) && slice <= bounds(6)
    mask = zeros(size(segmask,1),size(segmask,2));
    mask(bounds(1)-4:bounds(2)+4,bounds(4)+4:bounds(4)+5) = 1;
    mask(bounds(2)+4:bounds(2)+5,bounds(3)-4:bounds(4)+4) = 1;
end
imshow(low(:,:,slice),[WL-WW/2 WL+WW/2])
hold on
h = imshow(red);
set(h, 'AlphaData', 0.3*mask);
hold off

以下是Matlab文档中关于AlphaData和CData的信息


  

AlphaData m-by-n矩阵的double或uint8

     

透明度数据。一个非NaN值矩阵,指定了   对象的每个面或顶点的透明度。 AlphaData可以   属于班级双或uint8。

     

MATLAB软件确定以下之一的透明度   方法:

     

使用AlphaData的元素作为透明度值   (AlphaDataMapping设置为none)

     

使用AlphaData的元素作为当前alphamap的索引   (AlphaDataMapping设置为直接)

     

将AlphaData的元素缩放到最小值和最小值之间   轴的最大值ALim属性(AlphaDataMapping设置为   缩放,默认)


  

CData的   矩阵| m-by-n-by-3阵列

     

图像数据。指定颜色的矩阵或3-D值数组   定义图像的每个矩形区域。图像(C)分配   C到CData的值。 MATLAB确定图像的颜色   三种方式之一:

     

使用CData的元素作为当前色彩图的索引(   默认)(CDataMapping设置为直接)

     

将CData的元素缩放到值之间   min(get(gca,'CLim'))和max(get(gca,'CLim'))(CDataMapping设置为   缩放)

     

将CData的元素直接解释为RGB值(真彩色   规范)

     

请注意,未定义图像CData中NaN的行为。见   image AlphaData属性,用于获取有关使用透明度的信息   图像。


AlphaData和CData怎么可能有这样的尺寸?

如果红色是512x512x3且掩码是512x512,除了警告之外,代码似乎按预期运行。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。由于If语句,变量mask没有创建连接。