2007年9月11日

以ImageJ計算米象移動速度

在網路上看到有個做米蟲(擬穀盜)的科展,他們研究米蟲速度的方式是:在A4的白紙畫上最大半徑8 公分,間隔0.5 公分之同心圓,將擬穀盜放入圓心中,待其開始爬行後,計時10 秒,用紅筆點出擬穀盜所在位置並記錄離圓心的距離。
研究結果是,在10秒中擬穀盜多數的距離在3~5公分的區間中。

反正我家裡米蟲也很多(主要是米象),哪我也來看看米象的速度吧!不過我用ImageJ來做。

整個流程是先用數位相機拍一段米象移動的短片,然後用ImageJ去統計米象移動的距離,只要確認經過的時間,就能夠知道米象的速度了。

我用NIKON s3拍攝的短片格式是mov檔,本來ImageJ是可以開啟mov檔,不過不知道哪個環節有問題,所以無法開啟mov檔,出現的錯誤訊息是
Plugin or class not found:'QT_dovie_Opener" (java.lang.NoClassDefFoundError.quicktime/qd/QDConstants)

明明已經裝好Plugins啦,不解。不過沒關係,山不轉路轉,我把mov檔轉成其他格式,照樣能處理。


在Linux的命令列用ffmpeg把MOV轉成gif,我把輸出的gif,命名成bug.gif
ffmpeg -i inputfilename.mov -pix_fmt rgb24 outfilename.gif

另外為了知道這個Mov的播放速率(每秒幾個影格),所以也在命令列用mplayer去找他的速率資訊
mplayer -identify movie-filename -nosound -vc dummy -vo null

出現這串文字
VIDEO: [jpeg] 160x120 24bpp 15.000 fps 0.0 kbps ( 0.0 kbyte/s) 15.000fps代表每秒有15個Frame(影格)
然後就是用ImageJ去開啟轉檔好的gif檔,這裡要注意因為這個gif是個動畫檔,所以用
File-->Inport-->Animated Gif


調整成灰階模式
Image-->Type--8 bit


開啟Threshold,把非蟲的部份通通處理掉(原本打算用Image Calcalator去做處理掉背景,不過不太成功)
Image-->Adjust-->Threshold

按下OK,把所有的圖片都處理掉



接著要再用圈線的工具把多餘的範圍圈起來,然後把線外的範圍刪掉
Edit -->Clear Outside




就會變成這個模樣


再來要變為背景為白色、前景為黑色的圖案
Edit-->Invert


經過Set Scale校正比例尺後,再使用MultiTracker,產生Results視窗。
雖然我的影片一共有132格,但是只有在前115格有出現那隻蟲,所以在Results裡只有前115格有資料。
統計結果:前115格一共移動了47.54mm



一開始我已經知道我的影片速率是每秒15格,現在知道了115格移動了47.54mm。
簡單的數學統計後,就可以知道我家的這隻米象移動速度約為每秒6.2mm!