楊 勝 陶 磊 賀磊盈
(浙江理工大學 杭州 310018)
目前我國約有盲人1000萬,占全世界盲人總數的18%。每年平均約有45萬人失明,即幾乎每分鐘便會出現一例新盲人。盲文學習方式單一,且現行盲文無音調,存在相同或相似點陣,學習難度極大。因此研發一款能夠幫助盲人在未能學習盲文的時候閱讀盲文信息或學習盲文的設備非常有必要。該裝置能解決盲人閱讀困難的問題,讓更多盲人有機會接觸盲文,學會盲文,讓盲文的學習變得更加高效、簡單,提高盲人的受教育水平,進而提升盲人的就業能力,改善盲人的生活狀況。
國外的盲人人機信息交互研究工作已顯露出要由實驗室轉向商品化的明顯跡象。克拉荷馬大學Zhenfei Tai等提出了一種新的盲文識別系統,可用于自動確定垂直和水平方向上的旋轉角度、凹痕和間距,確定圖像旋轉角度的關鍵因素[1]。Sohar大學,阿曼大學Kebangsaan Malaysia的Abdallah M.Abualkishik等為古蘭經盲文翻譯(QBT)提供了一個特定的翻譯,實現將古蘭經經文和他們的背誦規則翻譯成盲文代碼[2]。在國內,盲文識別研究也已取得一定研究成果,清華大學江銘虎等已初步實現了盲文至漢字的轉換,為盲文的計算機翻譯提供了方法[3]。長春大學李念峰等運用圖像處理技術進行了基于圖像處理的盲文自動識別系統的研究,能較為準確地識別并翻譯盲文圖像[4]。長春理工大學尹佳利用數字攝像機采集盲文圖像,并能讀出漢語拼音,有效地解決了單雙面紙介盲文的提取識別問題[5]。西安科技大學黨海巖等于2007年對中國盲文計算機系統語句級輸入法進行了研究,進一步優化了盲文翻譯的算法步驟,提高了翻譯的準確度[6]。昆明理工大學李榮瑞等構建卷積神經網絡自動學習盲文特征,在多種噪聲條件下均可取得較高的識別率[7]。河海大學李婷等提出一種基于深度學習的盲文點字識別方法,利用深度模型——堆疊去噪自動編碼器,解決了盲文識別中特征的自動提取與降維等問題[8]。東北大學王倩倩等采用垂直分割法和連通域標簽類分割法相結合的形式對簡譜符號進行分割,將識別組合好的明文簡譜轉換為盲人可以閱讀學習的樂譜[9]。蘭州大學劉彪通過設計基于卷積神經網絡(CNN)的盲文音樂圖片識別模型,形成了以CNN為基礎的盲文音樂圖片識別方法,達到了很好的準確率[10]。以上這些方法和系統大多數都用來識別盲文,但不適合盲人直接閱讀盲文書籍。
本文主要研究內容是利用半導體指紋傳感器采集盲文點陣信息并研發出一套有效準確的穿戴式盲文識別裝置。通過圖像處理技術對采集的盲文圖像信息進行預處理、二值化處理、開運算、連通域檢測、重心計算及坐標索引號的轉換,從而準確獲取盲文編碼,再與國家標準盲文庫進行比對獲得正確的盲文信息,最終通過語音模塊播放。
盲文分很多種,我國現行盲文經《新盲字方案》規定,該方案有五十二個字母,每個音節有聲韻兩個點符組成,分詞連寫,必要時使用少量聲調符號以區別同音字和生僻詞。每個盲文由3×2的點陣構成,通過不同的排列方式代表不同的意義,把盲文和漢字聯系在一起。同時盲文凸點間距約為2.4mm左右,相鄰點陣間的距離約為4mm。
圖像采集部分為ZFMS-21系列半導體指紋采集模塊,模塊以高性能高速DSP處理器AS601為核心,采集圖像的尺寸192×192,采集頭的有效區域為9.6mm×9.6mm,分辨率為508DPI。這樣,每個盲文凸點在圖像中的相鄰距離為48個像素點。本文研究過程中采用的圖像采集裝置如圖1所示。

