• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2016-06-01 00:46:50陳林軍劉鵬陳鵬
      關(guān)鍵詞:軟件設(shè)計脈搏攝像頭

      陳林軍,劉鵬,2,陳鵬

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

      ?

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

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

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

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

      關(guān)鍵詞:Android手機;攝像頭;脈搏;軟件設(shè)計

      引言

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

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

      1測量原理

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

      圖1 攝像頭測量脈搏步驟

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

      2需求分析

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

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

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

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

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

      3軟件設(shè)計

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

      3.1數(shù)據(jù)采集模塊的設(shè)計

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

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

      值得注意的是,攝像頭的調(diào)用和閃光燈打開涉及到系統(tǒng)權(quán)限問題,必須在AndroidManifest.xml文件中對軟件權(quán)限進行設(shè)置[7],其代碼如下:

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

      ① 在SurfaceCreated中獲取Camera對象;

      ② 通過SurfaceHolder設(shè)置Camera的預(yù)覽監(jiān)聽;

      ③ 調(diào)用StartPreview()方法,啟動攝像頭預(yù)覽;

      ④ 在SurfaceDestroyed中當控件銷毀時,關(guān)閉攝像頭預(yù)覽,并釋放資源。

      以上步驟的關(guān)鍵代碼如下:

      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();

      }

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

      parameters.setPreviewFormat(ImageFormat.NV21);

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

      @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[]為給定數(shù)組,存儲的是包含有脈搏信息的綜合亮度值,dValue[]中的數(shù)據(jù)為預(yù)覽圖像的綜合亮度值。該模塊設(shè)計完成后,編寫成單一功能軟件安裝在華為Ascend P6手機中,經(jīng)過測試,能夠成功打開后置攝像頭和LED閃光燈。

      3.2數(shù)據(jù)處理模塊

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

      考慮到脈搏搏動的周期性,采樣數(shù)據(jù)也是呈周期性變化,因此本文采用FFT法進行頻率提取。數(shù)據(jù)處理模塊主要分為3步,即復(fù)數(shù)類的編寫、基于基-2抽取的快速傅里葉變換(FFT),以及頻譜峰值搜索并轉(zhuǎn)化為頻率值。由于Java不支持復(fù)數(shù)運算,因此本文編寫復(fù)數(shù)類,利用實數(shù)運算實現(xiàn)復(fù)數(shù)運算;基于基-2抽取的快速傅里葉變換也是通過類的方法編寫,在類中創(chuàng)建了fft()方法,輸入?yún)?shù)為數(shù)組(dValue),輸出為傅里葉變換后的幅值(與輸入等長的數(shù)組);頻譜峰值搜索,即是通過搜索FFT輸出的數(shù)組中的峰值的位置,利用公式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));

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

      3.3顯示控制模塊

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

      本設(shè)計中,使用Canvas組件表示屏幕上一個空白矩形區(qū)域,當Canvas對象調(diào)用paint()時就會在該容器中畫圖。調(diào)用drawLine()方法將兩個點之間用直線連接起來,波形圖就是利用給定數(shù)組的數(shù)據(jù)將其轉(zhuǎn)化為屏幕位置作為縱坐標,橫坐標由數(shù)組序號得到。波形顯示模塊先繪制顯示的矩形區(qū)域和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為給定數(shù)組,在綜合集成時,Value中的數(shù)據(jù)為預(yù)覽圖像的綜合亮度值。設(shè)計完成后,用華為Ascend P6手機進行測試,能夠滿足設(shè)計要求。

      3.4綜合設(shè)計

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

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

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

      圖2 脈搏測量軟件流程圖

      圖3 軟件UI界面

      4測試結(jié)果及分析

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

      圖4 測量過程

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

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

      表1 不同方法結(jié)果對比

      結(jié)語

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

      參考文獻

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

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

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

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

      [5] 饒曦.基于Android平臺的聚會助手軟件的實現(xiàn)過程[J].鄖陽師范高等??茖W(xué)校學(xué)報,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.

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

      End Sub

      Sub Button3_Click

      ‘關(guān)燈

      buffer(0)=1

      buffer(1)=0

      OutputStream1.WriteBytes(buffer,0,2)

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

      Button3.Enabled=False

      Button2.Enabled=True

      End Sub

      結(jié)語

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

      [1] 紅心物聯(lián)科技公司.M02串口wifi模塊相關(guān)基礎(chǔ)知識,2015.

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

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

      (責(zé)任編輯:薛士然收修改稿日期: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

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

      中圖分類號:TP319

      文獻標識碼:A

      猜你喜歡
      軟件設(shè)計脈搏攝像頭
      浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
      攝像頭連接器可提供360°視角圖像
      用心感受狗狗的脈搏
      金橋(2018年2期)2018-12-06 09:30:14
      《今日評說》評今日浙江 說時代脈搏
      基于51系列單片機的穿戴式脈搏儀的設(shè)計
      電子制作(2017年14期)2017-12-18 07:07:50
      基于STC單片機的廚房智能安全管控系統(tǒng)的設(shè)計
      基于STM8S903K3的序列打螺絲夾具的軟件設(shè)計
      近紅外可穿戴設(shè)備中脈搏波的呼吸率檢測
      JCI標準下發(fā)送調(diào)配部軟件設(shè)計及應(yīng)用
      一種VHDL語言代碼重用的方法
      科技視界(2016年20期)2016-09-29 13:33:02
      拉孜县| 黔南| 日土县| 和顺县| 崇明县| 惠水县| 宝坻区| 公主岭市| 灵寿县| 井冈山市| 西吉县| 宁海县| 临夏市| 临湘市| 阿城市| 扶沟县| 江门市| 朝阳市| 青冈县| 安塞县| 即墨市| 哈尔滨市| 兴隆县| 伊金霍洛旗| 无极县| 泽库县| 邢台市| 区。| 麟游县| 安泽县| 平塘县| 历史| 山西省| 西安市| 民乐县| 南涧| 虹口区| 柳河县| 唐河县| 芦山县| 原平市|