張永亮,安超群,潘必超,陳榕福,李 凌
1(廣東機(jī)電職業(yè)技術(shù)學(xué)院 電子與通信學(xué)院,廣州 510515)
2(蘇州先進(jìn)技術(shù)研究院,蘇州 215123)
根據(jù)最新調(diào)查顯示,目前小學(xué)生、初中生、高中生的近視率分別達(dá)到了39.05%、64.3%和72.8%,我國青少年近視率居世界之首[1].而讀寫姿勢不正確、視距過近是造成青少年近視的主要原因;同時中小學(xué)階段是孩子成長發(fā)育的關(guān)鍵時期,坐姿和讀寫姿勢不正確,會影響到孩子骨骼的健康成長,容易造成駝背等不良后果.國內(nèi)外有很多企業(yè)在研究并已投入生產(chǎn)視力保護(hù)儀,大部分基于紅外傳感器、超聲波測距的原理實現(xiàn)[2-4],產(chǎn)品功能比較單一,不能從多個角度保護(hù)青少年的視力.
除了保護(hù)視力以外,糾正坐姿也是預(yù)防近視的有效辦法.目前,市場上用于矯正學(xué)生坐姿的產(chǎn)品主要有坐姿矯正器、背背佳等.首先,這類產(chǎn)品需要用戶將儀器設(shè)備穿戴在身上,從使用者的舒適性、方便性等方面來講具有很差的用戶體驗.其次,市場上的該類產(chǎn)品在功能上具有局限性和單一性等缺點,其功能已經(jīng)無法滿足當(dāng)前“互聯(lián)網(wǎng)+”的經(jīng)濟(jì)社會發(fā)展形式,以及人們對智能化產(chǎn)品的需要和追求.
因此,本文提出了一種基于閱讀姿態(tài)視覺識別與自適應(yīng)調(diào)整的智能閱讀架,該閱讀架能夠利用采集的圖像信息實現(xiàn)對讀者閱讀姿態(tài)的實時監(jiān)控與識別,并根據(jù)識別到的閱讀姿態(tài)智能調(diào)控閱讀架的高低、傾斜、角度等參量,自適應(yīng)用戶的坐姿.此外,智能閱讀架能夠?qū)⒂脩羰褂脮r間、閱讀姿態(tài)等信息上傳云端服務(wù)器,組建用戶檔案庫,供用戶訪問.調(diào)研發(fā)現(xiàn),該智能閱讀架不僅能夠幫助閱讀者端正坐姿,挺直腰背,養(yǎng)成良好的讀寫習(xí)慣,提高學(xué)習(xí)效率,還能有效防止駝背、脊椎彎曲,保護(hù)青少年的身心健康.
智能閱讀架主要由閱讀架終端、云端服務(wù)器和應(yīng)用端用戶平臺3 部分構(gòu)成,整機(jī)架構(gòu)如圖1所示.其中,閱讀架終端采用ARM Cortex-A53 樹莓派微型電腦平臺架構(gòu),搭載四核高性能處理器,運行主頻可達(dá) 1.2 GHz,運行Raspbian系統(tǒng),擴(kuò)展攝像頭、步進(jìn)電機(jī)驅(qū)動模塊,實現(xiàn)攝像頭模塊實時采集并處理讀者的閱讀姿態(tài),并通過3 組步進(jìn)電機(jī)實現(xiàn)讀書架前后、左右、上下調(diào)節(jié),以適應(yīng)讀者前傾、后仰、左偏、右偏、抬頭、低頭等坐姿.擴(kuò)展LED 照明模塊、光線傳感器,以調(diào)節(jié)LED 照明亮度到合適閱讀亮度.此外,擴(kuò)展4G、WiFi 模塊,將閱讀狀態(tài)數(shù)據(jù)實時送到云端,建立讀者閱讀檔案,供用戶訪問.
圖1 智能閱讀架整機(jī)架構(gòu)圖
智能閱讀架的工作流程主要包括訓(xùn)練、工作、休眠、上傳4 個階段.
(1)訓(xùn)練:閱讀架首次開機(jī)時,根據(jù)系統(tǒng)提示,讀者在閱讀架單目攝像頭前保持標(biāo)準(zhǔn)及前傾、后仰、左偏、右偏、抬頭、低頭這7 種主要坐姿,機(jī)器將各種姿態(tài)的特征參數(shù)存儲到閱讀架系統(tǒng)模板庫,完成訓(xùn)練.
(2)工作:在智能閱讀架工作時,攝像頭實時監(jiān)控讀者的坐姿,當(dāng)讀者身體前傾、后移姿態(tài)變化時,攝像頭捕捉并識別到讀者姿態(tài),并通知系統(tǒng)控制前后步進(jìn)電機(jī)1 動作,智能閱讀架向前或后移動,保持讀者與閱讀架之間的健康距離;同樣,當(dāng)讀者抬頭或低頭閱讀時,攝像頭也會通過識別讀者姿態(tài),通知系統(tǒng)控制轉(zhuǎn)動步進(jìn)電機(jī)2 動作,智能閱讀架向上或向下轉(zhuǎn)動,保持讀者與閱讀架之間的健康角度.當(dāng)讀者出現(xiàn)左偏、右偏等不正確的坐姿時,系統(tǒng)將控制步進(jìn)電機(jī)3 動作,智能閱讀架向左或向右,保持讀者與閱讀架之間的健康角度.
(3)休眠:如果系統(tǒng)檢測到長時間無人使用實時,自動進(jìn)入休眠狀態(tài).
(4)上傳:智能閱讀架實時將讀者的閱讀時間、閱讀姿態(tài)等信息上傳到云端數(shù)據(jù)庫,建立讀者閱讀檔案,用戶可以通過手機(jī)進(jìn)行訪問和控制,方便家長或老師對學(xué)生閱讀姿勢的監(jiān)控、提醒和糾正.
1.1.1 樹莓派主控系統(tǒng)
智能閱讀架終端基于樹梅派/Raspberry Pi 3B 平臺設(shè)計,運行Raspbian 操作系統(tǒng).樹莓派3 相比樹莓派2 在CPU 上做了全方位的升級,從32 位A7 升級到64 位A53 BCM2837 芯片,主頻從900 MHz 升級到1.2 GHz;GPU 主頻從250 MHz 提升到400 MHz;功能上增加了WiFi/BLE,方便對智能產(chǎn)品的開發(fā);供電電路升級到2.5A@5V,增加了擴(kuò)展更多模塊的可能性.支持浮點計算,BCM2837 核心電路核心電路如圖2所示.
圖2 BCM2837 核心電路
1.1.2 攝像頭電路
Raspberry Pi 3B 擴(kuò)展索尼IMX219 800 萬像素攝像頭,靜態(tài)圖片分辨率為3280×2464,支持1080p 30,720p 60 以及640×480p 90 視頻錄像,并具有夜視功能,可以實時檢測并識別閱讀者前傾、后仰、左偏、右偏、抬頭、低頭以及標(biāo)準(zhǔn)的閱讀坐姿.攝像頭模組通過CSI 接口與樹梅派連接如圖3所示.
1.1.3 擴(kuò)展GPIO 接口
Raspberry Pi 3B 擴(kuò)展了40 個引腳接口,其端口明細(xì)如圖4所示.通過安裝Wiring Pi 庫函數(shù),可實現(xiàn)對GPIO 管腳的控制,此外,Wiring Pi 中包含了I2C、SPI、UART 庫,可以配置并使用樹莓派上的特殊功能接口.
由圖4可見,樹莓派擴(kuò)展的40 個引腳中,有13 個普通輸入和輸出管腳,一個I2C、兩個SPI 和一個UART 接口.如果不使用I2C,SPI 和UART 等復(fù)用接口,那么樹莓派總共具有26 個普通IO.
1.1.4 電機(jī)控制及角度檢測電路
Raspberry Pi 3B 通過9 個IO 口連接步進(jìn)電機(jī)控制器,控制3 組步進(jìn)電機(jī)轉(zhuǎn)動,分別實現(xiàn)對閱讀架前后、左右、上下等姿態(tài)的精確控制.其中,步進(jìn)電機(jī)采用山社SS1102A10A 型號,尺寸為28 mm 的二相電機(jī),靜力矩150 mNm,定位精度高,動態(tài)特性好;驅(qū)動器采用山社MD-2522 型號,內(nèi)置有PID 電流控制算法,具有過壓、欠壓,相電流過流保護(hù)功能.每個驅(qū)動器的STEP+,DIR+,EN+與樹梅派的3 個IO 連接,如圖5所示.其中,GPIO5、6、12 連接步進(jìn)電機(jī)驅(qū)動器1;GPIO13、16、19 連接步進(jìn)電機(jī)驅(qū)動器2;GPIO20、21、26 連接步進(jìn)電機(jī)驅(qū)動器3.
圖3 擴(kuò)展攝像頭模塊接口電路
圖4 擴(kuò)展GPIO 口的連接關(guān)系
采用ADXL345 三軸加速度傳感器,實現(xiàn)加速度的測量,并通過計算得到X、Y、Z 3 個方向的傾角值,與步進(jìn)電機(jī)控制實現(xiàn)閉環(huán)系統(tǒng).ADXL345 三軸加速度傳感器具有在16 GB 下高分辨率(13 Bit)測量能力,允許測量小于1 度的傾角.ADXL345 模塊上電后,加速度使慣性質(zhì)量偏轉(zhuǎn)、差分電容失衡,使傳感器輸出與加速度成正比的電壓值.模塊對得到的電壓值進(jìn)行模數(shù)轉(zhuǎn)換后進(jìn)行數(shù)字濾波,再存入FIFO 存儲器,最后根據(jù)中斷指令將數(shù)字信號通過4 線SPI 接口輸出,如圖6所示.這里,ADXL345 通過SPI 總線連接到樹梅派SPI 接口.
1.1.5 LED 智能照明電路
為了實時采集閱讀架工作環(huán)境的光線強度,并實現(xiàn)自動照明功能.采用BH1750FVI 進(jìn)行環(huán)境光強度測量,該芯片是日本RHOM 推出的一款內(nèi)置16 Bit AD 轉(zhuǎn)換器的不區(qū)分環(huán)境光源的光電轉(zhuǎn)換芯片,具有接近于視覺靈敏度的分光特性,分辨率可達(dá)1 LX,采用標(biāo)準(zhǔn)IIC 通信接口,連接至樹莓派SDA1(GPIO2)、SCL1(GPIO3),如圖7所示.
LED 照明調(diào)節(jié)電路采用LED 大功率照明恒流驅(qū)動芯片AMC7150,AMC7150 具有4~40 V 的寬工作電壓,驅(qū)動電流最高可達(dá)1.5 A,可以驅(qū)動24 W 的高功率LED.AMC7150 內(nèi)建PWM(脈沖寬度調(diào)變)與功率晶體管,只需5 顆外部零件,工作頻率由外部電容控制可達(dá)200 KHz.LED 照明調(diào)節(jié)電路電路圖8所示,AMC750 芯片5 腳,即LED_Ctrl 信號連接至樹莓派GPIO25,如圖8所示.當(dāng)輸出為高電平(2-3.3 V)時,芯片內(nèi)部驅(qū)動器被關(guān)斷;當(dāng)輸出為低電平時,芯片內(nèi)部驅(qū)動器導(dǎo)通.因此,通過調(diào)節(jié)GPIO25 控制信號的占空比,則可以調(diào)節(jié)LED 的亮度,滿足閱讀架智能照明的需求.
圖5 樹梅派與步進(jìn)電機(jī)驅(qū)動器接口電路
圖6 ADXL345 與樹莓派接口電路
圖7 BH1750FVI 與樹莓派接口
云服務(wù)器軟件能接收讀者的閱讀狀態(tài)數(shù)據(jù),并建立讀者閱讀檔案,供用戶訪問.為了方便移動端用戶的高并發(fā)訪問,有效利用Web 服務(wù)器的,防止服務(wù)器線程阻塞,云服務(wù)器采用Memcached 高效內(nèi)存緩存技術(shù)+RabbitMQ 作為消息隊列服務(wù),提供更快的訪問速度和更高的并發(fā)訪問能力.以Web API 的形式同時面向設(shè)備上傳與數(shù)據(jù)下載,提供基于Restful API 的接口,如圖9所示.
用戶移動端APP 功能包括注冊,登陸、信息瀏覽、數(shù)據(jù)監(jiān)測、數(shù)據(jù)查詢、互動討論等.在用戶使用過程中,手機(jī)APP 通過監(jiān)聽云服務(wù)器的信息,實時顯示用戶信息、設(shè)備信息、閱讀時間、閱讀姿態(tài)等閱讀信息,以方便用戶體驗,監(jiān)測和分析用戶的閱讀習(xí)慣.智能閱讀架使用一段時間后,系統(tǒng)將自動的給出整體的評價參數(shù)、注意事項,建立用戶閱讀習(xí)慣檔案,供用戶查閱.
圖8 LED 照明調(diào)節(jié)電路與樹莓派接口
圖9 云服務(wù)器框圖
控制系統(tǒng)軟件主要包括3 組步進(jìn)電機(jī)驅(qū)動、閱讀架XYZ 方向三軸角度檢測、閱讀架光強度信息采集、LED 控制照明等4 部分.通過安裝WiringPi 控制庫函數(shù),基于C 語言編程,調(diào)用樹莓派板載的 GPIO、UART、IIC、SPI 等資源的驅(qū)動,由gcc 編譯器生成文件,并用sudo 調(diào)用執(zhí)行文件,實現(xiàn)閱讀架控制系統(tǒng)的軟件設(shè)計,具體流程如圖10所示.
樹莓派默認(rèn)是將SPI 和I2C 功能關(guān)閉的,因此需要先開啟SPI 和IIC 接口功能.然后,通過輪詢方式每隔一個固定時間,查詢讀者的閱讀坐姿,閱讀架三軸的角度,并根據(jù)檢測到的數(shù)據(jù),控制3 組步進(jìn)電機(jī)運動,適應(yīng)讀者坐姿的要求.同時,查詢環(huán)境光強度,通過GPIO25 控制LED 照明裝置,實現(xiàn)閱讀架亮度的智能調(diào)節(jié).
OpenCV 是一個基于發(fā)行的跨平臺計算機(jī)視覺庫,可以運行在Linux、Windows 和Mac OS 操作系統(tǒng)上,由一系列 C 函數(shù)和少量 C++ 類構(gòu)成.這里,采用OpenCV 及其Python 接口實時讀取攝像頭數(shù)據(jù),并完成閱讀姿態(tài)訓(xùn)練和分類算法移植和軟件系統(tǒng)搭建.首先在樹莓派中安裝OpenCV 庫,為了能夠利用VideoCapture、cvtColor、imshow 等命令調(diào)用CSI 接口的攝像頭,需要打開/etc/下面的modules-load.d/ rpicamera.conf,在最后添加一行bcm2835-v4l2,即在系統(tǒng)啟動之后加載bcm2835-v4l2 這個模塊.
圖10 控制系統(tǒng)軟件流程
為了保證智能閱讀架可靠、穩(wěn)定的工作,讀者閱讀姿態(tài)的實時監(jiān)控與識別是系統(tǒng)的關(guān)鍵技術(shù),其系統(tǒng)框圖如圖11所示.
閱讀架的單目攝像頭實時收集閱讀者的標(biāo)準(zhǔn)、前傾、后仰、左偏、右偏、抬頭、低頭等姿態(tài)數(shù)據(jù),并對收集到的實時圖片數(shù)據(jù)進(jìn)行灰度二值化處理,提取特征參數(shù),構(gòu)建讀者基本姿態(tài)模板庫,最后將讀者的姿態(tài)和模板庫姿態(tài)實時對比,進(jìn)行讀者姿態(tài)動作的識別.
2.2.1 姿態(tài)圖像加權(quán)灰度處理
攝像頭獲取的讀者姿態(tài)實時RGB 圖像,具有豐富的形變,運動以及紋理特征,因此,為了降低識別的復(fù)雜度,減小計算工作量,保證識別的正確率,需要進(jìn)行灰度化處理.這里采用加權(quán)平均進(jìn)行灰度化處理,如式(1)所示.
大量的實驗表明,取Wr=0.30,Wg=0.59,Wb=0.11 時,能得到最合適的灰度圖像.
圖11 閱讀姿態(tài)識別流程圖
2.2.2 姿態(tài)圖像二值化
讀者姿態(tài)的邊緣分割是系統(tǒng)穩(wěn)定工作的關(guān)鍵技術(shù)之一[5,6],這里采用分塊自適應(yīng)閾值設(shè)定法,即對圖像按區(qū)域分成16×16 小塊,然后取每一小塊灰度平均值的1/8 作為閾值進(jìn)行二值化,實驗表明,采用分塊自適應(yīng)閾值設(shè)定法,讀者姿態(tài)圖像邊緣提取效果好,能滿足識別的要求.
2.2.3 特征提取和姿態(tài)識別
姿態(tài)圖像經(jīng)二值化后,閱讀姿態(tài)輪廓已經(jīng)基本呈現(xiàn)出來.觀察分析發(fā)現(xiàn),左偏、右偏閱讀姿態(tài)圖中,主要邊緣成分具有明顯的偏離中心線的特征,因此,為了保證識別的效果,采用兩級識別法,第一級先識別左右偏閱讀姿態(tài);第二級再識別其他閱讀姿態(tài).
第一級識別過程如下:
(1)以二值圖片中心點為界,將圖片分為左右兩側(cè);
(2)分別統(tǒng)計二值圖像左、右兩側(cè)的黑色像素點的總數(shù)量;
(3)若左側(cè)像素點明顯大于右側(cè)像素點,則讀者閱讀姿態(tài)為左偏;反之,讀者閱讀姿態(tài)為右偏.
大量的實驗表明,步驟3 中,左右兩側(cè)黑色像素點差異超過20%,能保證識別的精度.
第二級識別采用模板匹配技術(shù)[7,8],即將待識別閱讀者的二值姿態(tài)圖與預(yù)先存儲的各種姿態(tài)模板進(jìn)行匹配,通過測量兩者之間的歐式距離,如式(2)所示,最小距離值所對應(yīng)的模板姿態(tài)即為當(dāng)前閱讀姿態(tài).
服務(wù)器軟件主要負(fù)責(zé)讀者閱讀姿態(tài)數(shù)據(jù)接收、存儲,閱讀姿態(tài)分析等功能.包含3 個功能模塊:Web API接口、數(shù)據(jù)存儲和閱讀姿態(tài)統(tǒng)計分析平臺.Web API使用 Java 語言、Tomcat 容器、MyBatis-Spring 技術(shù)框架來構(gòu)建.用戶的智能手機(jī) APP 和閱讀習(xí)慣分析平臺均通過 Web API 來訪問數(shù)據(jù).此外,與 Web API 的通訊采用 HTTPS 加密通道,以確保數(shù)據(jù)的安全性.閱讀數(shù)據(jù)在服務(wù)器后臺采用MySQL+MongoDB 數(shù)據(jù)庫實現(xiàn)存儲功能.閱讀架終端數(shù)據(jù)上傳后,MySQL 數(shù)據(jù)庫主要保存讀者的個人基本信息、閱讀時間,閱讀次數(shù)、7 種閱讀姿態(tài)時間統(tǒng)計,MongoDB 用于在線坐姿特征分析的存儲等,閱讀數(shù)據(jù)E-R 圖如圖12所示.
用戶Android 手機(jī)或平板可以通過Wifi 或移動網(wǎng)絡(luò)接入因特網(wǎng)來訪問閱讀架云端服務(wù)器.Android 版采用Java 語言、Android Studio 工具開發(fā).手機(jī)或平板APP 由注冊/登錄、用戶信息、閱讀信息、閱讀姿態(tài)統(tǒng)計、閱讀分析報告5 個模塊構(gòu)成.APP 的數(shù)據(jù)接口采用JSON 技術(shù)與數(shù)據(jù)接口交換數(shù)據(jù).訪問前,讀者首先通過智能手機(jī) APP 注冊用戶賬號,注冊成功并登錄后,可以修改用戶信息、瀏覽閱讀時間、閱讀姿態(tài)等信息,查看閱讀姿態(tài)統(tǒng)計圖等閱讀習(xí)慣檔案.
用戶閱讀姿態(tài)的正確識別是確保整個系統(tǒng)可靠工作的關(guān)鍵.因此,在實驗室環(huán)境下,選取了50 個讀者,每個讀者的7 種閱讀姿態(tài)各拍攝了10 次,建立了讀者姿態(tài)庫,其中,姿態(tài)庫中的圖片大小均為320×180 像素,RGB 格式.圖13所示為某一讀者的閱讀姿態(tài)圖.
圖12 閱讀數(shù)據(jù)E-R 圖
圖13 閱讀姿態(tài)圖
將圖13中RGB 圖,按照式(1)進(jìn)行加權(quán)灰度處理以及分塊二值化處理,結(jié)果如圖14所示.
對比圖13、圖14可見,圖像二值化后,背景圖像得到了有效的過濾,讀者的7 種閱讀姿態(tài)凸顯出來.由于讀者坐在閱讀架的正中間,左偏和右偏具有明顯的偏離中心線的特征,另外5 種閱讀姿態(tài)邊緣輪廓清晰,肉眼可以直觀的進(jìn)行辨別.
隨機(jī)選取25 人進(jìn)行標(biāo)準(zhǔn)、前傾、后仰、抬頭、低頭、左偏、右偏7 種閱讀姿態(tài)訓(xùn)練;剩余的25 人,采用兩級識別技術(shù)進(jìn)行讀者閱讀姿態(tài)識別,其中攝像頭每隔2 s 捕捉一次讀者的坐姿,其識別正確率如表1所示.
分析表1數(shù)據(jù)發(fā)現(xiàn),標(biāo)準(zhǔn)、前傾、后仰、抬頭、低頭5 種閱讀姿態(tài)識別率在90%以上,但是左偏和右偏識別率稍低于90%,究其原因發(fā)現(xiàn),由于攝像頭每隔2 s 采集一次讀者的坐姿,在采集該坐姿瞬間,可能處于姿態(tài)過渡階段,因此造成了識別的誤判.此外,采集讀者閱讀姿態(tài)的時候,個別讀者沒有坐到閱讀架的正中間,也造成了左偏和右偏的識別稍微偏低.但是,7 種閱讀姿態(tài)的識別率整體在88%以上,仍然能夠滿足智能閱讀架日常使用的要求.
本文提出的智能閱讀架通過集成視頻模組,利用圖像識別算法實現(xiàn)對人體姿態(tài)的監(jiān)控,在用戶不需要可穿戴設(shè)備的情況下就可以對使用者的姿態(tài)進(jìn)行識別.通過識別到的用戶姿態(tài),智能閱讀架可以進(jìn)行智能調(diào)節(jié),主動滿足使用者的姿態(tài)需求.同時,閱讀架與云端數(shù)據(jù)庫相連,能夠?qū)⒂脩舻氖褂脮r間、閱讀姿態(tài)等信息實時上傳組建用戶信息檔案庫,用戶可以隨時通過手機(jī)APP 訪問檔案庫,了解相關(guān)信息或進(jìn)行遠(yuǎn)程控制.
該設(shè)計產(chǎn)品可以廣泛推廣到幼兒園及中小學(xué)、高校、圖書館閱覽室、普通家庭,幫助閱讀者端正坐姿,挺直腰背,養(yǎng)成良好的閱讀習(xí)慣,提高學(xué)習(xí)效率,有效防止駝背、脊椎彎曲,保護(hù)青少年的身心健康,社會和經(jīng)濟(jì)效益顯著.
圖14 灰度二值化后圖
表1 各閱讀姿態(tài)下系統(tǒng)的識別正確率