圖1 半導體指紋傳感器
當前市面上大多數半導體指紋傳感器均已要求接觸表面為微導電環境,而盲文大多數為紙質。在紙質盲文所造成的絕緣環境下,半導體指紋傳感器無法采集指紋圖像數據。在紙質盲文上涂上一層導電膠可以滿足預期的采集要求,后期為滿足移動使用在任意紙質盲文上,也可以在半導體指紋傳感器上加裝導電碳膜。這些能為半導體指紋傳感器營造出一個很好的微導電環境,從而實現盲文點陣圖像的有效采集。
由于半導體指紋傳感器傳感面積的尺寸較小,采集區域最多可包含兩個盲文點陣。這與數字攝像機采集盲文相比,控制了其他點陣對目標點陣的干擾,可以從硬件上實現對單個點陣的識別,有效提高了盲文識別的準確性。同時由于獲取盲文圖像尺寸像素較小,盲文圖像的傳輸速度較快。
盲文點陣的提取使用的數學形態學處理包括二值化、開運算、連通域檢測、形狀篩選和重心計算。通過這一系列的運算即可得到各點陣的重心坐標、大小和周長。
2.3.1 盲文圖像的預處理
由于半導體指紋傳感器為接觸式電容傳感器,使用時圖像會因為使用者指尖按壓用力不均勻,接觸面不清潔等原因產生較多毛刺。因此首先要對圖像進行二值化處理。設定一個閾值,根據閾值將大于閾值的像素點的灰度值設置成255,小于閾值的像素點設為0,也就是將整個圖像呈現出明顯的黑白效果。由于采集的圖像灰度值和按壓力度有關,所以應該設置動態閾值,動態閾值采用OTSU算法[11~12]。
盲文書為紙質材料,對盲文的采集存在很多干擾,往往采集的圖像會存在一些毛刺點,因此要對處理過的二值圖像進行開運算處理。通過開運算能夠很好地將盲文圖像存在的毛刺點過濾,提高原點篩選的準確性。
2.3.2 凸點重心的提取
對比多種連通域標記算法[13~15],最終選擇通過使用更高效的Two-Pass方法[15]檢測連通域并記錄點陣個數、單個點陣中的各點坐標以及各個點陣的周長和面積,可在較短時間內完成連通域的檢測和關鍵信息的采集。
在理想情況下,盲文凸點為標準圓形特征。使用圓形特征可很好地對目標點陣進行篩選。圓度的公式可以表示為

其中S表示面積,P表示周長(點陣面積和周長均可由連通域算法得到)。當C=1的時候,表示圖像為一個完美的圓形。如果圖形和圓差別越大,其C值會變的越大,因此需要設定一個標準閾值C0來進行判斷。若是計算出來的C值大于C0,則說明和圓偏差較大,反之則形狀接近圓。
同時設定一個最小面積Smin來排除較小點的干擾,將面積小于Smin的點陣都排除掉,這一定程度上也彌補了開運算缺陷,從而提升識別的正確率。最終計算每個連通域的重心,并作為凸點在圖像中的位置。重心的計算公式如下:

其中n表示連通域中像素點的個數。
2.4.1 盲文凸點位置的排序
通過凸點提取運算得到各點陣的重心坐標后,為方便得到各個盲文凸點對應的索引號,應將圖像坐標系中的各個盲文凸點都投影到一個新的盲文坐標系中。盲文坐標系的相關參數定義如圖2所示。盲文點陣的行方向為盲文坐標系的X軸,盲文點陣的列方向為Y軸,盲文坐標系的原點位于盲文點陣中左上方。盲文坐標系和圖像坐標系之間存在以下變換關系:

其中λ為投影的縮放比例,等于圖像中相鄰盲文凸點之間距離的倒數,即1/48;θ為盲文坐標系的X軸和圖像坐標系x軸的夾角;x0、y0分別為盲文原點在圖像坐標系下的橫、縱坐標。
根據盲文點的特征可以發現,同一組盲文點在圖像坐標系的間距值只有四種情況,即48,48 2,96和48 5,它們分別可以描述兩個點之間的相對位置(如圖3所示)。如果距離值是48,那么兩個盲文點的理想位置關系是水平或豎直相鄰,它們之間連線的矢量方向為0°或90°;如果距離值為96,那么兩個盲文點的理想位置關系是豎直,它們之間連線的矢量方向為90°;如果距離值為48 2,那么兩個盲文點的理想位置關系是傾斜,它們之間連線的矢量方向為45°或135°;如果距離值為48 5,那么兩個盲文點的理想位置關系是傾斜,它們之間連線的矢量方向為arctan(2)°或arctan(-2)°。

圖2 盲文坐標系

圖3 盲文點間的四種間距
根據這些信息確定盲文坐標系同圖像坐標系的夾角,具體步驟如下:
1)搜索盲文點陣中相距最遠的兩個點;
2)計算最遠兩點之間的距離,并同以上四種距離進行比對,選擇最接近的一種;
3)計算兩點之間的方向,并分別計算同理想情況下的方向的夾角,其中角度最小的夾角即為θ角;
接下來確定偏移量(x0,y0)。首先根據式(4)對所有凸點在圖像坐標系下的坐標旋轉-θ°得到一組新的坐標:

