2011-10-22 68 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)手机必须静止不动,否则图像会不断变化,使得亮度测量不可靠。