2016年8月11日

Imagej估算咖啡豆滾筒的豆子數量

這篇純粹是筆記,路過不用看


有網友寫信問,他有製作烘咖啡豆的滾筒,想知道在不同段的位置,咖啡豆是否均勻。

看了他附上的高速攝影影片,其實我覺得很難算,因為目標物很小,而且特徵不容易辨別,但是我還是試試看去處理。以下純粹只是我的製作筆記。


首先,要用Imagej處理高速攝影的MOV影片,最好是把影片轉成png檔來處理。

ubuntu下用ffmpeg來轉檔
安裝ffmpeg的方法如下。如果是2016最近安裝的Ubuntu,應該不用再安裝ffmpeg,因為據說此軟體又重回ubuntu
http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu

利用melt可以一格一格播放MOV檔,確認要擷取哪個時間的影片做成png
melt coffee.MOV

擷取影片成圖片的命令列如下
ffmpeg -i coffee.MOV  -r 0.25 output_%04d.png
r 0.25 四秒鐘擷取一張圖
r 1 一秒鐘擷取一張
r 0.1 十秒鐘擷取一張

ffmpeg -i coffee.MOV -ss 00:00:03 -t 1 output_%4d.png
三秒開始,擷取一秒鐘

ffmpeg -i coffee.MOV -ss 00:00:03 -t 00:00:04 output_%4d.png
三秒開始,擷取到四秒鐘

windows下的話,可以用Extra.Movie to Gif這套軟體
http://www.atlas-zone.com/software/

把圖片匯入imagej成為一個stack,這邊有說怎麼匯入
http://a-chien.blogspot.tw/2016/02/imagej_29.html


要看一個滾筒裡的豆子有多少,我想到的是抓取物體移動軌跡。但是他有一些前提,主體和背景對比明顯,這樣才能用threshould分開。畫面中能和豆子產生明顯對比的部位,大概就只有中央橫桿那區大約10幾個像素高的區塊

所以接下來要切割出橫桿那區的畫面,然後用threshold抓取出豆子的輪廓之後,把畫面轉成黑白二色的binary影像,接著利用MTrack2去抓取物體軌跡
https://www.youtube.com/watch?v=fTcoO6jK5lA

如果不是要精確計數,我想也可以只算那塊區域在每個Frame裡的明暗面積變化

豆子經過時,畫面顏色會變暗,所以累計「一段時間內,該區畫面變暗的面積和」,這樣也能用來統計滾筒三區塊的豆子是否平均。

如果是三區塊的豆子數量是沒差異的,那麼三區變暗的面積也應該是一樣的

估算面積的方式用的是Analyze/AnalyzeParticles