我有一个单独的image.tiff文件,一个视频序列导出为32位tiff。我想在MATLAB中将其作为图像堆栈打开,并能够逐帧导航。我相信implay()
是在matlab
中执行此操作的方法。如果我尝试这样做,我会"Error occurred while attempting to read file: image.tiff Details of error: Incorrect chunk size information in AVI file."
implay()
仅使用.avi
格式吗?在使用.avi
之前,是否需要将此32 tiff转换为implay()
?或者是否有其他(non-implay()
)方式将此作为堆栈打开?
由于
答案 0 :(得分:1)
您可以尝试创建图像堆栈并使用 implay 进行查看。该函数接受多种类型的参数,对于灰度图像,应该提供大小为N x M x K的数组,其中K是帧数,(N,M)是图像大小。对于彩色图像,需要一个大小为NxMx3xK的数组。
要为具有多个文件的案例创建数组,每个文件包含一个框架,您有多个选项,最简单的可能是使用 cat 函数进行连接:
image_stack = [];
for i = 1: num_frames
curr_image = imread(sprintf('frame_%04d_color.tif', i));
image_stack = cat(4, image_stack, curr_image);
end
implay(image_stack);
这个解决方案比预先分配 image_stack 要慢一些。
对于具有单个TIFF文件的情况,需要以适合存储格式的方式提取帧,但这是视频重播的单独问题。