摘要:論文提出了一種能夠有效識(shí)別答題卡的方法,利用基于hough變換的直線檢測(cè)技術(shù)檢測(cè)圖像的傾斜度,判斷圖像是否傾斜。對(duì)存在傾斜的圖像進(jìn)行旋轉(zhuǎn)校正。最終實(shí)現(xiàn)答題卡答案的定位和檢測(cè)。論文使用像素統(tǒng)計(jì)方法進(jìn)行識(shí)別,其識(shí)別錯(cuò)誤效率極低,能夠準(zhǔn)確識(shí)別答題卡的涂卡標(biāo)記。
關(guān)鍵詞:hough變換;像素統(tǒng)計(jì);答題卡識(shí)別
中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)28-0197-03
Studying on Answer Sheet Identification Method Based on Digital Image Processing
ZHOU Hai-tao, HAN Xiao-jun
(School of Information and Communication, Tianjin Polytechnic University, Tianjin 300160, China)
Abstract: This paper presents an answer sheet recognition system which can recognize answer sheet effectively. Hough transformation-based beeline detection technique is used to detect the gradient of image, confirm whether if the image is leaned and adjust these images. So the location and detection of the answers is completed. This answer sheet recognition system can recognize answer sheet effectively and have few of mistake.
Key words: hough transformation; statistics of pixels; answer sheet recognition
1 檢測(cè)圖像傾斜度及旋轉(zhuǎn)校正
答題卡在采集圖像的過程中由于各種原因可能會(huì)產(chǎn)生圖像傾斜、水平或垂直錯(cuò)位,要進(jìn)行正確的識(shí)別首先需要對(duì)其進(jìn)行校正,下面是針對(duì)圖像傾斜的檢測(cè)及校正。
使用掃描儀得到答題卡圖像如圖1所示,圖像中有一條明顯的黑色橫線,因此可以作為校正的直線。為了壓縮圖像信息減少處理時(shí)間,將圖像轉(zhuǎn)換為灰度圖像,再進(jìn)行二值化處理。灰度圖像的數(shù)據(jù)保存為二維數(shù)組g(i,j),二值圖像保存為二維數(shù)組b(i,j)。圖1所示為采集的圖像,二值化后的圖像如圖2所示。
■
圖1傾斜的答題卡圖像 圖2二值化后的傾斜答題卡圖像
如圖1所示答題卡圖中只有傾斜的一條直線,不存在其他直線,這條直線很容易被檢測(cè)出來。采用hough變換檢測(cè)圖像中的這條直線的傾角,并以這個(gè)傾角來判斷圖像是否傾斜。
如果用直線到原點(diǎn)的距離和直線的傾角來表示一條直線,那這條直線為:
ρ=x·cos(θ)+y·sin(θ)(1)
這里ρ是直線到原點(diǎn)的距離,圖像最左上角的一點(diǎn)就是原點(diǎn),θ是直線的傾角,就是直線與x軸的夾角。ρ和θ組成了一個(gè)參數(shù)空間,稱為ρθ參數(shù)空間。對(duì)于xy平面上任意一個(gè)點(diǎn)A(xi,yi),有ρ=xi ·cos(θ) +yi ·sin(θ),這在ρθ參數(shù)空間里是一條正弦曲線。如果xy平面內(nèi)只有一條線段l,在這條線段上共有 個(gè)點(diǎn),對(duì)其進(jìn)行hough變換,就得到ρθ參數(shù)空間里的n條正弦曲線。因?yàn)樵趚y平面里線段l有相同的ρ和θ,所以在ρθ參數(shù)空間里這些正弦曲線會(huì)相交于一點(diǎn),在參數(shù)空間里形成一個(gè)峰值點(diǎn)。這個(gè)峰值點(diǎn)在參數(shù)空間里的坐標(biāo)就是直線 在xy平面里的ρ和θ。如果平面里有若干條直線,那么經(jīng)hough變換以后對(duì)應(yīng)的參數(shù)空間里的若干個(gè)峰值點(diǎn)[5]。
如圖3所示,這幅二值圖像里只有一條線段,對(duì)這幅二值圖像進(jìn)行Hough變換得到的ρθ參數(shù)空間就如圖4所示,形成一個(gè)峰值點(diǎn)。
■
圖3 一條直線圖4 一條直線形成的峰值點(diǎn)
Hough變換檢測(cè)圖像中直線的傾角以及校正步驟如下:
1)讀取整幅圖像,將彩色圖像變?yōu)榛叶葓D像,并保存在二維數(shù)組g(i,j)里。其中i是行標(biāo),j是列標(biāo),g(i,j)表示對(duì)應(yīng)行標(biāo)i和列標(biāo)j的灰度值;
2)將圖像變?yōu)槎祱D像。經(jīng)過多次試驗(yàn)驗(yàn)證,二值化閾值為50時(shí)效果最好,能有效的將圖像中的黑色直線與其他顏色的直線區(qū)分開。二值化的結(jié)果如圖2所示。二值圖像的數(shù)據(jù)保存在bw(i,j)中;
3)對(duì)圖像進(jìn)行hough變換。首先建立一個(gè)二維數(shù)組A(ρ,θ)作為參數(shù)空間的累加器。這里ρ是直線到原點(diǎn)的距離,范圍是從0到答題卡圖像對(duì)角線的長度。θ是直線的傾角,范圍是-90°到90°。然后掃描第二步得到的二值圖像數(shù)據(jù)bw(i,j),將bw(i,j)里所有像素值為 0的點(diǎn)的坐標(biāo)保存下來。對(duì)于bw(i,j)中像素值為0的點(diǎn)(bwi,bwj),將(bwi,bwj)代入式(1)中,令θ等于-90°到90°中的每一個(gè)值,如果得到的ρ值在0到答題卡圖像對(duì)角線的長度之間,就將對(duì)應(yīng)的A(ρ,θ)的值加1。得到的二維數(shù)組A(ρ,θ)就是ρθ參數(shù)空間,如圖5所示。
4)如圖5所示有明顯三個(gè)峰值,其中只有一條是目標(biāo)直線,另外還有兩條是答題卡圖像右邊和下邊的許多方塊形成的峰值,因此需要對(duì)下一步中檢測(cè)到的峰值進(jìn)行判別,是否為圖像中的直線。
5)hough變換域空間是一個(gè)二維數(shù)組,找到hough變換域空間的峰值,也就是這個(gè)二維數(shù)組的最大值,并記下它的位置,記為 (ρ',θ')。并把找到的峰值(ρ',θ')以及它的鄰域中的hough變換單元設(shè)為零,鄰域大小為8×8。
6) 判斷找到的峰值(ρ',θ')所對(duì)應(yīng)的是否為答題卡圖像中的直線。判別方法為:將圖像旋轉(zhuǎn)90°-θ',使這條直線大概位于一條垂線上。這里θ'是第二步檢測(cè)到的峰值所對(duì)應(yīng)的直線傾角。檢測(cè)這條直線上的最長的線段長度。設(shè)一個(gè)閾值T,如果這條直線上的最長線段長度大于閾值T,就說明這個(gè)峰值對(duì)應(yīng)的是答題卡圖像中的直線。
7)重復(fù)第二步到第四步,直到找出答題卡圖像中的直線。這條直線的傾角就是所求的答題卡圖像的傾角θ'。
將圖1逆時(shí)針旋轉(zhuǎn)θ’,使圖像中的兩條直線位于水平位置,就完成了檢測(cè)圖像傾斜度以及旋轉(zhuǎn)校正。得到的答題卡圖像如圖6所示。再將變換得到的答題卡圖像進(jìn)行二值化,如圖7所示,就是hough變換后的二值答題卡圖像[1]。
■
圖6hough變換后的答題卡圖像圖7二值化以后的答題卡圖像
2圖像定位
對(duì)圖像進(jìn)行旋轉(zhuǎn)校正以后,還需要對(duì)圖像進(jìn)行定位。圖像右方和下方的黑色方塊比較明顯,容易識(shí)別,所以選用圖像右方和下方的黑色方塊進(jìn)行定位。步驟如下:
1)測(cè)得右方方塊的寬和高分別為28和11作為先驗(yàn)信息。寬和高都以像素為單位。
2)對(duì)二維灰度數(shù)組g(i,j)進(jìn)行處理。建立一個(gè)累加器B(i,j),大小和灰度數(shù)組g(i,j)一樣。在灰度數(shù)組g(i,j)右邊增加27列,在下邊增加10行,增加的值均為255。對(duì)于灰度數(shù)組g(i,j)中的每一個(gè)值g(i',j'),從這個(gè)點(diǎn)開始統(tǒng)計(jì)寬和高分別為11和28的矩形塊的灰度值之和,并將這個(gè)灰度值的和賦值給對(duì)應(yīng)的累加器B(i',j')。查看B(i,j)的值可以發(fā)現(xiàn)在右邊方塊的位置會(huì)出現(xiàn)極小值,通過檢測(cè)這些極小值可以知道方塊的位置。
3)圖6中共有51個(gè)同樣大小的方塊,需要找出51個(gè)同樣的極小值。找出B(i,j)中的一個(gè)極小值,并記下它的行坐標(biāo)的位置,并把找到的極小值以及它的鄰域中的單元設(shè)為累加器B(i,j)中的最大值,鄰域大小為6×10。然后再找出下一個(gè)極小值,直到找出51個(gè)方塊的位置為止。
記錄下每一個(gè)方塊的行坐標(biāo)和列坐標(biāo)。根據(jù)答題卡圖像特點(diǎn)可知,每一個(gè)方塊的列坐標(biāo)應(yīng)該是相同的。并對(duì)檢測(cè)出的行坐標(biāo)進(jìn)行從小到大的排序,保存在長度為51的一維數(shù)組x(i)中。
4)測(cè)得下邊方塊的寬和高分別為19和9作為先驗(yàn)信息。仍根據(jù)上一步中所說的方法找出23個(gè)方塊的行坐標(biāo)和列坐標(biāo)。并對(duì)檢測(cè)出的列坐標(biāo)進(jìn)行從大到小的排序,保存在長度為23的一維數(shù)組y(i)中。
5)根據(jù)一維數(shù)組x(i)和y(i),可以確定答題卡中每一個(gè)選項(xiàng)的具體位置。例如,答題卡中的第1題A選項(xiàng)的坐標(biāo)就是 (x(15),y(23)),而第105題A選項(xiàng)的坐標(biāo)就是(x(31),y(5))。至此,實(shí)現(xiàn)了答題卡的定位。
3 答題卡的識(shí)別
根據(jù)一維數(shù)組x(i)和y(i),找到答題卡中每一個(gè)選項(xiàng)的坐標(biāo)。然后統(tǒng)計(jì)以該坐標(biāo)為左頂點(diǎn)的大小為19×11的矩形區(qū)域的灰度值總和。如果這個(gè)值小于某個(gè)閾值,則判斷該選項(xiàng)為黑,就是該選項(xiàng)已涂黑。經(jīng)過多次仿真實(shí)驗(yàn),閾值為31350時(shí)效果最好,能正確地將填涂的答案識(shí)別出來。
參考文獻(xiàn):
[1] 陳蓋凱.基于Hough變換的直線檢測(cè)[J].西安:西安航空技術(shù)高等??茖W(xué)校學(xué)報(bào),2007,(03):36-38.
[2] K?覿lvi?覿inen H, Oja E, Xu L.Randomized Hough transform applied to translational and rotational motion analysis [A].Proceedings of the 11th International Conference on Pattern Recognition [C].Hague:ICPR,1992:672-675.
[3] Xu L,Oja E.Randomized Hough transform(RHT):basic mechanisms,algorithms and computational complexities[J].CVGIP:Image Understanding Archive,1993,57(2):131-154.
[4] 李蘭友,萬振凱.Visual Basic6圖像處理開發(fā)與實(shí)例[M].北京:電子工業(yè)出版社,2000.
[5] 岡薩雷斯,數(shù)字圖像處理[M].北京:電子工業(yè)出版社,2007.
[6] 李朝暉,張弘.數(shù)字圖像處理及應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2004.
[7] 阮秋琦.數(shù)字圖像處理學(xué)[M].北京:電子工業(yè)出版社,2001.