【问题标题】:opening and viewing 32 bit tiff image sequence in MATLAB在 MATLAB 中打开和查看 32 位 tiff 图像序列
【发布时间】:2015-05-26 13:06:40
【问题描述】:

我有一个单一的 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 格式?在我可以使用implay() 之前,我是否需要将这 32 个 tiff 转换为.avi?或者是否有其他 (non-implay()) 方法可以将其作为堆栈打开?

谢谢

【问题讨论】:

  • for 循环中使用imshowpause 怎么样?
  • 是的,刚刚试过,效果很好,除了我希望能够在堆栈中向后移动
  • 如何使用暂停从键盘上获取一个键来选择是转到下一帧还是上一帧。

标签: matlab video stack bit tiff


【解决方案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 文件的情况,需要以适合存储格式的方式提取帧,但这是与视频重放不同的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多