張永亮,安超群,潘必超,陳榕福,李 凌
1(廣東機電職業技術學院 電子與通信學院,廣州 510515)
2(蘇州先進技術研究院,蘇州 215123)
根據最新調查顯示,目前小學生、初中生、高中生的近視率分別達到了39.05%、64.3%和72.8%,我國青少年近視率居世界之首[1].而讀寫姿勢不正確、視距過近是造成青少年近視的主要原因;同時中小學階段是孩子成長發育的關鍵時期,坐姿和讀寫姿勢不正確,會影響到孩子骨骼的健康成長,容易造成駝背等不良后果.國內外有很多企業在研究并已投入生產視力保護儀,大部分基于紅外傳感器、超聲波測距的原理實現[2-4],產品功能比較單一,不能從多個角度保護青少年的視力.
除了保護視力以外,糾正坐姿也是預防近視的有效辦法.目前,市場上用于矯正學生坐姿的產品主要有坐姿矯正器、背背佳等.首先,這類產品需要用戶將儀器設備穿戴在身上,從使用者的舒適性、方便性等方面來講具有很差的用戶體驗.其次,市場上的該類產品在功能上具有局限性和單一性等缺點,其功能已經無法滿足當前“互聯網+”的經濟社會發展形式,以及人們對智能化產品的需要和追求.
因此,本文提出了一種基于閱讀姿態視覺識別與自適應調整的智能閱讀架,該閱讀架能夠利用采集的圖像信息實現對讀者閱讀姿態的實時監控與識別,并根據識別到的閱讀姿態智能調控閱讀架的高低、傾斜、角度等參量,自適應用戶的坐姿.此外,智能閱讀架能夠將用戶使用時間、閱讀姿態等信息上傳云端服務器,組建用戶檔案庫,供用戶訪問.調研發現,該智能閱讀架不僅能夠幫助閱讀者端正坐姿,挺直腰背,養成良好的讀寫習慣,提高學習效率,還能有效防止駝背、脊椎彎曲,保護青少年的身心健康.
智能閱讀架主要由閱讀架終端、云端服務器和應用端用戶平臺3 部分構成,整機架構如圖1所示.其中,閱讀架終端采用ARM Cortex-A53 樹莓派微型電腦平臺架構,搭載四核高性能處理器,運行主頻可達 1.2 GHz,運行Raspbian系統,擴展攝像頭、步進電機驅動模塊,實現攝像頭模塊實時采集并處理讀者的閱讀姿態,并通過3 組步進電機實現讀書架前后、左右、上下調節,以適應讀者前傾、后仰、左偏、右偏、抬頭、低頭等坐姿.擴展LED 照明模塊、光線傳感器,以調節LED 照明亮度到合適閱讀亮度.此外,擴展4G、WiFi 模塊,將閱讀狀態數據實時送到云端,建立讀者閱讀檔案,供用戶訪問.

圖1 智能閱讀架整機架構圖
智能閱讀架的工作流程主要包括訓練、工作、休眠、上傳4 個階段.
(1)訓練:閱讀架首次開機時,根據系統提示,讀者在閱讀架單目攝像頭前保持標準及前傾、后仰、左偏、右偏、抬頭、低頭這7 種主要坐姿,機器將各種姿態的特征參數存儲到閱讀架系統模板庫,完成訓練.
(2)工作:在智能閱讀架工作時,攝像頭實時監控讀者的坐姿,當讀者身體前傾、后移姿態變化時,攝像頭捕捉并識別到讀者姿態,并通知系統控制前后步進電機1 動作,智能閱讀架向前或后移動,保持讀者與閱讀架之間的健康距離;同樣,當讀者抬頭或低頭閱讀時,攝像頭也會通過識別讀者姿態,通知系統控制轉動步進電機2 動作,智能閱讀架向上或向下轉動,保持讀者與閱讀架之間的健康角度.當讀者出現左偏、右偏等不正確的坐姿時,系統將控制步進電機3 動作,智能閱讀架向左或向右,保持讀者與閱讀架之間的健康角度.
(3)休眠:如果系統檢測到長時間無人使用實時,自動進入休眠狀態.
(4)上傳:智能閱讀架實時將讀者的閱讀時間、閱讀姿態等信息上傳到云端數據庫,建立讀者閱讀檔案,用戶可以通過手機進行訪問和控制,方便家長或老師對學生閱讀姿勢的監控、提醒和糾正.
1.1.1 樹莓派主控系統
智能閱讀架終端基于樹梅派/Raspberry Pi 3B 平臺設計,運行Raspbian 操作系統.樹莓派3 相比樹莓派2 在CPU 上做了全方位的升級,從32 位A7 升級到64 位A53 BCM2837 芯片,主頻從900 MHz 升級到1.2 GHz;GPU 主頻從250 MHz 提升到400 MHz;功能上增加了WiFi/BLE,方便對智能產品的開發;供電電路升級到2.5A@5V,增加了擴展更多模塊的可能性.支持浮點計算,BCM2837 核心電路核心電路如圖2所示.

