楊家樂(lè) 楊洋 郭超東 張涵 尹宏博 嚴(yán)文娟



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