Image MATLAB:从uint8图像的单元阵列创建电影

Image MATLAB:从uint8图像的单元阵列创建电影,image,matlab,video,image-processing,movie,Image,Matlab,Video,Image Processing,Movie,我有20个uint8类型的灰度图像存储在一个名为flow8的1x20单元数组中。我想从它们生成一部电影。我目前的做法是: % Generate images. for i = 1:20 flow8{i} = round(rand(100, 100)*255+1); end % Get into 4-D shape. n = size(flow8,2); matSize = size(flow8,1); imageStack = reshape(cell2mat(flow8),matSi

我有20个
uint8
类型的灰度图像存储在一个名为
flow8
的1x20单元数组中。我想从它们生成一部电影。我目前的做法是:

% Generate images.
for i = 1:20
    flow8{i} = round(rand(100, 100)*255+1);
end

% Get into 4-D shape.
n = size(flow8,2);
matSize = size(flow8,1);
imageStack = reshape(cell2mat(flow8),matSize,[],n);
imageStack = permute(imageStack, [1 2 4 3]);

% Create movie.
mov = immovie(imageStack, gray)
implay(mov)
在这里,我添加了一个图像生成循环,以使代码可编译

使用此代码,生成的电影只包含一条水平线

我需要做什么才能拍到一部合适的电影?还是有更好的方法从我的图像制作电影


我正在Windows 7上使用MATLAB R2015b Academical。

如果仔细查看代码,
flow8
1 x 20
。当您进行整形时,您可以使用以下方法计算
matSize

matSize = size(flow8, 1)
这个值是
1
,因为正如我们所说的,细胞阵列的形状是
1x20

相反,您可能需要每个图像的大小。在这种情况下,您需要索引到单元格数组中以获取值,然后获取该值的大小

不过,可能还有另一种(短得多)方法可以实现这一点,因此它使用
cat
沿第四维进行连接。然后避免所有的
重塑
置换
操作

imageStack = cat(4, flow8{:});

该死的。。。别再揍我了+1.我实际上将该行更改为
matSize=size(flow8{1},1)这就成功了。非常感谢你,@Suever!
imageStack = cat(4, flow8{:});