2015-04-03 94 views
0

在IDL中,我有一個datacube,包含不同時間的(灰度)圖像:datacube [w,h,frames]。現在我想使用IDLFFVideoWrite將該數據立方體轉換爲動畫,但問題是,放置方法僅吃掉排序幀[3,w,h]的幀。IDL - 將2D陣列重塑爲3D陣列

如何將我的datacube的單幀轉換爲適合的框架,IDLffVideoWrite :: Put會吃掉?

回答

0

你有灰度圖像,所以我們需要使所有三個波段(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]) 

然後,拿到i你可以這樣做:

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

非常感謝!只是另一個小問題,我已經重新格式化了我的數據存儲區以播放我的數據,現在立方體包含RGB數據,但仍然是數據存儲區[w,h,幀]的形式,例如第0幀包含紅色,第1幀包含綠色,第2幀包含藍色,然後第3幀再次包含紅色等。 我如何在Put-Method的正確幀中有效地對其進行格式化? – user3199134 2015-04-08 15:07:51

+0

再一次,非常感謝您的幫助,它完美的工作! – user3199134 2015-04-14 13:48:21