将图像序列显示为重叠堆栈

时间:2014-07-29 09:57:02

标签: image matlab

对于演示,我想要显示一系列图像(基本上是电影的帧),每个帧显示在后面并相对于前一个偏移。

只有第一帧完全可见,但你会看到其余部分帧。

可以在matlab或某些(免费软件)程序中完成吗?

example

1 个答案:

答案 0 :(得分:1)

假设您的图像序列存储在单元格数组seq中,并且所有图像的大小相同。
这是你的想法吗?

sz=size(seq{1}); %// assuming all frames are of the same size
m = 20; %// size of "margin" to show from each frame
n = numel( seq ); %// number of frames in sequence
fh = figure('Position', [100 100 sz(2)+(n-1)*m sz(1)] ); 
ah=axes('Units','pixels','Position', [ 0 0 sz(2)+(n-1)*m sz(1)] ); 
hold on;
%// show frames from last to first
for fi=n:-1:1
    imshow( seq{fi}, 'Parent', ah, 'XData', (fi-1)*m + (1:sz(2)));
end

我使用XData imshow属性来相互移动框架。
您可能还希望展开YData以创建垂直班次......