999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

使用Android手機攝像頭的脈搏測量軟件設計

2016-06-01 00:46:50陳林軍劉鵬陳鵬
單片機與嵌入式系統應用 2016年3期

陳林軍,劉鵬,2,陳鵬

(1.后勤工程學院 后勤信息工程系,重慶 401311;2.重慶通信學院)

?

使用Android手機攝像頭的脈搏測量軟件設計

陳林軍1,劉鵬1,2,陳鵬1

(1.后勤工程學院 后勤信息工程系,重慶 401311;2.重慶通信學院)

摘要:為充分利用智能手機已有的硬件資源,為人們生活帶來便利,設計了基于Android手機攝像頭的脈搏測量軟件。首先,分析了利用手機攝像頭測量脈搏的原理;然后,分別設計了軟件的數據采集模塊、數據處理模塊和顯示控制模塊;最后,完成了軟件的綜合集成。實測結果表明,手機攝像頭測量脈搏方案可行,測量結果滿足一般監控要求。

關鍵詞:Android手機;攝像頭;脈搏;軟件設計

引言

隨著智能手機的普及,人們利用智能終端獲取信息的能力和需求日益增加,手機上網、看書、玩游戲、記事等已經成為智能手機最基本的功能[1]。當前,智能手機均集成有攝像頭、GPS芯片、陀螺儀等硬件設備,使得智能手機能夠完成攝影[2]、定位導航[3]、跌倒檢測[4]等功能。手機應用市場上有海量的應用軟件,開發者利用這些智能手機的有限硬件資源,實現了很多有趣而實用的功能,使人們的生活變得更加方便。

本文設計了基于Android手機的脈搏測量應用軟件,利用Android手機的攝像頭獲取指尖圖像,圖像的亮度包含了脈搏的跳動信息,通過數字信號處理算法,計算出每分鐘脈搏跳動的次數,使每一個擁有Android手機的人都可以隨時檢測自己的脈搏,進而了解自己的健康狀況。

1測量原理

脈搏有收縮和舒張兩個過程,在脈搏收縮時,毛細血管充血,手指尖的毛細血管透光率下降;反之,在脈搏舒張時,手指尖的毛細血管透光率增強。這樣,只要使用攝像頭捕獲圖像,分析圖像的綜合亮度變化,就可以獲得心率。

圖1 攝像頭測量脈搏步驟

具體做法如圖1所示,指尖輕貼在攝像頭上,用高亮度的光源(攝像頭旁的LED閃光燈)照亮指尖皮下毛細血管,利用攝像頭按照某一頻率連續獲取指尖圖像,由于手機圖像的顏色和亮度都是以數字形式采集和存儲的,所以可通過數字信號處理方法計算出每一張圖像的綜合亮度,圖像亮度按照脈搏跳動規律周期性變化,只需計算出亮度變化周期,就可以得到脈搏的搏動周期,進而得到每分鐘脈搏跳動次數。

2需求分析

脈搏測量軟件的開發,是為了利用人們普遍擁有的智能手機實現脈搏測量,使人們在任何地點都可以知道自己的心率,結合相關醫學常識,隨時掌握自身的健康狀況。軟件的功能需求如下:每分鐘脈搏次數(心率)顯示,這是脈搏測量軟件最基本的功能,在UI界面中實時顯示心率數值。

脈搏測量軟件所要達到的性能如下:

① 測量精度。一般正常人的心率在60~100次/min,運動員平時心率在60次/min以下,普通人劇烈運動后心率在100次/min以上也是正常的,因此脈搏測量范圍設置為30~180次/min,控制精度在5%以內,因此要求測量誤差小于2次/min。

② 最小測量時間。這一指標表示達到精度要求所需要的最小時間,由于脈搏跳動周期接近1 s,而計算心率必須要采樣多個周期才能減小誤差,本設計設定最小測量時間為10 s。

