2014年4月20日

imagej將時間資料視覺化

昨天看Make雜誌時,看到第27期有篇Visualizing With ImageJ,講的是如何用imagej將資訊視覺化的處理方法。這篇在imagej的官網上也有電子檔。

為了讓自己更熟悉這些處理方式,所以我就到youtube 找了一些影片來學習怎麼處理。

材料是這個影片(草履蟲游來游去),要把裡頭蟲體隨時間泳動的空間資訊轉化為用一張圖來呈現。


這種方法之前用startrail這種星軌軟體作過,這回則是用imagej來實踐!

影片轉圖片
imagej內建可以匯入avi,不過這些youtube上下載的影片格式都是mp4,所以我得先用別的軟體轉檔。這個任務當然交給ffmpeg,如果是windows下,可以用阿特拉斯的Extra.Movie to Gif來完成。

文字列的轉檔方式如下
ffmpeg -i source.mp4 -ss 00:00:00 -t 00:50:00 -r 3 output%03d.jpg

-ss是起始時間,-t是經過時間,若是要全部影片都轉檔,這兩個值不用打也沒關係
-r 指的是fps,預設值是25,也就是說若有10秒的影片,則是可以轉出10x25張的圖片。-r 後面的數字可以使用分數,例如1/2,這就表示每兩秒才轉出一張圖片,所以10秒的影片會轉出5張圖片。


匯入Imagej
匯出圖片之後,開啟imagej,用File/import/Image Sequence...,選取這系列圖片的第一張,就可以直接把其他圖片都匯入成一個stack。

若是匯入的影片太大,可以用 Image/Crop 直接裁切整個Stack的圖片。

然後用 Image/Stacks/Z Project... ,設定Projection Type為 Min Intensity,這樣就可以產出草履蟲的移動軌跡了。




如果Stack裡頭的圖片太多,可以用Fiji 裡的Image/Stacks/Reslice Z 重新切過把stack裡頭的圖片弄掉。


不同的數量,做出來的圖片就不同喔。左下角是104張圖片做的,右下角則是52張圖片做的。


Montage
資訊視覺化的另外一種方式,則是做成組圖,利用以下指令 Image/Stacks/Make Montage...
然後設定欄列數量和邊框,這樣就可以了。



Kymograph
另外一種資訊視覺化的方式,我覺得實在很有趣。在原作者的文章中,他想知道他家的鳥孵蛋和覓食的時間分佈狀況,所以就拍了一整天的影片,然後把影片匯入imagej之後,同樣轉成一個Stacks,再把蛋區的部份crop了一長條做成Montage,這樣就可以很清楚的知道,那隻親鳥孵蛋和覓食的時間分佈了。

我仿照他的例子,來作一個草履蟲的空間與時間的分佈圖,下圖是在原本的Stacks中切了一長條的位置,然後再把Stacks變成Montage。這樣就可以知道那個區域在什麼時候會有草履蟲來了。



同樣的作法,我也拿來某個日出到日落的縮時攝影影片匯入成Stack之後,然後在空中切一小條之後,做成一張組圖,這樣就可以很清楚的知道天色的變化了。



這種將帶有時間資訊的影像扁平化的方式,在日本的定點觀測計劃中,就有看到不少例子,無論是比較全年的日照時間,或是稻田顏色變化等,長期的資料累積下來,看到的樣貌都是非常迷人的。


除了本篇講的幾種視覺化方式,原作者還提出了其他幾種資訊

  • IMAGE CALCULATOR:TWO IMAGES COMBINED
  • Z-PROJECT A STACK:LIGHTNING FLASH
  • COLOR-CODING TIME: STAR PATHS ACROSS THE NIGHT SKY
  • IMAGE PROCESSING WITH A SPREADSHEET