亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenCV視覺(jué)庫(kù)的手寫(xiě)數(shù)字識(shí)別系統(tǒng)

        2021-10-26 03:48:40周原銳張逸群曹遠(yuǎn)航孫慧慧
        關(guān)鍵詞:嵌入式文本

        周原銳, 張逸群, 曹遠(yuǎn)航, 孫慧慧

        (吉林大學(xué) 儀器科學(xué)與電氣工程學(xué)院, 長(zhǎng)春 130061)

        0 引 言

        近年來(lái)隨著技術(shù)不斷革新, 嵌入式設(shè)備的計(jì)算能力不斷提升, 各種復(fù)雜的計(jì)算被置于以嵌入式系統(tǒng)為核心的終端設(shè)備上, 小巧的嵌入式硬件設(shè)備已經(jīng)完全可以運(yùn)行復(fù)雜的圖像處理分析算法[1]。

        目前字符識(shí)別研究主要集中在電腦端, 字符識(shí)別系統(tǒng)大部分也只能運(yùn)行在電腦端。但傳統(tǒng)的字符識(shí)別設(shè)備體積大, 在便捷性方面存在諸多缺陷。隨著嵌入式系統(tǒng)的不斷發(fā)展, 為字符識(shí)別系統(tǒng)提供了一個(gè)新的發(fā)展方向。相比電腦端的字符識(shí)別系統(tǒng), 基于嵌入式的字符識(shí)別系統(tǒng)不僅小巧便攜, 功耗低, 而且擁有較好的處理性能, 易編程。此外, 嵌入式設(shè)備安裝方便, 設(shè)備可以快速啟動(dòng)且穩(wěn)定運(yùn)行, 實(shí)時(shí)性強(qiáng), 能很好地滿(mǎn)足快速實(shí)時(shí)的字符識(shí)別要求[2]。因此, 筆者將圖像處理分析算法移植到小巧的高性能嵌入式設(shè)備樹(shù)莓派4, 設(shè)計(jì)了一種基于視覺(jué)庫(kù)OpenCV(Open Source Computer Vision Library)的手寫(xiě)數(shù)字識(shí)別系統(tǒng)。

        1 系統(tǒng)硬件組成

        系統(tǒng)的主體硬件平臺(tái)----樹(shù)莓派4是基于Linux操作系統(tǒng)的嵌入式設(shè)備, 其處理器芯片為1.5 GHz、 64位的BCM2711 A72, 能耗低、 運(yùn)行穩(wěn)定, 能完全滿(mǎn)足文中的圖像處理需求。圖像采集模塊選用支持500萬(wàn)像素的攝像頭, 能清晰地完成手寫(xiě)數(shù)字圖像采集, 顯示器顯示攝像頭采集實(shí)時(shí)視頻流圖像和數(shù)字識(shí)別結(jié)果。樹(shù)莓派4開(kāi)發(fā)板通過(guò)IIC(Inter-Integrated Circuit)接口連接舵機(jī)控制板, 用舵機(jī)控制二自由度舵機(jī)云臺(tái)轉(zhuǎn)動(dòng), 使攝像頭能采集[-90°,90°]范圍內(nèi)的視頻流, 為短距離、 大面積的手寫(xiě)數(shù)字識(shí)別提供基礎(chǔ)。舵機(jī)控制板的核心為PCA9685芯片, PCA9685為12位脈沖寬度調(diào)制 (PWM: Pulse Width Modulation)信號(hào)發(fā)生器, 可支持最多16路信號(hào)輸出, 使用IIC通信協(xié)議與樹(shù)莓派通信, 大大節(jié)約了樹(shù)莓派的系統(tǒng)資源。系統(tǒng)硬件設(shè)計(jì)框圖如圖1所示, 硬件實(shí)物圖如圖2所示。

        圖1 硬件設(shè)計(jì)框圖 圖2 硬件實(shí)物圖 Fig.1 Hardware design block diagram Fig.2 Physical drawing of hardware

        2 軟件設(shè)計(jì)

        筆者設(shè)計(jì)的系統(tǒng)以Python作為設(shè)計(jì)語(yǔ)言, 以O(shè)penCV視覺(jué)識(shí)別庫(kù)作為圖像識(shí)別算法主體框架, 通過(guò)自主訓(xùn)練模型, 達(dá)到快速實(shí)時(shí)識(shí)別手寫(xiě)數(shù)字的目的。OpenCV是一個(gè)能在Linux操作系統(tǒng)上運(yùn)行的開(kāi)源機(jī)器視覺(jué)庫(kù), 其中有很多數(shù)字圖像處理函數(shù), 利用OpenCV編程能降低成本和復(fù)雜性, 提高識(shí)別率。此外, OpenCV能提供豐富的Python接口供本系統(tǒng)使用[3]。筆者除了使用OpenCV進(jìn)行圖像的預(yù)處理外, 還采用了其中的3種算法接口訓(xùn)練分類(lèi)模型, 分別是KNN(K-Nearest Neighbor)、 SVM(Support Vector Machine)和ANN(Artificial Neural Network)接口。

        整個(gè)系統(tǒng)的手寫(xiě)數(shù)字識(shí)別流程包括圖片拼接、 圖像前期處理、 文本定位與輪廓檢測(cè)、 數(shù)字分割、 歸一化和數(shù)字識(shí)別6個(gè)環(huán)節(jié)[4], 數(shù)字識(shí)別流程圖如圖3所示。系統(tǒng)軟件設(shè)計(jì)中還包括算法移植和云臺(tái)驅(qū)動(dòng), 系統(tǒng)整體程序流程圖如圖4所示。驅(qū)動(dòng)云臺(tái)時(shí), 將樹(shù)莓派內(nèi)的IIC協(xié)議端口打開(kāi)并連接舵機(jī)控制板, 通過(guò)IIC協(xié)議端口讀寫(xiě)PCA9685內(nèi)部寄存器以控制舵機(jī)轉(zhuǎn)動(dòng), 進(jìn)而實(shí)現(xiàn)對(duì)云臺(tái)的控制。

        圖3 數(shù)字識(shí)別流程圖 圖4 系統(tǒng)整體程序流程圖 Fig.3 Digital identification flow chart Fig.4 Flow chart of the system

        2.1 圖片拼接

        利用舵機(jī)云臺(tái)控制攝像頭角度, 同一紙張?jiān)诓煌臄z角度下的拍攝結(jié)果如圖5所示。

        圖5 不同角度下的拍攝結(jié)果Fig.5 Shooting results from different angles

        由于拍攝的圖片存在拍攝距離和角度上的差異, 直接拼接會(huì)使結(jié)果出現(xiàn)重疊、 空白等現(xiàn)象, 從而影響識(shí)別結(jié)果。因此, 筆者采用特征匹配的方法對(duì)原始圖片進(jìn)行拼接處理。在實(shí)際應(yīng)用環(huán)境下, 不進(jìn)行二值化處理的圖片往往存在著大量特征點(diǎn), 因此筆者使用暴力匹配器(BruteForce)和KNN的方法對(duì)原始圖片進(jìn)行拼接。通過(guò)提取特征點(diǎn)、 特征點(diǎn)匹配以及透視變換等步驟, 獲得拼接結(jié)果, 圖5的拼接效果圖如圖6所示。

        2.2 圖像前期處理

        圖像前期處理分為灰度化、 二值化和傾斜檢測(cè)與校正3個(gè)環(huán)節(jié)[5]。該實(shí)驗(yàn)中圖像灰度化處理使用OpenCV中CvCameraViewFrame類(lèi)的gray()方法, 二值化采用最大類(lèi)間方差(OTSU)法選取閾值, 灰度化與二值化后的結(jié)果如圖7所示。

        圖6 圖片拼接效果圖 圖7 灰度化、 二值化效果圖 Fig.6 Image mosaic renderings Fig.7 Grayscale, binarization effect drawing

        圖像采集過(guò)程中, 如果攝像頭的角度或樣本位置稍有偏差, 會(huì)使采集的圖像呈現(xiàn)一定角度的傾斜, 所以需要進(jìn)行傾斜檢測(cè)與校正[6]。筆者采用Hough變換法,首先將目標(biāo)像素在笛卡爾坐標(biāo)系中的坐標(biāo)(x,y)變換到參數(shù)空間(ρ,θ)

        ρ=xcosθ+ysinθ

        (1)

        通過(guò)對(duì)θ取合適的范圍{θ1,θ2,…,θn}, 構(gòu)造一個(gè)離散的參數(shù)空間, 并設(shè)計(jì)一個(gè)計(jì)數(shù)器矩陣A(ρi,θi)(1≤i≤n), 對(duì)每個(gè)目標(biāo)點(diǎn)用參數(shù)空間中的每個(gè)值做變換

        ρi=xicosθi+yisinθ,i(1≤i≤n)

        (2)

        計(jì)數(shù)器的局部極大值對(duì)應(yīng)為圖像在笛卡爾坐標(biāo)系中存在的直線。設(shè)定一個(gè)閾值T, 使T=λmaxA(ρ,θ)(λ<1)。當(dāng)A(ρ,θ)≤T時(shí), 置零。最后通過(guò)對(duì)A(ρ,θ)累加獲得A′(θ), 其中最大元素即為傾斜角度。

        為防止傾斜校正旋轉(zhuǎn)過(guò)程中數(shù)字縮小而使信息丟失, 先采用插值算法放大以顯示所有圖像[7]。然后用霍夫直線函數(shù)cv2.HoughLinesP()對(duì)字符中所有直線進(jìn)行線段檢索; 根據(jù)線段計(jì)算夾角, 即所有直線的傾斜角; 求出所有直線傾斜角的加權(quán)平均值; 利用傾斜角的加權(quán)平均值進(jìn)行傾斜校正。

        2.3 文本定位與輪廓檢測(cè)

        實(shí)際使用中, 數(shù)字往往只占據(jù)圖片的一部分而非整體, 如果將整個(gè)圖片作為輸入, 計(jì)算量將會(huì)十分龐大, 因此需要定位文本所在區(qū)間[8]。因?yàn)楸疚哪繕?biāo)文本與背景區(qū)域?qū)Ρ榷容^大, 采用Canny邊緣檢測(cè)的方法進(jìn)行文本定位[9], 包括以下4個(gè)步驟:

        1) 用模糊半徑進(jìn)行高斯模糊, 平滑圖像, 去除噪聲;

        2) 計(jì)算圖像梯度, 將圖像梯度分為水平、 垂直和斜對(duì)角;

        3) 非最大值抑制, 利用梯度方向判斷像素點(diǎn)在梯度的兩種方向上是否為局部的最大值, 若是, 則需要抑制該像素;

        圖8 文本定位與輪廓檢測(cè)結(jié)果圖Fig.8 Text location and contour detection results

        4) 用滯后閾值化選擇邊緣, 檢查某一條邊緣是否明顯到足以作為最終輸出, 去除所有不明顯的邊緣[10]。

        利用OpenCV使用Canny邊緣檢測(cè)需要調(diào)用cv2.Canny()函數(shù), 在完成依靠邊緣檢測(cè)的文本定位后, 采用cv2.findContours()對(duì)文本區(qū)域輪廓進(jìn)行檢測(cè), 獲取文本的具體位置。文本定位與輪廓檢測(cè)結(jié)果如圖8所示。

        2.4 數(shù)字分割

        由于相鄰的數(shù)字都存在一定的間隔, 筆者利用垂直投影法進(jìn)行數(shù)字分割, 提取文本區(qū)域后在垂直方向進(jìn)行的投影可用

        (3)

        圖9 分割后的數(shù)字圖片F(xiàn)ig.9 The segmented digital picture

        表示[11]。其中s(i,j)對(duì)應(yīng)文本行的二值圖。將掃描線從圖像左側(cè)向右側(cè)移動(dòng), 分別移動(dòng)到首個(gè)V(j)≠0的點(diǎn)ja和首個(gè)V(j)=0的點(diǎn)jb, 點(diǎn)ja和點(diǎn)jb分別為第1個(gè)字符的左右邊界線, 采用同樣的方式將掃描線向右移動(dòng), 找出剩下字符的左、 右邊界, 再依照上述方法對(duì)數(shù)字文本塊進(jìn)行垂直投影, 最終實(shí)現(xiàn)數(shù)字分割[11]。數(shù)字分割后的圖片如圖9所示。

        2.5 歸一化

        圖10 歸一化結(jié)果圖Fig.10 Normalized result graph

        經(jīng)過(guò)分割后的單一數(shù)字圖片不滿(mǎn)足識(shí)別算法的輸入層的輸入條件, 需要對(duì)數(shù)字圖片進(jìn)行歸一化處理。在確定歸一化模板圖像的尺寸(28×28像素)后, 尋找其與原始圖像寬度和高度之間的函數(shù)關(guān)系, 使原始圖像與模板圖像具有相同的寬度和高度。歸一化過(guò)程的理論基礎(chǔ)是圖像的縮放原理, 根據(jù)原始圖像與模板圖像的尺寸, 計(jì)算原始圖像要縮小或放大的比例, 再線性地調(diào)整原始圖像的寬度和高度。筆者使用OpenCV中的cv2.resize()函數(shù)對(duì)圖片進(jìn)行歸一化, 歸一化結(jié)果如圖10所示。

        3 手寫(xiě)數(shù)字分類(lèi)算法的對(duì)比

        在對(duì)獲取到的圖片進(jìn)行處理后, 采取合適的算法進(jìn)行手寫(xiě)數(shù)字識(shí)別。為提高在嵌入式設(shè)備上的使用效率, 筆者對(duì)比了3種不同的手寫(xiě)數(shù)字分類(lèi)算法, 分別是K最近鄰、 支持向量機(jī)和人工神經(jīng)網(wǎng)絡(luò)。

        3.1 K最近鄰分類(lèi)算法

        K最近鄰(KNN)是機(jī)器學(xué)習(xí)中的一種非參數(shù)估計(jì)分類(lèi)方法[12], 主要包括以下幾個(gè)步驟:

        1) 用歐氏距離公式

        (4)

        求解已分類(lèi)的訓(xùn)練樣本與未分類(lèi)樣本之間的相似度或距離;

        2) 在訓(xùn)練樣本中, 尋找出K個(gè)與未分類(lèi)樣本最相近的樣本;

        3) 根據(jù)尋找出的K個(gè)訓(xùn)練樣本所屬的類(lèi)別, 對(duì)未分類(lèi)樣本進(jìn)行歸類(lèi)。

        若找出的K個(gè)訓(xùn)練樣本全部歸類(lèi)于同一個(gè)類(lèi)別, 則未分類(lèi)樣本也被歸類(lèi)于此類(lèi)別; 否則將需要針對(duì)每個(gè)候選類(lèi)別分別評(píng)分, 按評(píng)分規(guī)則歸類(lèi)未分類(lèi)樣本[13]。

        3.2 支持向量機(jī)分類(lèi)算法

        支持向量機(jī)(SVM: Support Vector Machine)是一種對(duì)數(shù)據(jù)二元分類(lèi)的線性分類(lèi)器, 從線性可分情況下的最佳分類(lèi)面發(fā)展而來(lái)[14]。其分類(lèi)原理就是尋找一個(gè)能將兩類(lèi)樣本完全精確分類(lèi)的分界線(即超平面), 并使安全間隔越大越好[15]。該實(shí)驗(yàn)中手寫(xiě)數(shù)字分類(lèi)問(wèn)題就是不斷地將多個(gè)二分類(lèi)問(wèn)題進(jìn)行拆分, 轉(zhuǎn)化為有限個(gè)十分類(lèi)問(wèn)題[16]。

        3.3 人工神經(jīng)網(wǎng)絡(luò)分類(lèi)算法

        圖11 數(shù)字識(shí)別結(jié)果圖Fig.11 Digital identification result graph

        人工神經(jīng)網(wǎng)絡(luò)(ANN)是一種進(jìn)行并行信息處理的算法模型[17]。人工神經(jīng)網(wǎng)絡(luò)采取的方法是將任務(wù)分派給許多神經(jīng)元(也稱(chēng)為節(jié)點(diǎn)), 且每個(gè)神經(jīng)元都能“近似”生成輸入函數(shù)。“近似”是指用一個(gè)比較簡(jiǎn)單的函數(shù)表示一個(gè)更復(fù)雜的函數(shù)[18]。

        筆者在OpenCV提供的ANN接口中, 通過(guò)定義輸入層、 隱藏層以及輸出層等神經(jīng)網(wǎng)絡(luò)層, 創(chuàng)建神經(jīng)網(wǎng)絡(luò)模型, 再設(shè)置網(wǎng)絡(luò)參數(shù)、 激活函數(shù)和迭代條件等參數(shù), 初始化神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)。其中, 神經(jīng)網(wǎng)絡(luò)模型的輸入采用手寫(xiě)數(shù)字字符圖片數(shù)據(jù)集MNIST[19]。圖10識(shí)別后的結(jié)果如圖11所示。

        4 測(cè)試結(jié)果與分析

        筆者使用了OpenCV中的KNN、 SVM和ANN3種不同的算法分別訓(xùn)練和測(cè)試數(shù)字識(shí)別模型, 并根據(jù)實(shí)際測(cè)試結(jié)果進(jìn)一步對(duì)ANN模型進(jìn)行了不同層數(shù)、 不同次數(shù)的訓(xùn)練和測(cè)試。首先在電腦端使用MNIST數(shù)據(jù)集進(jìn)行訓(xùn)練和模擬測(cè)試, 使用不同算法實(shí)現(xiàn)的指標(biāo)如表1所示。

        表1 不同算法在電腦端的訓(xùn)練與模擬識(shí)別結(jié)果

        注: 表1中ANN-150-20000表示使用150個(gè)中間層, 訓(xùn)練20 000次后的模型。

        然后將模型移植到樹(shù)莓派平臺(tái)上測(cè)試。在4種不同的ANN模型中, 移植識(shí)別速度較快、 識(shí)別率較高、 體積較小的ANN-100-30000作為其代表。在光照良好、 紙面干凈且與文本對(duì)比度較高的情況下, 識(shí)別28×28像素的單個(gè)字符所用時(shí)間和識(shí)別率如表2所示。

        表2 不同算法在樹(shù)莓派平臺(tái)的實(shí)際識(shí)別結(jié)果

        從測(cè)試結(jié)果可以分析得出, 雖然KNN和SVM訓(xùn)練的模型相對(duì)于ANN的識(shí)別率較高, 但在樹(shù)莓派上的識(shí)別時(shí)間都要遠(yuǎn)大于ANN。在應(yīng)用中, 較長(zhǎng)的識(shí)別時(shí)間將會(huì)導(dǎo)致系統(tǒng)延遲, 大大降低識(shí)別效率。因此, 利用ANN訓(xùn)練模型對(duì)手寫(xiě)數(shù)字進(jìn)行識(shí)別可行性更高。

        在默認(rèn)狀態(tài)(舵機(jī)位于0°位置)下, 該系統(tǒng)裝置整體尺寸約為: 長(zhǎng)98 mm, 寬60 mm, 高95 mm。整體最大功耗為15 W, 經(jīng)測(cè)試, 正常使用過(guò)程中功耗小于15 W。該系統(tǒng)的優(yōu)點(diǎn)是, 可在體積小巧、 低功耗的嵌入式設(shè)備上實(shí)現(xiàn)視頻幀的智能化處理, 同時(shí), 搭載的舵機(jī)云臺(tái)可以擴(kuò)大拍攝的角度范圍至[-90°,90°], 利用圖片拼接和數(shù)字分割技術(shù)可實(shí)現(xiàn)大面積識(shí)別, 彌補(bǔ)了傳統(tǒng)嵌入式前端視頻設(shè)備的不足。此外, OpenCV提供的大量視覺(jué)處理函數(shù)可以大大減少智能算法設(shè)計(jì)的工作量和資源占用量, 這在嵌入式設(shè)備上很有優(yōu)勢(shì)[20]。

        5 結(jié) 語(yǔ)

        筆者利用樹(shù)莓派設(shè)計(jì)了一種基于OpenCV的手寫(xiě)數(shù)字識(shí)別系統(tǒng), 通過(guò)舵機(jī)云臺(tái)實(shí)現(xiàn)了對(duì)攝像頭拍攝方向的控制, 并比較了KNN、 SVM和ANN 3種算法進(jìn)行手寫(xiě)數(shù)字識(shí)別時(shí)在識(shí)別速度、 識(shí)別準(zhǔn)確率、 模型體積等方面的區(qū)別。結(jié)果證明, 本系統(tǒng)可以適應(yīng)手寫(xiě)數(shù)字識(shí)別系統(tǒng)小型化的需求, 降低手寫(xiě)數(shù)字錄入的成本, 有一定實(shí)用價(jià)值。

        猜你喜歡
        嵌入式文本
        初中群文閱讀的文本選擇及組織
        甘肅教育(2020年8期)2020-06-11 06:10:02
        在808DA上文本顯示的改善
        TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
        電子制作(2019年7期)2019-04-25 13:17:14
        嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
        電子制作(2018年18期)2018-11-14 01:48:16
        基于doc2vec和TF-IDF的相似文本識(shí)別
        電子制作(2018年18期)2018-11-14 01:48:06
        搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        文本之中·文本之外·文本之上——童話(huà)故事《坐井觀天》的教學(xué)隱喻
        論《柳毅傳》對(duì)前代文本的繼承與轉(zhuǎn)化
        人間(2015年20期)2016-01-04 12:47:10
        Altera加入嵌入式視覺(jué)聯(lián)盟
        国产精品成人av电影不卡| 天天爽夜夜爱| 日本免费人成视频播放| 国产精品久久久一本精品| 丰满人妻一区二区三区52| 色中文字幕在线观看视频| av无码精品一区二区三区宅噜噜| 日韩A∨精品久久久久| 日韩成人精品一区二区三区| 少妇太爽了在线观看免费| 高潮潮喷奶水飞溅视频无码| 亚洲最大中文字幕无码网站| 91情侣在线精品国产免费| 亚洲一区二区精品在线| 夜夜躁狠狠躁日日躁视频| 人妻无码久久一区二区三区免费| 国产成人久久精品亚洲小说| 亚洲中文字幕视频第一二区| 欧美国产激情二区三区| 久久久亚洲色| 国产成人精品视频网站| 中文国产乱码在线人妻一区二区| 少妇高潮无套内谢麻豆传| 精品少妇一区二区三区视频| 亚洲女同一区二区久久| 风韵犹存丰满熟妇大屁股啪啪| 亚洲va久久久噜噜噜久久男同| 亚洲国产精品线路久久| 丝袜美腿av免费在线观看| 欧美性猛交xxx嘿人猛交| 无码成人aaaaa毛片| 亚洲欧洲一区二区三区波多野| 蜜桃在线高清视频免费观看网址| 玩弄白嫩少妇xxxxx性| 国产精品露脸视频观看| 国产不卡一区在线视频| 国产一区二区三区仙踪林| 精品国产乱码久久久久久1区2区| 亚洲a级片在线观看| aa日韩免费精品视频一| 亚洲国产一区二区三区在线观看|