2018年11月5日

用imagej加手機前鏡頭偵測脈搏






有很多手機app都可以利用手機的前後鏡頭來偵測脈搏,只要手指蓋住鏡頭,App可以自動偵測出脈搏。其原理是計算每幀影格的像素強度變化,可能做些濾波和數值處理。

其實好幾年前就想自己寫個程式來偵測看看,但是當時對於電腦視覺根本不熟,現在想想其實imagej就可以做處理了。

讀入影像
1.使用fiji,先在Help/Update..,更新imagej,然後在Imagej Updater的視窗左下角選擇Manager Update sites,勾選FFMPEG,然後Apply Changes。這會加入一個匯入mp4影像的外掛。安裝後重新啟動fjij



2.開啟fiji,在File/Import/Movie(ffmpeg),把拍攝的影片匯入成stack。
3.由於影片的前後不一定是需要的部份,比方說還沒拍到手指,或是手指已經離開。因此需要剪接stack。不過imagej對於stack內的slices刪除不是很好用(或者是說我還沒找到好方法),所以建議是用複製影格的方式來做,比方說第10影格到第90影格才是需要的部份,那就在Image/Duplicate...把要的影格複製出來成一個stack。

繪製像素強度變化圖(即脈搏圖)
1.利用方框選取工具,然後選擇Image/Stack/Plot z-axis profile,即可以畫出如下圖的脈搏圖




如果不嫌費工夫,也可以把stack在分離出不同色頻來分析,例如這個是分析R Channel的強度變化,雜訊會少很多。方法有點複雜
1.利用Image/Type/RGB Stack,可以把原始的stack分離出不同的色頻,然後再用Image/Stack/Plot z-axis profile來繪製。




同樣也可以分離出HSB,這個是亮度B( brightness )的圖



以下是處理過程的教學影片