圖2 BCM2837 核心電路
1.1.2 攝像頭電路
Raspberry Pi 3B 擴展索尼IMX219 800 萬像素攝像頭,靜態圖片分辨率為3280×2464,支持1080p 30,720p 60 以及640×480p 90 視頻錄像,并具有夜視功能,可以實時檢測并識別閱讀者前傾、后仰、左偏、右偏、抬頭、低頭以及標準的閱讀坐姿.攝像頭模組通過CSI 接口與樹梅派連接如圖3所示.
1.1.3 擴展GPIO 接口
Raspberry Pi 3B 擴展了40 個引腳接口,其端口明細如圖4所示.通過安裝Wiring Pi 庫函數,可實現對GPIO 管腳的控制,此外,Wiring Pi 中包含了I2C、SPI、UART 庫,可以配置并使用樹莓派上的特殊功能接口.
由圖4可見,樹莓派擴展的40 個引腳中,有13 個普通輸入和輸出管腳,一個I2C、兩個SPI 和一個UART 接口.如果不使用I2C,SPI 和UART 等復用接口,那么樹莓派總共具有26 個普通IO.
1.1.4 電機控制及角度檢測電路
Raspberry Pi 3B 通過9 個IO 口連接步進電機控制器,控制3 組步進電機轉動,分別實現對閱讀架前后、左右、上下等姿態的精確控制.其中,步進電機采用山社SS1102A10A 型號,尺寸為28 mm 的二相電機,靜力矩150 mNm,定位精度高,動態特性好;驅動器采用山社MD-2522 型號,內置有PID 電流控制算法,具有過壓、欠壓,相電流過流保護功能.每個驅動器的STEP+,DIR+,EN+與樹梅派的3 個IO 連接,如圖5所示.其中,GPIO5、6、12 連接步進電機驅動器1;GPIO13、16、19 連接步進電機驅動器2;GPIO20、21、26 連接步進電機驅動器3.

圖3 擴展攝像頭模塊接口電路

圖4 擴展GPIO 口的連接關系
采用ADXL345 三軸加速度傳感器,實現加速度的測量,并通過計算得到X、Y、Z 3 個方向的傾角值,與步進電機控制實現閉環系統.ADXL345 三軸加速度傳感器具有在16 GB 下高分辨率(13 Bit)測量能力,允許測量小于1 度的傾角.ADXL345 模塊上電后,加速度使慣性質量偏轉、差分電容失衡,使傳感器輸出與加速度成正比的電壓值.模塊對得到的電壓值進行模數轉換后進行數字濾波,再存入FIFO 存儲器,最后根據中斷指令將數字信號通過4 線SPI 接口輸出,如圖6所示.這里,ADXL345 通過SPI 總線連接到樹梅派SPI 接口.
1.1.5 LED 智能照明電路
為了實時采集閱讀架工作環境的光線強度,并實現自動照明功能.采用BH1750FVI 進行環境光強度測量,該芯片是日本RHOM 推出的一款內置16 Bit AD 轉換器的不區分環境光源的光電轉換芯片,具有接近于視覺靈敏度的分光特性,分辨率可達1 LX,采用標準IIC 通信接口,連接至樹莓派SDA1(GPIO2)、SCL1(GPIO3),如圖7所示.
LED 照明調節電路采用LED 大功率照明恒流驅動芯片AMC7150,AMC7150 具有4~40 V 的寬工作電壓,驅動電流最高可達1.5 A,可以驅動24 W 的高功率LED.AMC7150 內建PWM(脈沖寬度調變)與功率晶體管,只需5 顆外部零件,工作頻率由外部電容控制可達200 KHz.LED 照明調節電路電路圖8所示,AMC750 芯片5 腳,即LED_Ctrl 信號連接至樹莓派GPIO25,如圖8所示.當輸出為高電平(2-3.3 V)時,芯片內部驅動器被關斷;當輸出為低電平時,芯片內部驅動器導通.因此,通過調節GPIO25 控制信號的占空比,則可以調節LED 的亮度,滿足閱讀架智能照明的需求.

圖5 樹梅派與步進電機驅動器接口電路

圖6 ADXL345 與樹莓派接口電路