然后從中分別找出X/Y軸的最小值,最小值對應的點就作為盲文坐標系的原點。假設該點在盲文坐標系中的坐標為(Xmin,Ymin),那么可以通過式(5)計算得到盲文原點在圖像坐標系下的坐標(x0,y0)。

由于紙質材料不規則和采集時的力度不均勻可能導致重心計算得到的各凸點間距有偏差,因此可以采用四舍五入的方式進行取整,使各盲文凸點在新坐標系中的坐標值均為整數。取整函數如下所示:

其中int函數就是對變量X和Y進行四舍五入后取整,取整后的c、r分別描述凸點的列號和行號。
通過以上運算即可得到盲文凸點的相對位置,用坐標(i,j)表示第j行,i列上的點。再將這些坐標進行縱向排序(如圖3所示),起點為坐標(0,0),終點為坐標(1,2)。
2.4.2 盲文編碼的轉換
根據已得的盲文排序進行二進制數的轉換,確定該點陣對應的二進制數。如圖4所示,盲文上的6個點分別對應6位二進制數的某1位,從1到6分別對應二進制數的低位到高位。若該點存在則該點對應的位為0,不存在則為1,即可得到該盲文點陣對應的二進制數,該二進制數即為盲文點陣的索引號。6位二進制數對應64種情況,包括了所有的聲母韻母,根據盲文點陣及其對應的索引號制作相關的庫,最終通過該庫即可找到索引號對應的聲母/韻母。

圖4 盲文編碼
例如圖5坐標排序為{1,5},對應二進制編碼為010001,十進制數為17。將索引號在庫中進行搜索,得到其對應的聲母韻母為“ie”。

圖5 盲文編碼實例
經多次實驗確定參數的閾值:圓度閾值C0=1.3,輪廓長度閾值為40,最小面積Smin為150。圖6顯示兩幅盲文圖像的處理結果,從圖中可以看出,該算法能準確地定位凸點的重心。最后兩幅圖像得到的二進制數分別為“110111”和“111001”,對應的十進制數分別為“55”和“57”,檢索得到它們對應的聲母韻母為“ou”和“iong”。

圖6 盲文圖像的處理結果
觀察可得圖6(b)和圖6(d)中存在一些小面積白點,這些干擾點是由于紙質書籍上存在毛刺導致的,但這些點均不滿足面積要求,無法達到最小面積150,因此均會被排除,不會對盲文凸點的識別造成影響。同時觀察圖6(b)和圖6(d)發現,圖6(b)左下角區域和圖6(d)右上方及中央區域均存在大塊白色不規則區域,是由于按壓力度不一致導致的,但在圓度計算公式中,這些區域的圓度值均小于圓度閾值C0=1.3,不滿足圓度要求,因此均會被排除,不會對盲文凸點的識別造成影響。最終表明提出的盲文識別算法能去除各種干擾,算法的穩定性較好。
經過對現行漢字中的聲母韻母共47個字符(其中聲母23個,韻母24個)進行了每個字符50次的實驗(共聲母1150個,韻母1200個),基于視覺的穿戴式盲文識別裝置的算法對盲文點陣的正確識別率均能達到95%以上。證明該算法能較好地處理盲文點陣,并較為準確讀取信息。

表1 多次識別字符實驗結果
由于盲文的特殊性,提出的方法存在一些問題。盲文圖像,存在一些點陣的上下偏差(如圖7“a”和“i”)。針對這種情況,單獨點陣識別,容易產生錯誤。一種解決的方法是根據前面掃描的盲文,估計水平線(圖7 line1)的位置,進而判定當前盲文凸點首行的大概位置,這樣就可以確定凸點的排列順序。

圖7 上下偏差實例
此外,盲文凸點存在左右偏差(如圖8的“l”和“un”),遇到這種情況,單獨點陣識別,容易產生錯誤。由于算法、傳感器特點的影響,本算法暫時無法實現對這種左右偏差的準確識別。所以算法在遇到這種情況時,會將兩種發聲情況同時放出,由盲人使用者根據上下文情況,選擇發聲。后期可考慮人工智能根據上下文智能篩選讀音。

圖8 左右偏差實例
論文提出的方法能有效利用二值化、開運算、連通域檢測、形狀篩選和重心計算等圖像處理算法提取盲文圖像中的盲文字符,并能準確地轉化為文字信息和語音信息。下一步工作,進一步優化算法,提高識別速度和精確度,讓該設備的識別更為快捷和精準。項目成果有很大的應用前景,為盲文學習與閱讀提供了更便利的方法,能在很大程度上改善目前盲人學盲文難的現狀,提升盲人的就業能力,改善盲人的生活水平,對社會和國家有著重大的意義。