在MATLAB中打开和查看32位tiff图像序列

时间:2015-05-26 13:06:41

标签: matlab video stack bit tiff

我有一个单独的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())方式将此作为堆栈打开?

由于

1 个答案:

答案 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文件的情况,需要以适合存储格式的方式提取帧,但这是视频重播的单独问题。