楊家樂 楊洋 郭超東 張涵 尹宏博 嚴文娟
摘要:隨著科技的發(fā)展,智能眼鏡為盲人的出行帶來了便,該文以樹莓派為硬件、Python為開發(fā)語言設(shè)計了一款盲人智能眼鏡,該眼鏡由圖像識別、超聲波避障、斑馬線邊緣檢測、語音提示四個模塊構(gòu)成,實現(xiàn)了識別紅綠燈及其示數(shù)、檢測斑馬線左右邊緣以及前方一定范圍內(nèi)障礙物并進行相應(yīng)的語音播報的功能,為盲人安全通過交通燈時提供輔助。
關(guān)鍵詞:智能眼鏡;樹莓派;Python
中圖分類號:TP391? ? 文獻標識碼:A
文章編號:1009-3044(2021)15-0085-03
1引言
隨著我國人口變化,盲人所占比例也在持續(xù)增長。據(jù)統(tǒng)計,中國擁有著世界上最大的盲人群體,2018年我國盲人數(shù)量已到達1700多萬[1],盲人的生活問題引起了各級政府及社會強烈的關(guān)注。近年來,隨著軟硬件技術(shù)迅速的發(fā)展,導(dǎo)盲杖及導(dǎo)盲音響設(shè)備等一系列的導(dǎo)盲手段涌現(xiàn)于市場之中,但因其技術(shù)的實施存在限制條件且不可保障使用者的安全性等缺點,智能眼鏡相關(guān)技術(shù)及研究應(yīng)運而生??v觀市場分析,智能眼鏡擁有手勢識別[2]、眼動跟蹤[3]及語音控制三大主要功能,目前主要應(yīng)用于盲人生活的安全區(qū)域內(nèi),但在出行方面是遠遠不夠的,尤其在通過斑馬線這種極度危險的路段時,現(xiàn)有設(shè)備所提供的功能存在一定缺陷,本文以樹莓派(Raspberry Pi 4b)為硬件基礎(chǔ)、Python為開發(fā)語言設(shè)計了一款能實現(xiàn)準確識別紅綠燈及其時間、檢測斑馬線邊界以及前方一定范圍內(nèi)障礙物及其方位,并通過揚聲器自動播報,從而實現(xiàn)輔助盲人安全通過交通燈的目的,為盲人的出行帶來了便利。
2系統(tǒng)設(shè)計
本設(shè)計由圖像處理系統(tǒng)、后端處理系統(tǒng)、避障模塊、斑馬線邊緣檢測模塊、語音模塊[4]組成,如圖1所示為系統(tǒng)設(shè)計框架圖。系統(tǒng)由攝像頭捕獲圖像幀,通過TCP傳輸協(xié)議將圖像數(shù)據(jù)傳輸給后端處理系統(tǒng),由圖像處理系統(tǒng)對圖像進行處理分析,篩選圖像識別結(jié)果,對結(jié)果進行顏色和字符匹配并將識別結(jié)果返回給樹莓派[5],再進行相應(yīng)的語音匹配,最后調(diào)用語音模塊進行相應(yīng)的語音輸出;樹莓派分別傳輸避障信息、邊緣檢測信息至避障模塊和斑馬線邊緣檢測模塊,當檢測到前方障礙物以及斑馬線邊緣時,進行相應(yīng)的語音匹配,最終調(diào)用語音模塊進行相應(yīng)的語音輸出。
3系統(tǒng)軟件設(shè)計
3.1圖像處理系統(tǒng)
圖像處理系統(tǒng)流程[6]如圖2所示。系統(tǒng)初始化后,Raspberry Pi調(diào)用攝像頭采集用戶面前的路況圖像,存儲到緩沖區(qū),將在緩沖區(qū)中的圖像作為separate_color的必要參數(shù)對圖像進行分離、過濾。接著對圖像進行紅綠燈顏色和數(shù)字的識別[7],紅綠燈顏色的識別的步驟如下:先通過cv.cvtColor函數(shù)將圖像的色彩空間從BGR轉(zhuǎn)換為HSV,接著通過numpy.array分別設(shè)定紅色和綠色的提取顏色閾值范圍,最后通過cv.inRange對HSV轉(zhuǎn)化的圖像進行雙閾值化操作[8],將處理完后的二值化圖像作為返回值;數(shù)字圖像的識別[9]步驟如下:調(diào)用recognition_traffic_number進行字符提取處理,先通過cv.resize對默認狀態(tài)下的圖像大小進行比例縮放,再通過easyocr.Reader[‘en].readtext對圖像中的文字進行提取,將處理完成后包含字符位置和字符的二維數(shù)組作為返回值。
3.2后端處理系統(tǒng)
后端處理系統(tǒng)[10]流程如圖3所示。Raspberry Pi系統(tǒng)是基于Linux的,板載了無線網(wǎng)絡(luò)適配器,可通過開啟無線網(wǎng)絡(luò)適配器的AP功能、設(shè)置靜態(tài)IP開啟IP路由轉(zhuǎn)發(fā),實現(xiàn)無線路由的功能,使數(shù)據(jù)高速率傳輸。后端處理系統(tǒng)啟動后,進入初始化狀態(tài),檢測網(wǎng)絡(luò)連接,可以通過WIFI或以太網(wǎng)連接終端設(shè)備,在系統(tǒng)中通過flsak框架[11]提供的route裝飾器將圖像識別recognition函數(shù)綁定到URL,設(shè)置methods參數(shù)的值為POST表示可以接受上傳文件請求,當該路由被請求后,調(diào)用recognition函數(shù)對圖像進行處理,對處理結(jié)果使用flask框架提供的jsonify進行數(shù)據(jù)打包返回,具體值包含運行狀態(tài)status,紅綠燈顏色color,計時器示數(shù)number,其次還有使用route裝飾器將終端設(shè)備屏幕刷新幀test_fps函數(shù)綁定到URL,若該路由被請求,通過test_fps函數(shù)獲取終端設(shè)備數(shù)據(jù),經(jīng)flask框架提供的jsonify對獲取數(shù)據(jù)結(jié)果打包上傳。
3.3避障模塊
避障模塊設(shè)計[12]如圖4所示。系統(tǒng)初始化后,調(diào)用start_obstacle_detection開始障礙物檢測,通過RPi.GPIO.setmode(RPi.GPIO.BCM)設(shè)置樹莓派引腳使用BCM編碼模式,使用RPi.GPIO.setup配置超聲模塊通道的輸入和輸出,通過GPIO.output和time.sleep設(shè)置超聲模塊輸出的高電平和低電平間隔0.01毫秒,再使用GPIO.input輪詢讀取超聲模塊的輸入值,若輸入值為高電平,記錄時間點1,繼續(xù)使用GPIO.input輪詢讀取超聲模塊的輸入值,若為低電平則,記錄時間點2,使用矢量算法獲取距離障礙物的距離,若小于設(shè)定范圍,調(diào)用語音模塊播報語音,使用time.sleep設(shè)置避障使用時間,結(jié)束避障后繼續(xù)開始障礙物檢測。
3.4斑馬線邊緣檢測模塊
斑馬線邊緣檢測模塊程序如圖5所示。系統(tǒng)初始化,調(diào)用start_left_edge_detection開始斑馬線左側(cè)邊緣檢測,通過RPi.GPIO.setmode(RPi.GPIO.BCM)設(shè)置樹莓派引腳使用BCM編碼模式,使用RPi.GPIO.setup配置黑白檢測模塊通道的輸入,使用GPIO.input輪詢讀取黑白檢測模塊的輸入值,當輸入值為低電平時,設(shè)定值自增1單位,當設(shè)定值超出設(shè)定范圍后,調(diào)用語音模塊播報語音提示,使用time.sleep配置調(diào)整時間,結(jié)束后繼續(xù)開始斑馬線邊緣檢測。同理,通過調(diào)用start_right_edge_detection對斑馬線右側(cè)進行邊緣檢測,并播報相應(yīng)的語音。
4系統(tǒng)功能測試
該系統(tǒng)主要實現(xiàn)3個功能:
圖像處理功能:設(shè)置交通燈紅綠燈倒計時時間均為30秒,當交通燈顯示紅燈30秒時,揚聲器播報語音“現(xiàn)在是紅燈,禁止通行”,當紅燈結(jié)束,交通燈顯示綠燈30秒時,揚聲器播報語音“現(xiàn)在是綠燈,可以通行”,當交通燈顯示綠燈13秒時,揚聲器播報語音“還有十秒綠燈結(jié)束,十、九、八……零”。圖像處理測試結(jié)果如圖6所示。
避障功能:設(shè)置檢測范圍為30cm,將測試設(shè)備放置于斑馬線中間位置,人為控制設(shè)備向正前方移動,舵機保持運轉(zhuǎn)狀態(tài)。當接近正前方30cm范圍內(nèi)的障礙物時,舵機指向障礙物并停止轉(zhuǎn)動,此時揚聲器播報語音“前方有障礙物”;設(shè)備繼續(xù)向前移動,此時舵機重新運轉(zhuǎn),當接近右前方30cm范圍內(nèi)的障礙物時,舵機指向障礙物并停止轉(zhuǎn)動,此時揚聲器播報語音“右前方有障礙物”;設(shè)備繼續(xù)向前移動,此時舵機重新運轉(zhuǎn),當接近左前方30cm范圍內(nèi)的障礙物時,舵機指向障礙物并停止轉(zhuǎn)動,此時揚聲器播報語音“左前方有障礙物”。避障測試結(jié)果如圖7所示。
斑馬線邊緣檢測功能:將測試設(shè)備放置于斑馬線中間位置,人為控制設(shè)備向左移動,當靠近斑馬線左邊界時,揚聲器重復(fù)播報語音“您已接近左邊界”,此時控制設(shè)備由左向右移動,揚聲器停止語音播報;當設(shè)備靠近右邊界時,揚聲器重復(fù)播報語音“您已接近右邊界”。斑馬線邊緣檢測測試結(jié)果如圖8所示。
5結(jié)束語
以樹莓派(Raspberry Pi 4b)為硬件基礎(chǔ)、Python為開發(fā)語言設(shè)計了一款具有圖像識別、超聲波避障、斑馬線邊緣檢測、語音提示功能,實現(xiàn)了紅綠燈顏色和數(shù)字的識別、斑馬線邊界以及前方一定范圍內(nèi)障礙物及其方位的檢測,并對檢測的結(jié)果通過揚聲器自動播報,從而實現(xiàn)輔助盲人安全通過交通燈的目的,為盲人的出行帶來了便利。
參考文獻:
[1] 陳鵬,陳智利,李龐躍,等.樹莓派3B+導(dǎo)盲系統(tǒng)設(shè)計與實現(xiàn)[J].西安工業(yè)大學(xué)學(xué)報,2020,40(3):305-309.
[2] 趙孫裕,石佳,董梅,等.基于手勢識別的小車控制[J].內(nèi)燃機與配件,2020(17):204-205.
[3] 栗戰(zhàn)恒,鄭秀娟,劉凱.移動設(shè)備視線跟蹤技術(shù)研究進展[J].計算機工程與應(yīng)用,2018,54(24):6-11,148.
【通聯(lián)編輯:聞翔軍】