Image MATLAB:从uint8图像的单元阵列创建电影
我有20个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
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{:});