以下代码产生错误:
警告: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 并且除了警告之外,代码似乎可以按预期运行。