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