Изменение прозрачности изображений, закрашенных фигур или поверхностей

В этом примере показано, как изменить прозрачность изображений, закрашенных фигур и поверхностей.

Прозрачность для всех объектов в осях

Значения прозрачности называются альфа-значениями. Используйте alpha функция для установки прозрачности для всех изображений, закрашенных фигур и поверхностных объектов в текущей системе координат. Задайте значение прозрачности между 0 (полностью прозрачный) и 1 (полностью непрозрачный).

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

Figure contains an axes. The axes contains 3 objects of type patch.

Прозрачность для отдельных поверхностей

Прозрачность поверхности определяется ее AlphaData свойство. Установите альфа- данные как скалярное значение или матрицу значений, задающих прозрачность каждой вершины поверхности. The FaceAlpha свойство указывает, как прозрачность граней поверхности определяется из вершинной прозрачности.

[X,Y,Z] = peaks(20);
s2 = surf(X,Y,Z);

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

Figure contains an axes. The axes contains an object of type surface.

Прозрачность для отдельных изображений

Как и поверхности, прозрачность изображения также определяется его AlphaData свойство. Для изображений установите альфа-данные как скалярное значение или матрицу значений, задающих прозрачность каждого элемента в данных изображения.

Для примера используйте прозрачность, чтобы наложить два изображения. Сначала отобразите изображение Земли.

earth = imread('landOcean.jpg');
image(earth)    % display Earth image
axis image

Figure contains an axes. The axes contains an object of type image.

Затем добавьте слой облака к изображению Земли с помощью прозрачности.

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

Figure contains an axes. The axes contains 2 objects of type image.

Прозрачность для отдельных закрашенных фигур

Прозрачность закрашенной фигуры определяется его FaceAlpha и FaceVertexAlphaData свойства. Для постоянной прозрачности по всему патчу установите FaceVertexAlphaData к константе между 0 (полностью прозрачная) и 1 (полностью непрозрачная), и установите FaceAlpha свойство к 'flat'.

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

Figure contains an axes. The axes contains an object of type patch.

Для прозрачности, которая изменяется между закрашенной фигурой, установите FaceVertexAlphaData в матрицу значений, задающих прозрачность в каждой вершине или каждой грани закрашенной фигуры. The FaceAlpha свойство затем указывает, как прозрачность грани определяется с помощью FaceVertexAlphaData. Если альфа- данные заданы для вершин, FaceAlpha должно быть установлено в 'interp'.

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

Figure contains an axes. The axes contains an object of type patch.

Прозрачность с отображением текстуры

Отображение текстур преобразует 2-D изображение в 3-D поверхность. Изображение может быть сопоставлено с поверхностью путем установки CData свойство к данным изображения и установка FaceColor свойство, которое должно быть 'texturemap'.

Этот пример создает 3-D вид земли и облаков. Он создает сферические поверхности и использует сопоставление текстур для отображения изображений земли и облаков на поверхности.

[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

Изображения, используемые в этом примере, взяты из Visible Earth.

Кредит: Изображение Пространства рейсов НАСА им. Годдарда Рето Штёкли (поверхность суши, мелководье, облака). Улучшения Роберта Симмона (цвет океана, композитинг, 3D глобусы, анимация). Данные и техническая поддержка: MODIS Land Group; Группа поддержки научных данных MODIS; Группа «МОДИС Атмосфера»; MODIS Ocean Group Дополнительные данные: Центр обработки данных USGS EROS (топография); USGS Наземный центр дистанционного зондирования Флагстафф (Антарктида); Программа оборонного метеорологического спутника (городские огни).

См. также

| |