圖7 BH1750FVI 與樹莓派接口
云服務器軟件能接收讀者的閱讀狀態數據,并建立讀者閱讀檔案,供用戶訪問.為了方便移動端用戶的高并發訪問,有效利用Web 服務器的,防止服務器線程阻塞,云服務器采用Memcached 高效內存緩存技術+RabbitMQ 作為消息隊列服務,提供更快的訪問速度和更高的并發訪問能力.以Web API 的形式同時面向設備上傳與數據下載,提供基于Restful API 的接口,如圖9所示.
用戶移動端APP 功能包括注冊,登陸、信息瀏覽、數據監測、數據查詢、互動討論等.在用戶使用過程中,手機APP 通過監聽云服務器的信息,實時顯示用戶信息、設備信息、閱讀時間、閱讀姿態等閱讀信息,以方便用戶體驗,監測和分析用戶的閱讀習慣.智能閱讀架使用一段時間后,系統將自動的給出整體的評價參數、注意事項,建立用戶閱讀習慣檔案,供用戶查閱.

圖8 LED 照明調節電路與樹莓派接口

圖9 云服務器框圖
控制系統軟件主要包括3 組步進電機驅動、閱讀架XYZ 方向三軸角度檢測、閱讀架光強度信息采集、LED 控制照明等4 部分.通過安裝WiringPi 控制庫函數,基于C 語言編程,調用樹莓派板載的 GPIO、UART、IIC、SPI 等資源的驅動,由gcc 編譯器生成文件,并用sudo 調用執行文件,實現閱讀架控制系統的軟件設計,具體流程如圖10所示.
樹莓派默認是將SPI 和I2C 功能關閉的,因此需要先開啟SPI 和IIC 接口功能.然后,通過輪詢方式每隔一個固定時間,查詢讀者的閱讀坐姿,閱讀架三軸的角度,并根據檢測到的數據,控制3 組步進電機運動,適應讀者坐姿的要求.同時,查詢環境光強度,通過GPIO25 控制LED 照明裝置,實現閱讀架亮度的智能調節.
OpenCV 是一個基于發行的跨平臺計算機視覺庫,可以運行在Linux、Windows 和Mac OS 操作系統上,由一系列 C 函數和少量 C++ 類構成.這里,采用OpenCV 及其Python 接口實時讀取攝像頭數據,并完成閱讀姿態訓練和分類算法移植和軟件系統搭建.首先在樹莓派中安裝OpenCV 庫,為了能夠利用VideoCapture、cvtColor、imshow 等命令調用CSI 接口的攝像頭,需要打開/etc/下面的modules-load.d/ rpicamera.conf,在最后添加一行bcm2835-v4l2,即在系統啟動之后加載bcm2835-v4l2 這個模塊.

圖10 控制系統軟件流程
為了保證智能閱讀架可靠、穩定的工作,讀者閱讀姿態的實時監控與識別是系統的關鍵技術,其系統框圖如圖11所示.
閱讀架的單目攝像頭實時收集閱讀者的標準、前傾、后仰、左偏、右偏、抬頭、低頭等姿態數據,并對收集到的實時圖片數據進行灰度二值化處理,提取特征參數,構建讀者基本姿態模板庫,最后將讀者的姿態和模板庫姿態實時對比,進行讀者姿態動作的識別.
2.2.1 姿態圖像加權灰度處理
攝像頭獲取的讀者姿態實時RGB 圖像,具有豐富的形變,運動以及紋理特征,因此,為了降低識別的復雜度,減小計算工作量,保證識別的正確率,需要進行灰度化處理.這里采用加權平均進行灰度化處理,如式(1)所示.

大量的實驗表明,取Wr=0.30,Wg=0.59,Wb=0.11 時,能得到最合適的灰度圖像.

圖11 閱讀姿態識別流程圖
2.2.2 姿態圖像二值化
讀者姿態的邊緣分割是系統穩定工作的關鍵技術之一[5,6],這里采用分塊自適應閾值設定法,即對圖像按區域分成16×16 小塊,然后取每一小塊灰度平均值的1/8 作為閾值進行二值化,實驗表明,采用分塊自適應閾值設定法,讀者姿態圖像邊緣提取效果好,能滿足識別的要求.
2.2.3 特征提取和姿態識別
姿態圖像經二值化后,閱讀姿態輪廓已經基本呈現出來.觀察分析發現,左偏、右偏閱讀姿態圖中,主要邊緣成分具有明顯的偏離中心線的特征,因此,為了保證識別的效果,采用兩級識別法,第一級先識別左右偏閱讀姿態;第二級再識別其他閱讀姿態.
第一級識別過程如下:
(1)以二值圖片中心點為界,將圖片分為左右兩側;
(2)分別統計二值圖像左、右兩側的黑色像素點的總數量;
(3)若左側像素點明顯大于右側像素點,則讀者閱讀姿態為左偏;反之,讀者閱讀姿態為右偏.
大量的實驗表明,步驟3 中,左右兩側黑色像素點差異超過20%,能保證識別的精度.
第二級識別采用模板匹配技術[7,8],即將待識別閱讀者的二值姿態圖與預先存儲的各種姿態模板進行匹配,通過測量兩者之間的歐式距離,如式(2)所示,最小距離值所對應的模板姿態即為當前閱讀姿態.