③ 刷新時間。測量過程采用實時動態測量,要求心率的顯示也隨時間重新計算,兩次顯示時間間隔為刷新時間,本設計設定為1 s。

3軟件設計

按照軟件的功能和性能需求,將軟件分為3大模塊:數據采集模塊、數據處理模塊(心率提取模塊)和顯示控制模塊[5]。本文先分別實現各功能模塊,再進行3大功能模塊的綜合集成,設計統一的軟件操作界面,完成軟件的設計。

3.1數據采集模塊的設計

數據采集模塊要實現的功能是:打開手機攝像頭,將預覽圖像顯示到手機屏幕,同時獲取每一幀預覽圖像的綜合亮度。這里涉及到攝像頭調用和屏幕顯示預覽兩方面的設計。

攝像頭的調用一般有兩種方法[6]。一種是調用系統照相機,拍照后返回主activity圖片數據,在主activity中添加數據接收方法,對返回的圖形數據進行處理,這種方法雖然簡單,但是不夠靈活,不適用自定義的方法,可擴展性較差,不能滿足本設計快速對指尖圖像采樣的要求。另一種方法是調用Android的Camera這個類來創建一個自定義的攝像機實例,這個類可以幫助我們調用手機的內置攝像頭,并通過設置各種參數達到要求,比如圖像大小、預覽速率、圖像方向等。

值得注意的是,攝像頭的調用和閃光燈打開涉及到系統權限問題,必須在AndroidManifest.xml文件中對軟件權限進行設置[7],其代碼如下:

該模塊利用SurfaceView來實現屏幕顯示攝像頭預覽,通過SurfaceHolder鏈接視頻活動和SurfaceView。創建預覽通過以下4個步驟來完成。

① 在SurfaceCreated中獲取Camera對象;

② 通過SurfaceHolder設置Camera的預覽監聽;

③ 調用StartPreview()方法,啟動攝像頭預覽;

④ 在SurfaceDestroyed中當控件銷毀時,關閉攝像頭預覽,并釋放資源。

以上步驟的關鍵代碼如下:

mySurfaceHolder = mySurfaceView.getHolder();

mySurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

mySurfaceHolder.addCallback(this);

public void surfaceCreated(SurfaceHolder holder) {

camera = Camera.open();

camera.setPreviewDisplay(holder);

camera.startPreview();

}

public void surfaceDestroyed(SurfaceHolder holder) {

camera.stopPreview();

camera.release();

}

在圖像預覽功能完成后,就需要對預覽數據進行采集,在攝像頭參數設置時將預覽格式設置為YUV422格式:

parameters.setPreviewFormat(ImageFormat.NV21);

YUV格式的視頻信號只需占用極少的頻寬(8位)。其中“Y”(4位)表示明亮度(Luminance或Luma),也就是灰階值;而“U”和“V”(各2位)表示的則是色度(Chrominance或Chroma),作用是描述影像色彩及飽和度,用于指定像素的顏色。本設計只需利用Y(明亮度)值即可,將每一幀圖像的所有點的亮度值求和記為該圖的綜合亮度,將其保存在數組中供其他模塊使用。亮度提取代碼如下:

@Override

