2013-01-21 12 views
5

Eventuali duplicati:
Detecting heart rate using the cameraios rilevano la frequenza cardiaca

Ho bisogno la stessa funzionalità dell'applicazione frequenza cardiaca istantanea.

Il processo di base prevede che l'utente:

Posizionare la punta del dito indice delicatamente l'obiettivo della fotocamera. Applicare una pressione uniforme e coprire l'intera lente. Tienilo fisso per 10 secondi e ottieni la frequenza cardiaca. Questa operazione può essere eseguita accendendo il flash e osservando che la luce cambia mentre il sangue si muove attraverso il dito indice.

come posso iniziare

+0

dubito che questo può essere fatto perché il flash non è nello stesso luogo, come la fotocamera. Se copri la fotocamera con il dito, verrà visualizzato nero con il flash acceso o spento. – Fogmeister

+0

@Fogmeister Può funzionare, e fa abbastanza bene nell'app l'OP referenziata. – Jeremy1026

+0

Sono d'accordo con Jeremy. La prima volta che mi sono imbattuto in quell'app mi sono stupita di quanto fosse accurata. Se metti il ​​dito sul led e sull'obiettivo della fotocamera e metti un dito dell'altra mano sulla giugulare, puoi vedere che la luce attraverso il dito lampeggia con il tuo polso. –

risposta

4

mi piacerebbe iniziare utilizzando AVFoundation ad accendere la luce. Le risposte nel post link sottostante sono esempi di come fare questo:

How to turn the iPhone camera flash on/off?

Poi per quanto riguarda la rilevazione della variazione luce si spegne, probabilmente si può utilizzare GPUImage quadro di Brad Larson. Questo quadro comprende un paio di funzioni utili che si può essere in grado di utilizzare per raggiungere questo obiettivo, tra cui:

  1. GPUImageAverageLuminanceThresholdFilter
  2. GPUImageAverageColor
  3. GPUImageLuminosity

Utilizzando i filtri di cui sopra si dovrebbe essere in grado di misurare le variazioni di colore nel dito e monitorare gli intervalli di tempo tra le occorrenze di queste modifiche. Usando questo framework potresti persino essere in grado di specificare un requisito di varianza arbitrario per il cambiamento di colore/luminosità.

Da lì tutto ciò che dovete fare è convertire l'intervallo di tempo tra il cambio di colore in un impulso. Ecco un esempio di come calcolare l'impulso.

http://www.wikihow.com/Calculate-Your-Target-Heart-Rate

+3

Non sei l'unico a pensare in questo modo: http://stackoverflow.com/questions/14125995/objective-c-peak-detection-accelerate-framework. Ho fatto qualche esperimento intorno a questo, e credo che potrebbe non essere così difficile usare un filtro a colori o luminanza per tracciare gli alti e bassi qui. Potrebbe essere necessario limitarlo al canale rosso e utilizzare un po 'di attenuazione temporale, ma è sufficiente trovare la distanza di picco. –

+2

Brad Larson, puoi darci un esempio di codice di pls –

+0

@BradLarson Puoi condividere la tua sperimentazione. –

Problemi correlati