Matlab作图:更改图像、填充或曲面的透明度

本文最后更新于:2021年8月15日 上午

1、坐标区框中所有对象的透明度

透明度值称为 alpha 值。使用 alpha 函数设置当前坐标区范围内所有图像、填充或曲面对象的透明度。指定一个介于 0(完全透明)和 1(完全不透明)之间的透明度值。

1
2
3
4
5
6
7
8
9
10
11
t = 0:0.1:2*pi;
x = sin(t);
y = cos(t);

figure
patch(x,y,'r') % make a red circular patch
patch(x+0.8,y,'g') % make a green circular path
patch(x+0.4,y+0.8,'b') % make a blue circular path
axis square tight % set axis to square

alpha(0.3) % set all patches transparency to 0.3
img

2、个别曲面的透明度

曲面的透明度由其 AlphaData 属性定义。将 alpha 数据设置为用于指定曲面的每个顶点透明度的标量值或值矩阵。FaceAlpha 属性指示如何从顶点透明度确定曲面透明度。

1
2
3
4
5
[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);

s2.AlphaData = gradient(Z); % set vertex transparencies
s2.FaceAlpha = 'flat';
img

3、个别图像的透明度

与曲面一样,图像的透明度也由其 AlphaData 属性定义。对于图像,将 alpha 数据设置为用于指定图像数据的每个元素透明度的标量值或值矩阵。

例如,使用透明度覆盖两个图像。首先,显示地球的图像。

1
2
3
earth = imread('landOcean.jpg');
image(earth) % display Earth image
axis image
img

然后,使用透明度将云图层添加到地球图像。

1
2
3
4
5
6
7
8
clouds = imread('cloudCombined.jpg');
image(earth)
axis image
hold on

im = image(clouds);
im.AlphaData = max(clouds,[],3); % set transparency to maximum cloud value
hold off
img

4、个别填充的透明度

填充的透明度由其 FaceAlphaFaceVertexAlphaData 属性定义。若要在整个填充上实现单一的透明度,请将 FaceVertexAlphaData 设置为一个介于 0(完全透明)和 1(完全不透明)之间的常量,并将 FaceAlpha 属性设置为 'flat'

1
2
3
4
5
6
cla
p1 = patch(x,y,'r'); % make a red circular patch
axis square tight % set axis to square

p1.FaceVertexAlphaData = 0.2; % Set constant transparency
p1.FaceAlpha = 'flat' ; % Interpolate to find face transparency
img

若要在整个填充上实现可变的透明度,请将 FaceVertexAlphaData 设置为用于指定填充的每个顶点或每个面的透明度的值矩阵。然后,通过 FaceAlpha 属性指示如何使用 FaceVertexAlphaData 确定面的透明度。如果为顶点指定了 alpha 数据,则必须将 FaceAlpha 设置为 'interp'

1
2
p1.FaceVertexAlphaData = x';   % Set vertex transparency to x values
p1.FaceAlpha = 'interp' ; % Interpolate to find face transparency
img

5、包含纹理映射的透明度

纹理映射将二维图像映射到三维曲面上。通过将 CData 属性设置为图像数据并将 FaceColor 属性设置为 'texturemap',可将图像映射到曲面上。

此示例创建地球和云的三维视图。它创建球形表面,并使用纹理映射将地球和云的图像映射到曲面上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[px,py,pz] = sphere(50);                % generate coordinates for a 50 x 50 sphere

cla
sEarth = surface(py, px ,flip(pz));
sEarth.FaceColor = 'texturemap'; % set color to texture mapping
sEarth.EdgeColor = 'none'; % remove surface edge color
sEarth.CData = earth; % set color data

hold on
sCloud = surface(px*1.02,py*1.02,flip(pz)*1.02);

sCloud.FaceColor = 'texturemap'; % set color to texture mapping
sCloud.EdgeColor = 'none'; % remove surface edge color
sCloud.CData = clouds; % set color data

sCloud.FaceAlpha = 'texturemap'; % set transparency to texture mapping
sCloud.AlphaData = max(clouds,[],3); % set transparency data
hold off

view([80 2]) % specify viewpoint
daspect([1 1 1]) % set aspect ratio
axis off tight % remove axis and set limits to data range
img