【问题标题】:IDL - Reshape 2D-Array to 3D-ArrayIDL - 将 2D 阵列重塑为 3D 阵列
【发布时间】:2015-04-09 04:33:51
【问题描述】:

在 IDL 中,我有一个包含不同时间(灰度)图像的数据立方体:datacube[w, h, frames]。现在我想使用 IDLFFVideoWrite 将该数据立方体转换为动画,但问题是,Put-Method 只吃排序帧 [3, w, h] 的帧。

如何将我的数据立方体的单个帧转换为 IDLffVideoWrite::Put 会吃掉的合适帧?

【问题讨论】:

    标签: image video rgb grayscale idl


    【解决方案1】:

    您有灰度图像,因此我们需要将所有三个波段(R、G 和 B)都制作为一个波段的副本。 REBINREFORM 是用于“处理维度”的工具:

    frame = rebin(reform(datacube[*, *, i], 1, w, h), 3, w, h)
    

    只要datacube是字节数据,frame就适合IDLffVideoWrite::put

    更新:编辑答案,因为我在评论中的格式选项有限。

    所以你实际上有一个这种形式的datacube

    datacube[w, h, 3 * n_frames]
    

    所以你应该对datacube这样做,以便于处理:

    datacube = transpose(reform(datacube, w, h, 3, n_frames), [2, 0, 1, 3])
    

    然后,要获得ith 帧,您可以这样做:

    frame = reform(datacube[*, *, *, i])
    

    【讨论】:

    • 非常感谢!只是另一个小问题,我已经重新格式化了我的数据立方体来处理我的数据,现在立方体包含 RGB 数据,但仍然是 datacube[w, h, frames] 的形式,例如帧 0 包含红色,帧 1包含绿色,第 2 帧包含蓝色,然后第 3 帧再次包含红色等。我现在如何在 Put-Method 的正确帧中有效地格式化它?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-03
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 2016-11-08
    相关资源
    最近更新 更多