[英]Matlab: Warning Dimensions of AlphaData must match CData
以下代码产生错误:
警告: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设置为none)
使用AlphaData的元素作为当前alphamap的索引(将AlphaDataMapping设置为direct)
将AlphaData的元素缩放到介于轴ALim属性的最小值和最大值之间(AlphaDataMapping设置为scaled,这是默认值)
CData矩阵| m×n×3阵列
图像数据。 值的矩阵或3-D数组,用于指定定义图像的每个矩形区域的颜色。 image(C)将C的值分配给CData。 MATLAB通过以下三种方式之一确定图像的着色:
使用CData的元素作为当前颜色图的索引(默认)(将CDataMapping设置为direct)
将CData的元素缩放到介于min(get(gca,'CLim'))和max(get(gca,'CLim'))之间的范围内(CDataMapping设置为scaled)
将CData的元素直接解释为RGB值(真彩色规范)
请注意,未定义图像CData中NaN的行为。 有关在图像上使用透明度的信息,请参见image AlphaData属性。
AlphaData和CData如何可能具有smae尺寸?
如果红色为512x512x3,掩码为512x512,则除了警告外,该代码似乎还可以正常工作。
我发现了我的问题。 由于使用了If语句,因此无法创建可变mask
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.