以下代码产生错误:
警告: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,除了警告之外,代码似乎按预期运行。
答案 0 :(得分:0)
我发现了我的问题。由于If语句,变量mask
没有创建连接。