public void onPreviewFrame(byte[] data,Camera camera) {

byte yuvData;

int sum,y;

sum=0;

for (int ii=0;ii

for (int jj=0;jj

yuvData = data[ii*iPreviewWidth+jj];

y = (0xf0 & (int)yuvData)>>4;

sum+=y;

}

dValue[iCount]=sum;

}

代碼中的dValue[]為給定數組,存儲的是包含有脈搏信息的綜合亮度值,dValue[]中的數據為預覽圖像的綜合亮度值。該模塊設計完成后,編寫成單一功能軟件安裝在華為Ascend P6手機中,經過測試,能夠成功打開后置攝像頭和LED閃光燈。

3.2數據處理模塊

數據處理模塊即心率提取模塊,就是將數據采集模塊中采集的綜合亮度數據,通過數字信號處理的方法求出亮度變化頻率,頻率乘以60即為心率。

考慮到脈搏搏動的周期性,采樣數據也是呈周期性變化,因此本文采用FFT法進行頻率提取。數據處理模塊主要分為3步,即復數類的編寫、基于基-2抽取的快速傅里葉變換(FFT),以及頻譜峰值搜索并轉化為頻率值。由于Java不支持復數運算,因此本文編寫復數類,利用實數運算實現復數運算;基于基-2抽取的快速傅里葉變換也是通過類的方法編寫,在類中創建了fft()方法,輸入參數為數組(dValue),輸出為傅里葉變換后的幅值(與輸入等長的數組);頻譜峰值搜索,即是通過搜索FFT輸出的數組中的峰值的位置,利用公式f=kfs/N得到頻率。其部分代碼如下:

double[] fftResult=new FFT().fft(dValue);

for (int i=iBegin;i

if (fftResult[i]>maxValue){

maxValue = fftResult[i];

iFreq = i;

}

}

heartRate =(int)(60.0*30.0*iFreq/point);

if(heartRate>40 && heartRate<120)

txv2.setText(String.format("心率:%d",heartRate));

為驗證程序的正確性,設置dValue[]={1,-1,1,-1,2,1,1,2},經過FFT變換后結果為{6.0000,3.5476,1.4142,3.9261,4.0000,3.9261,1.4142,3.5476},與Matlab計算結果一致,證明該模塊中數據處理模塊設計正確。

3.3顯示控制模塊

顯示控制模塊實現的是人機交互功能,該模塊設置有操作指南、測試按鍵和心率顯示控件,為了讓脈搏搏動過程更為直觀,還設置了波形顯示區域,將綜合亮度用曲線在手機屏幕上顯示出來。

本設計中,使用Canvas組件表示屏幕上一個空白矩形區域,當Canvas對象調用paint()時就會在該容器中畫圖。調用drawLine()方法將兩個點之間用直線連接起來,波形圖就是利用給定數組的數據將其轉化為屏幕位置作為縱坐標,橫坐標由數組序號得到。波形顯示模塊先繪制顯示的矩形區域和Y=0的直線,然后繪制波形圖。代碼如下:

canvas.drawLine(X_OFFSET,40+centerY,WIDTH+X_OFFSET,40+centerY,paint);

canvas.drawLine(X_OFFSET,40,WIDTH+X_OFFSET,40,paint);

canvas.drawLine(X_OFFSET,456,WIDTH+X_OFFSET,456,paint);

canvas.drawLine(X_OFFSET,40,X_OFFSET,HEIGHT+40,paint);

canvas.drawLine(X_OFFSET+WIDTH,40,X_OFFSET+WIDTH,HEIGHT+40,paint);

for(int i=1;i

}

這里的dValue為給定數組,在綜合集成時,Value中的數據為預覽圖像的綜合亮度值。設計完成后,用華為Ascend P6手機進行測試,能夠滿足設計要求。

3.4綜合設計

本文分別對脈搏測量的3大功能模塊進行了編程調試并達到了預期功能,然后將對3大模塊進行整合,將3個模塊進行綜合,設計完整的脈搏測量軟件。按照需求分析中的要求,完成脈搏測量軟件的設計。軟件的流程圖如圖2所示。

圖2中,數據采集數組長度設置為256,采集完成表示數組中已經保存了256次預覽的綜合亮度值;滑動30點表示將數組前30點舍棄并將后面的點依次前移30個點,這樣,數組后30個地址重新采樣保存直到再一次采集完成再進行下一次FFT運算。由設置手機預覽速率為30幀/s,所以采集30幀圖像的時間為1 s,因此波形和心率顯示刷新時間和為1 s。

通過布局文件,設計如圖3所示的軟件UI界面。界面中的提示部分介紹軟件的使用方法,以減小由于操作不當導致的測量誤差;SurfaceView中顯示的是攝像頭預覽圖像;TextView在運行時將顯示每分鐘脈搏搏動次數(心率);下面部分空白處將顯示由預覽圖像亮度得到的波形圖,可以直觀地看到脈搏的搏動情況;波形顯示區域下方是一個按鈕,控制脈搏測量的開始和停止。

圖2 脈搏測量軟件流程圖

圖3 軟件UI界面

4測試結果及分析

將軟件安裝在華為Ascend P6手機進行測試。打開軟件,屏幕最上方有兩行文字提示,說明軟件的使用方法;提示下方的預覽區域可以看到通過攝像頭的預覽圖像;預覽區域下方顯示的心率為零;心率顯示區域下方為波形顯示區域,在沒有點擊“開始測試”按鈕時保持空白。

圖4 測量過程

按照提示,將指尖輕貼攝像頭上并保持不動,點擊“開始測試”按鈕,軟件打開LED閃光燈,測試過程開始,運行約10 s后,心率顯示更新為測試所得心率,波形顯示區域顯示脈搏的搏動情況,按鈕文字變為“正在測試……”,圖4為測試過程的截圖。再次點擊按鈕,LED閃光燈關閉,心率顯示和波形圖保持不變,直到再次開始測試才重新刷新。

利用本文設計的軟件分別對5人進行測試,測試結果如表1所列。由表1可知,本文所設計的軟件與手動號脈所得的結果基本一致,誤差最大為在±2次/min,滿足設計性能要求。

表1 不同方法結果對比

結語

本文分析了利用手機測脈搏的原理,分模塊設計了軟件的數據采集模塊、數據處理模塊(心率提取模塊)和顯示控制模塊,測試通過后進行綜合集成,完成了脈搏測量軟件的設計和實現。測試結果表明,該軟件能夠利用安卓手機的攝像頭進行脈搏測試,測試誤差在±2次/min以內,能夠滿足設計要求。

參考文獻

[1] 何璇. 基于Java語言的安卓手機軟件開發[J].計算機光盤軟件與應用,2014(8): 67-68.

[2] 周波.手機攝影軟件界面設計研究[D].武漢: 湖北工業大學,2013.

[3] 林志鵬,余代俊,張博.基于安卓手機的GPS控制網測量記錄軟件開發[J].地理信息世界,2013,20(4): 65-69.

[4] 吳志強,曹蕾,王凱,等.基于智能手機的人體跌倒檢測系統設計[J].計算機工程與設計,2014,35(4): 1465-1470.

[5] 饒曦.基于Android平臺的聚會助手軟件的實現過程[J].鄖陽師范高等專科學校學報,2014,34(3): 7-14.

[6] Nicolas Gramlich.Android編程入門教程[EB/OL].(2009-5) [2015-10].http://www.anddev.org/.

[7] Android 2.3 User’s Guide[EB/OL].(2010-12) [2015-10].http://www.google.com.

陳林軍、陳鵬(碩士研究生),主要研究方向為智能檢測與智能控制;劉鵬(講師),主要研究方向為嵌入式控制系統。

End Sub

Sub Button3_Click

‘關燈

buffer(0)=1

buffer(1)=0

OutputStream1.WriteBytes(buffer,0,2)

‘將關燈控制代碼數據(必須是數值型)寫入輸出管道流

Button3.Enabled=False

Button2.Enabled=True

End Sub

結語

本文采用51單片機WiFi模塊和Basic4Android開發平臺實現智能手機與51單片機進行數據通信,從而實現智能手機遠程控制單片機及外圍設備的功能。通過文中實例可以明顯看出,采用Basic4Android開發平臺簡潔、易上手,使手機APP編程難度降低,為嵌入式系統設計工程師快速進行物聯網開發提供參考。

[1] 紅心物聯科技公司.M02串口wifi模塊相關基礎知識,2015.

[2] Basic4Android開發教程[EB/OL].[2015-10].http://www.Basic4Android.com.

[3] 謝揚,潘子豪.易安卓開發平臺可視化界面在智能家居領域的應用[J].單片機與嵌入式系統應用,2015(9):14-17.

(責任編輯:薛士然收修改稿日期:2015-10-23)

Pulse Measurement Software Based on Android Mobile Phone Camera

Chen Linjun1,Liu Peng1,2,Chen Peng1

(1.Department of Information Engineering,Logistical Engineering University,Chongqing 401311,China;2.Chongqing Communication Institute)

Abstract:To make full use of the existing hardware resources of the smart phone and make people’s life more convenience,the software of pulse measurement based on Android mobile phone camera is designed.Firstly,the principle of measuring the pulse with the mobile phone camera is analyzed.Then,the data acquisition module,the data processing module and the display module are designed respectively.Finally,the integration of the softwares is completed.The measured results show that the design scheme is feasible,and the results meet the requirements.

Key words:Android mobile phone;camera;pulse;software design

收稿日期:(責任編輯:楊迪娜2015-10-21)

中圖分類號:TP319

文獻標識碼:A

主站蜘蛛池模板: 国产精品美人久久久久久AV| 99草精品视频| 国内99精品激情视频精品| 亚洲一区二区三区国产精品| 国内精品手机在线观看视频| 伊人天堂网| 亚洲香蕉伊综合在人在线| 免费国产好深啊好涨好硬视频| 欧美国产在线精品17p| 亚洲欧美在线综合图区| 少妇精品久久久一区二区三区| 中文字幕欧美日韩| 亚洲男人天堂网址| 日本一区二区三区精品国产| 国产日韩欧美精品区性色| 久热中文字幕在线| 毛片a级毛片免费观看免下载| 妇女自拍偷自拍亚洲精品| 欧美色99| 一级毛片在线播放免费观看| 国产极品粉嫩小泬免费看| 狼友av永久网站免费观看| 91欧美在线| 国产jizz| 国产成人综合日韩精品无码首页| 狠狠综合久久| 一本大道在线一本久道| 国产精品理论片| 九九久久精品国产av片囯产区| 91国内在线视频| 91精品人妻一区二区| 91精品国产91久无码网站| 成人韩免费网站| 欧亚日韩Av| 国产农村精品一级毛片视频| 久久综合丝袜长腿丝袜| 免费在线观看av| 91福利国产成人精品导航| 亚洲AV永久无码精品古装片| 台湾AV国片精品女同性| 女人毛片a级大学毛片免费| 婷婷六月在线| 久久性视频| 日本黄色a视频| 午夜影院a级片| 久久久久无码精品| 国产精品福利导航| 免费毛片a| 亚洲天堂啪啪| 九色在线观看视频| 99r在线精品视频在线播放| 欧美色视频网站| 99在线免费播放| 国产麻豆aⅴ精品无码| 中文字幕 日韩 欧美| 成人a免费α片在线视频网站| 亚洲国产欧美中日韩成人综合视频| 91精品在线视频观看| 在线观看国产精品一区| 人妻夜夜爽天天爽| 五月天久久综合| 欧美激情综合| 久久精品一品道久久精品| 色综合五月婷婷| 国产午夜一级毛片| 国产午夜一级淫片| 国产拍在线| 欧美中文字幕在线二区| 久久无码av一区二区三区| 国产精品美女自慰喷水| 欧美.成人.综合在线| 丁香婷婷久久| 亚洲国产成人精品青青草原| 亚洲成人高清在线观看| 婷婷综合亚洲| 97超碰精品成人国产| igao国产精品| 99热这里只有精品在线观看| 永久免费无码日韩视频| 亚洲最大综合网| 秘书高跟黑色丝袜国产91在线 | 巨熟乳波霸若妻中文观看免费|