0

以下代码产生错误:

警告:AlphaData 的维度必须是 1x1,或者必须与 CData 匹配。

问题是 CData 是彩色图像,因此具有 3 维,而 alphadata 是透明数据 abd 的矩阵,因此具有 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 的信息


double 或 uint8 的 AlphaData m×n 矩阵

透明度数据。指定对象每个面或顶点的透明度的非 NaN 值矩阵。AlphaData 可以是 double 类或 uint8 类。

MATLAB 软件通过以下方式之一确定透明度:

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

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

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


C数据矩阵 | m×n×3 数组

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

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

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

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

请注意,未定义图像 CData 中 NaN 的行为。有关对图像使用透明度的信息,请参阅图像 AlphaData 属性。


AlphaData 和 CData 怎么可能有 smae 维度?

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

4

1 回答 1

0

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

于 2012-07-13T20:45:46.427 回答