服務器軟件主要負責讀者閱讀姿態數據接收、存儲,閱讀姿態分析等功能.包含3 個功能模塊:Web API接口、數據存儲和閱讀姿態統計分析平臺.Web API使用 Java 語言、Tomcat 容器、MyBatis-Spring 技術框架來構建.用戶的智能手機 APP 和閱讀習慣分析平臺均通過 Web API 來訪問數據.此外,與 Web API 的通訊采用 HTTPS 加密通道,以確保數據的安全性.閱讀數據在服務器后臺采用MySQL+MongoDB 數據庫實現存儲功能.閱讀架終端數據上傳后,MySQL 數據庫主要保存讀者的個人基本信息、閱讀時間,閱讀次數、7 種閱讀姿態時間統計,MongoDB 用于在線坐姿特征分析的存儲等,閱讀數據E-R 圖如圖12所示.
用戶Android 手機或平板可以通過Wifi 或移動網絡接入因特網來訪問閱讀架云端服務器.Android 版采用Java 語言、Android Studio 工具開發.手機或平板APP 由注冊/登錄、用戶信息、閱讀信息、閱讀姿態統計、閱讀分析報告5 個模塊構成.APP 的數據接口采用JSON 技術與數據接口交換數據.訪問前,讀者首先通過智能手機 APP 注冊用戶賬號,注冊成功并登錄后,可以修改用戶信息、瀏覽閱讀時間、閱讀姿態等信息,查看閱讀姿態統計圖等閱讀習慣檔案.
用戶閱讀姿態的正確識別是確保整個系統可靠工作的關鍵.因此,在實驗室環境下,選取了50 個讀者,每個讀者的7 種閱讀姿態各拍攝了10 次,建立了讀者姿態庫,其中,姿態庫中的圖片大小均為320×180 像素,RGB 格式.圖13所示為某一讀者的閱讀姿態圖.

圖12 閱讀數據E-R 圖

圖13 閱讀姿態圖
將圖13中RGB 圖,按照式(1)進行加權灰度處理以及分塊二值化處理,結果如圖14所示.
對比圖13、圖14可見,圖像二值化后,背景圖像得到了有效的過濾,讀者的7 種閱讀姿態凸顯出來.由于讀者坐在閱讀架的正中間,左偏和右偏具有明顯的偏離中心線的特征,另外5 種閱讀姿態邊緣輪廓清晰,肉眼可以直觀的進行辨別.
隨機選取25 人進行標準、前傾、后仰、抬頭、低頭、左偏、右偏7 種閱讀姿態訓練;剩余的25 人,采用兩級識別技術進行讀者閱讀姿態識別,其中攝像頭每隔2 s 捕捉一次讀者的坐姿,其識別正確率如表1所示.
分析表1數據發現,標準、前傾、后仰、抬頭、低頭5 種閱讀姿態識別率在90%以上,但是左偏和右偏識別率稍低于90%,究其原因發現,由于攝像頭每隔2 s 采集一次讀者的坐姿,在采集該坐姿瞬間,可能處于姿態過渡階段,因此造成了識別的誤判.此外,采集讀者閱讀姿態的時候,個別讀者沒有坐到閱讀架的正中間,也造成了左偏和右偏的識別稍微偏低.但是,7 種閱讀姿態的識別率整體在88%以上,仍然能夠滿足智能閱讀架日常使用的要求.
本文提出的智能閱讀架通過集成視頻模組,利用圖像識別算法實現對人體姿態的監控,在用戶不需要可穿戴設備的情況下就可以對使用者的姿態進行識別.通過識別到的用戶姿態,智能閱讀架可以進行智能調節,主動滿足使用者的姿態需求.同時,閱讀架與云端數據庫相連,能夠將用戶的使用時間、閱讀姿態等信息實時上傳組建用戶信息檔案庫,用戶可以隨時通過手機APP 訪問檔案庫,了解相關信息或進行遠程控制.
該設計產品可以廣泛推廣到幼兒園及中小學、高校、圖書館閱覽室、普通家庭,幫助閱讀者端正坐姿,挺直腰背,養成良好的閱讀習慣,提高學習效率,有效防止駝背、脊椎彎曲,保護青少年的身心健康,社會和經濟效益顯著.

圖14 灰度二值化后圖

表1 各閱讀姿態下系統的識別正確率