齊鳳山 蔣廷耀



摘要:監控攝像機拍攝得到的二維碼圖像會產生畸變,進行二維碼識別時,如采用單純的Harris角點檢測算法檢測二維碼圖像的4個頂點,存在運算量大、識別效率低的缺陷,不適合在線實時二維碼檢測場景。提出了一種改進的Harris角點檢測方法,先將二維碼圖像灰度化,再基于Harris算法逐行掃描獲取畸變二維碼的4個頂點,以縮小對初始二維碼圖像識別的操作范圍。實驗結果表明,該方法可大大降低二維碼圖像識別的運算量。
關鍵詞:角點檢測;二維碼;灰度化;二維碼識別
DOIDOI:10.11907/rjdk.161007
中圖分類號:TP317.4
文獻標識碼:A 文章編號:1672-7800(2016)005-0199-03
0 引言
二維碼是采用一些特定的黑白相間的方塊幾何圖形,按照一定規律分布在指定的平面區域上來記錄數據信息。在代碼編碼原理上使用了計算機內部基礎邏輯“0”、“1”比特流的概念,并使用與二進制相對應的方格圖形來表示相應的數據信息。通過圖像采集設備攝取圖片后,運用圖像處理技術進行識讀,以實現數據信息的自動智能處理。
在實際應用中由于多種因素往往會導致二維碼遭到不同程度的破壞,并且圖像采集設備的性能及拍攝角度也存在一些差異,采集到的圖像通常會有各種噪聲,二維碼也難免會出現傾斜、畸變、失真、光照不均及陰影等情況。文獻[1]為了解決以上問題,通過一系列的圖像預處理技術處理采集到的帶有各種噪聲的圖像,以盡可能降低以上各種復雜情形對二維碼識別讀取帶來的不利影響,提高二維碼的識別效率、速度及穩定性。然而,在處理畸變二維碼圖像過程中仍然需要對整幅圖像進行操作,如果圖像像素較高,將會運算量很大。為降低對畸變二維碼圖像處理過程中的運算量,本文從圖像處理過程中的角點檢測環節入手,在Harris角點檢測算法基礎上對角點檢測方法進行改進,從而大大降低了二維碼識別的運算量。
1 Harris角點檢測
Harris角點檢測算法是由Moravec算法發展而來,Moravec算法的基本思想是在圖像上以目標像素點為中心設計一個局部檢測窗口[2],上下左右移動窗口,同時計算窗口內的像素變化。如果窗口中的圖像是平滑的,窗口內的像素則變化不大;如果窗口中的圖像是一條邊,在沿這條邊滑動時,像素變化不大,而在沿垂直于這條邊的方向滑動窗口時,像素變化會很大;如果窗口中的圖像是一個角點,窗口沿任何方向移動,像素變化都會很大。用數學語言表示如下:
圖2、圖3是x、y方向的灰度分布情況,在開始和結尾部分曲線較為平滑,而中間區域的曲線波動較大,因而可以斷定,中間波動較大的區域為二維碼區域,即是要進行角點檢測的區域。針對實際情況對x、y取適當的值,確定一個角點檢測區域。在本次實驗中,x取值21(開始)、335(結尾);y取值168(開始)、419(結尾)。根據4個取值可以確定一個矩形區域,該區域即是對圖像進一步處理的區域,如圖4所示。
2.2 搜索畸變二維碼圖像四個頂點
本文的實驗對象是由海康威視網絡攝像機從屏幕上采集的圖像,圖像可能的畸變形狀各異,但均為內角不超過180度的四邊形。設畸變四邊形的4個頂點分別為A、B、C、D,頂點坐標分別為(xa,ya)、(xb,yb)、(xc,yc)、(xd,yd)。按照4個頂點坐標的關系,畸變四邊形可以分為以下3種類型(每種類型的二維碼畸變形狀有多種,在此只列出3種)。
類型一:ya≤yb 類型二:ya 類型三:ya≤yb (6)計算角點j1與角點km所確定的直線與橫坐標軸上的夾角θm,比較θm和θ值,設△θ=θm-θ。△θ在(min,max)誤差范圍內,認為θm=θ,min和max值可根據實際情況適當設置。當△θ≥min時,s和θ值不變,仍然作為與下一個檢測角點的比較對象,同時將km作為備選角點保存,設s1=km;當△θ (7)如果存在備選角點,則二維碼畸變形狀為類型一或類型三,并且備選角點即是所求的角點,如圖8、圖10檢測到第3個角點(頂點),設為j3。過角點j2、j3作一條直線,與矩形相交于點M、N。以MG邊上的點為起始點,以MN、GN為邊界(檢測范圍不包含此邊界上的點),按照從左向右、從上向下搜索檢測。若未檢測到角點存在,則二維碼畸變類型為類型一,執行步驟(9),如圖8所示;若檢測到角點存在,則二維碼畸變類型為類型三,以角點j2為參考點,建立直角坐標系。按照以上方式進行檢測,最終可以檢測到最后一個角點,設為j4,如圖10所示。 (8)若無備選角點,則二維碼畸變形狀為類型二,如圖9所示,執行步驟(9)。 (9)再以j1為參考點,F1H邊上的點為起始點,從右向左、從上向下按照以上步驟及方式進行角點的搜索檢測。將檢測到滿足條件的角點與已得到的角點進行對比,看是否屬于同一角點,如果是同一角點則繼續檢測,如果不是同一角點,則統計滿足條件的角點個數,當滿足條件的角點個數等于4時,檢測結束,如圖8、圖9檢測到第4個角點,設為j4。 3 實驗結果 本實驗采用的圖像像素大小為384*512,在畸變二維碼處理角點檢測環節,如果對整幅圖像進行檢測,運算量為384 512=196 608個像素;采用本文的角點檢測方法,運算量最大的情況下為(335-21)(419-168)=78 814個像素,占比約40.08%,而實驗中是56 346個像素,占比約28.66%,從而大大降低了運算量。 為了驗證本文方法的可行性,采用一臺海康威視的網絡攝像機從電腦顯示器上拍攝采集多幅二維碼圖像,圖像尺寸為19 201 080像素。為了達到實驗目的,從正面、側面、其它方向等多個角度和方向拍攝采集圖像,共選取300張作為測試圖像進行角點檢測。其中成功檢測到畸變二維碼4個角點的有283張,檢測成功率為94.3%。 從實驗結果看,本文的檢測方法可行性較高。該方法降低了角點檢測時圖像處理的運算量,提高了角點檢測環節的運算效率。 4 結語 Harris角點檢測運算復雜,在檢測較高像素圖片時運算量非常大,不適合二維碼實時識別場景。本文提出的方法是先縮小圖像操作范圍,再運用上文提出的角點檢測方法,找到畸變二維碼的4個頂點。此方法可大大降低運算量,并提高運算效率。然而,本文方法仍具有一定局限性,只能運用于環境較好的情況下,且拍攝的二維碼圖片無其它雜點。而對于有雜點的畸變二維碼圖片,還有待進一步研究。 參考文獻: [1]歐福超.基于圖像處理的QR碼圖像預處理的研究[D].濟南:山東大學,2014. [2]龔平,劉相濱,周鵬.一種改進的Harris角點檢測算法[J].計算機工程與應用,2010,46(11):173-175. [3]張從鵬,魏學光.基于Harris角點的矩形檢測[J].光學精密工程,2014,22(8):2259-2266. [4]盧瑜,郝興文,王永俊.Moravec和Harris角點檢測方法比較研究[J].計算機技術與發展,2011,21(6):95-100. [5]張小洪,李博,楊丹.一種新的Harris多尺度角點檢測[J].電子與信息學報,2007,29(7):1735-1738. [6]李貞培,李平,郭新宇.三種基于GDI_的圖像灰度化實現方法[J].計算機技術與發展,2009,19(7):73-79. (責任編輯:黃 健)