Являются ли эти изображения черно-белыми с простыми функциями в «пустом» поле или в оттенках серого с более плотной информацией?
Я вижу несколько подходов.
Вы можете использоватьmovie () для отображения последовательности изображений в виде анимации.
Для статического представления разреженных, простых данных вы можете построить каждое изображение как отдельный слой на одном рисунке, давая каждому слою свой цвет дляпередний план и использование AlphaData, чтобы сделать фон прозрачным, чтобы все шаги в последовательности просвечивали.Градиент цветов соответствует положению в последовательности изображений.Вот пример.
function plotImageSequence
% Made-up test data
nLayers = 9;
x = zeros(100,100,nLayers);
for i = 1:nLayers
x(20+(3*i),:,i) = 1;
end
% Plot each image as a "layer", indicated by color
figure;
hold on;
for i = 1:nLayers
layerData = x(:,:,i);
alphaMask = layerData == 1;
layerData(logical(layerData)) = i; % So each layer gets its own color
image('CData',layerData,...
'AlphaData',alphaMask,...
'CDataMapping','scaled');
end
hold off
Непосредственно показывать траекторию движения, которую "линия" вырезает, сложно с растровыми данными, потому что Matlab не будет знать, какие "перемещенные" пиксели в двух последующих изображениях связаны с каждымДругой.Не думаете ли вы, что у вас есть базовые векторные данные для геометрических объектов на изображениях?Plot3 () может позволить вам показать их движение со временем в качестве оси z.Или вы можете использовать обычный plot () и некоторые ручные настройки, чтобы построить пути всех контрольных точек или вершин в геометрических объектах.
РЕДАКТИРОВАТЬ: Вот вариант, который использует patch () для рисованиякаждый пиксель представляет собой маленький многоугольник, плавающий в пространстве на уровне Z своего индекса в последовательности изображений.Я думаю, что это будет больше похоже на «поверхностные» графики стиля, которые вы просите.Вы можете использовать свойство FaceAlpha, чтобы сделать плотные графики более четкими.
function plotImageSequencePatch
% Made-up test data
nLayers = 6;
sz = [50 50];
img = zeros(sz(1),sz(2),nLayers);
for i = 1:nLayers
img(20+(3*i),:,i) = 1;
end
% Plot each image as a "layer", indicated by color
% With each "pixel" as a separate patch
figure;
set(gca, 'XLim', [0 sz(1)]);
set(gca, 'YLim', [0 sz(2)]);
hold on;
for i = 1:nLayers
layerData = img(:,:,i);
[x,y] = find(layerData); % X,Y of all pixels
% Reshape in to patch outline
x = x';
y = y';
patch_x = [x; x+1; x+1; x];
patch_y = [y; y; y+1; y+1];
patch_z = repmat(i, size(patch_x));
patch(patch_x, patch_y, patch_z, i);
end
hold off