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

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

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

Значения прозрачности упоминаются как альфа-значения. Используйте функцию 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

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

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

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

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

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

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

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

earth = imread('landOcean.jpg');
image(earth)    % display Earth image
axis 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

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

Прозрачность закрашенной фигуры задана ее свойствами 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

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

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

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

Отображение текстур сопоставляет 2D изображение на 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

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

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

Смотрите также

| |