2011-10-22 79 views
1

對於我的下一個項目,我開始分析通過相機測量脈搏的應用程序(您將手指按在相機上並獲取脈搏信息)。如何從相機獲取反饋?

我得出結論,應用程序在光照的幫助下從相機接收數據。如何做到這一點?你能指示我去任何我應該調查的地方嗎?

如果有人願意幫助我解釋脈搏測量應用程序是如何工作的?我無法在網絡上找到有關此主題的任何文檔。

預先感謝

回答

1

AFAIK此類應用正在使用的Camera的預覽模式。

使用方法setPreviewCallBack(..)(當然startPreview()的),則可以註冊自己偵聽器接收連續地從包含當前可見圖像的相機調用:

onPreviewFrame(byte[] data, Camera camera) 

的圖像數據被包含在數據字節陣列中。數據格式可以通過setPreviewFormat()進行設置。例如,使用這些數據可以處理圖像,並在圖像中的某個點降低它的亮度。隨着時間的推移,圖像亮度應該顯示脈衝。

我不認爲在Android運行時默認情況下可以使用必要的圖像算法,因此您必須開發自己的算法或查找可用於Android的第三方庫。

+0

因此,具有最低亮度的圖像是當血液通過鏡頭並且皮膚靠近照相機單元時發生脈衝時拍攝的圖像?我如何檢查圖像亮度?它是否作爲參數傳遞? – sandalone

+1

正如我寫的,你需要一些算法來處理圖像。這些算法在Photoshop中像濾鏡和插件一樣工作 - 它們修改圖像數據。自己編寫圖像算法並不容易,因爲您必須直接處理像素值。您必須解碼圖像數據字節數組。默認情況下,它採用NV21格式編碼,格式爲[YUV 4:2:0](http://www.fourcc.org/yuv.php#NV21)。 – Robert

2

爲了補充Robert從非編程角度的回答(並且自從您提問以來),脈搏測量應用程序基於Pulse Oxymetry

這個想法是測量紅光的吸光度,當含氧血液通過指尖時,紅光的吸光度會有所不同。當發生這種情況時,吸光度將會出現峯值,您只需測量峯值的登記次數,併除以相應的時間範圍即可計算出心臟頻率。

恕我直言,在移動設備上執行它不是相當可靠的,因爲它需要良好的照明條件和紅外脈衝,並有幾個因素使這個任務十分艱鉅:

1)有些手機可能沒有相機

2使用閃光燈LED燈右)有些手機可能無法在所有

3有閃光燈)您沒有訪問紅外數據。

4)手機必須靜止不動,否則圖像會不斷變化,使得亮度測量不可靠。