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