• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于機(jī)器視覺的答題卡識別系統(tǒng)設(shè)計

      2022-09-08 00:38:48王子民趙子涵馮夢婷張秀文葉慧雯楊玉東
      南京理工大學(xué)學(xué)報 2022年4期
      關(guān)鍵詞:標(biāo)準(zhǔn)答案答題卡輪廓

      王子民,趙子涵,馮夢婷,張秀文,葉慧雯,楊玉東

      (1.淮陰工學(xué)院 電子信息工程學(xué)院,江蘇 淮安 223003;2.南京工業(yè)大學(xué) 計算機(jī)科學(xué)與技術(shù)學(xué)院,江蘇 南京 211816)

      市面上現(xiàn)有的光標(biāo)閱讀機(jī)具有使用與維護(hù)成本高、無法保存答題卡數(shù)字圖像等缺點(diǎn),且必須使用專業(yè)的答題卡與2B鉛筆進(jìn)行填涂,對答題卡紙張要求質(zhì)量高。國內(nèi)外不少學(xué)者,針對以上局限性做出相關(guān)研究,提出了基于圖像處理的答題卡識別方法。

      周萬珍等[1]使用具有自動進(jìn)紙器的掃描儀采集答題卡圖像。通過預(yù)設(shè)答題卡信息區(qū)域與答案填涂區(qū)域的坐標(biāo)位置實(shí)現(xiàn)區(qū)域劃分,但在每次識別時都需要更正位置信息。郝平[2]通過掃描儀端控制程序采集圖像,使用人機(jī)交互界面進(jìn)行區(qū)域劃分,仍需人工干預(yù)區(qū)域劃分過程。程淑紅等[3]利用YCbCr顏色空間實(shí)現(xiàn)區(qū)域劃分,但文獻(xiàn)中對區(qū)域劃分過程描述并不詳盡。張菲菲等[4]沒有描述答題卡圖像采集過程。韋溢輝等[5]設(shè)計自動生成試卷的系統(tǒng),但對圖像采集過程未進(jìn)行詳細(xì)描述,且不涉及答題卡的區(qū)域劃分過程。

      上述文獻(xiàn)中使用掃描儀等設(shè)備采集圖像,無法降低成本,且對答題卡的自動區(qū)域劃分過程描述不詳盡。因此,本文提出一種答題卡識別方法,使用普通攝像頭對圖像進(jìn)行采集,進(jìn)一步降低了成本;改進(jìn)了答題卡模板,使用最大矩形框輪廓檢測方法實(shí)現(xiàn)自動區(qū)域劃分;此外創(chuàng)新了答題卡識別方法,利用RGBA顏色空間特性、同步頭與指針?biāo)惴▽?shí)現(xiàn)答題卡答案填涂部分的識別。

      1 答題卡圖像預(yù)處理

      1.1 模板設(shè)計與圖像采集

      設(shè)計可供計算機(jī)識別的答題卡模板。使用粗線框?qū)⒋鸢柑钔繀^(qū)域進(jìn)行框選;在答案填涂區(qū)域與信息填涂區(qū)域的右側(cè)與底部繪制等間距的黑色實(shí)心矩形定位框;模板大小與正規(guī)考試中使用的標(biāo)準(zhǔn)答題卡大小一致,模板設(shè)計圖如圖1(a)所示。本文降低了答題卡的紙張質(zhì)量要求,使用普通A4紙即可,大大節(jié)約成本。將普通攝像頭固定在穩(wěn)定支架上,與拍攝平面保持水平。設(shè)計答題卡圖像采集界面,如圖1(b)所示,設(shè)置攝像頭分辨率為3 264*2 448。分別對標(biāo)準(zhǔn)答案答題卡圖像與待識別答題卡圖像進(jìn)行圖像采集并保存在指定文件夾中。

      圖1 模板設(shè)計與圖像采集

      1.2 答題卡圖像的提取

      由于采集的圖像存在偏轉(zhuǎn)與黑色背景等問題,在答題卡識別前,需要進(jìn)行矯正、提取與剪切等前期處理工作,流程如圖2所示。

      圖2 矯正與提取流程圖

      首先對圖像進(jìn)行預(yù)處理[6,7],預(yù)處理步驟包括灰度轉(zhuǎn)化、Sobel邊緣檢測[8]、二值化與形態(tài)學(xué)閉運(yùn)算,目的是減少計算量,得到清晰、連貫的答題卡圖像外輪廓。使用Sobel算子求解圖像的水平方向梯度與垂直方向梯度,將兩個梯度圖像疊加,得到答題卡邊緣圖像,如圖3(a)所示。由于答題卡目標(biāo)圖像為矩形,為連接及填補(bǔ)外輪廓線條,選擇使用大小為5*5的矩形結(jié)構(gòu)元素,對目標(biāo)圖像進(jìn)行閉運(yùn)算操作,結(jié)果如圖3(b)所示。本文測試了不同形狀與大小的結(jié)構(gòu)元素對圖像剪切結(jié)果的影響,如表1所示。

      表1 不同結(jié)構(gòu)元素對剪切結(jié)果的影響

      圖像預(yù)處理完成后,使用輪廓檢測方法找出圖3(b)的邊緣點(diǎn)集合。利用最小面積矩形算法,在已得到的所有輪廓點(diǎn)集合中尋找答題卡的最小外接矩形的點(diǎn)集合,如圖3(c)所示。根據(jù)boxPoints方法得到最小外接矩形的4個角點(diǎn),如圖3(d)所示。構(gòu)建仿射變換矩陣,利用warpPerspective仿射變換方法,實(shí)現(xiàn)答題卡圖像的提取,最終得到圖3(e)的答題卡圖像。

      圖3 矯正與提取

      1.3 區(qū)域劃分

      根據(jù)圖像預(yù)處理與最大矩形框檢測等方法可實(shí)現(xiàn)自動劃分答案填涂區(qū)域與信息區(qū)域,流程如圖4所示。

      圖4 區(qū)域劃分流程

      首先對答題卡圖像進(jìn)行圖像預(yù)處理,目的是減少計算量并且得到連續(xù)且清晰的黑色矩形框輪廓,以便后續(xù)矩形框的輪廓檢測,具體操作步驟為灰度轉(zhuǎn)化、形態(tài)學(xué)閉運(yùn)算、二值化、中值濾波操作。Canny邊緣檢測[8]與findContours算法獲取輪廓點(diǎn)集合,利用contourArea算法得到輪廓點(diǎn)集合中面積最大的輪廓點(diǎn)集合。面積最大輪廓點(diǎn)集合繪制在黑色畫布的圖像上,如圖5(e)所示。使用convexHull算法進(jìn)一步簡化最大矩形框輪廓點(diǎn)數(shù)量,將凸包點(diǎn)繪制在答題卡圖像上,如圖5(f)所示。根據(jù)凸包點(diǎn)到中心點(diǎn)的位置關(guān)系,按圖5(f)將凸包點(diǎn)劃分為4塊區(qū)域,計算中心點(diǎn)到各區(qū)域的凸包點(diǎn)的歐式距離,距離最大的輪廓點(diǎn)為各區(qū)域處的角點(diǎn),最終得到矩形框的4個角點(diǎn)坐標(biāo),如圖5(g)所示。根據(jù)4個角點(diǎn),剪切答題卡答案填涂區(qū)域、答題卡信息區(qū)域與縱向同步頭,剪切結(jié)果如圖5(h)~(j)所示。

      圖5 區(qū)域劃分

      2 答題卡答案填涂區(qū)域的識別

      2.1 RGBA摳圖

      RGBA圖像的一個像素由4個顏色信息組成,分別為紅色(Red,R)、綠色(Green,G)、藍(lán)色(Blue,B)以及透明通道(Alpha,A),取值在0~255之間。如果Alpha值為0,此位置處為透明;如果Alpha值為255,則此像素的顏色取決于RGB。分別對區(qū)域劃分后剪切下來的標(biāo)準(zhǔn)答案答題卡圖像與待識別答案的答題卡圖像進(jìn)行摳圖,制作標(biāo)準(zhǔn)答案蒙版圖像與待識別答案摳圖圖像。

      2.1.1 標(biāo)準(zhǔn)答案答題卡蒙版圖像制作

      將標(biāo)準(zhǔn)答案填涂部分設(shè)置為透明(255,255,255,0),其余部分設(shè)置為黑色(0,0,0,255)。為減少計算量與去除噪聲對圖像的干擾,對區(qū)域劃分后的標(biāo)準(zhǔn)答案答題卡的答案填涂部分進(jìn)行灰度轉(zhuǎn)化、高斯濾波、二值化、黑白反轉(zhuǎn)操作,其中黑白反轉(zhuǎn)的目的是為了將答案填涂位置設(shè)置為白色,將其他部分設(shè)置為黑色。將反轉(zhuǎn)后的圖像轉(zhuǎn)化為RGBA四通道圖像,進(jìn)而對此圖像摳圖。具體操作為依次遍歷圖像,如果像素值為(255,255,255,255),即為標(biāo)準(zhǔn)答案答題卡的正確答案填涂位置(白色),則將此像素設(shè)置為透明,像素值設(shè)置為(255,255,255,0);如果像素值為(0,0,0,255),則保持不變。最終得到標(biāo)準(zhǔn)答題卡的蒙版圖像,如圖6(a)所示。

      圖6 摳圖結(jié)果

      2.1.2 待識別答案摳圖圖像制作

      將待識別答案答題卡的填涂部分設(shè)置為黑色(0,0,0,255),其余部分設(shè)置為透明(0,0,0,0)。對區(qū)域劃分后的待識別答案答題卡的答案填涂部分進(jìn)行灰度轉(zhuǎn)化、高斯濾波、二值化、腐蝕膨脹操作。對待識別答案摳圖圖像進(jìn)行形態(tài)學(xué)操作,目的是使待識別圖像的正確填涂位置充分填充蒙版圖像,以便后續(xù)識別。依次遍歷處理后的圖像,如果像素為(255,255,255,255),即為待識別圖像的非填涂區(qū)域(白色),則將此像素設(shè)置為(0,0,0,0);如果像素值為(0,0,0,255),即待識別答案圖像填涂的答案,則保持不變。最終得到待識別答案的摳圖后的圖像,如圖6(b)所示。

      2.2 同步頭坐標(biāo)提取

      在答題卡右側(cè)與下側(cè)印有同等大小、同等間距的黑色矩形實(shí)心方塊,稱為同步頭[9]。使用圖5(j)中剪切的標(biāo)準(zhǔn)答案答題卡的縱向同步頭,經(jīng)灰度投影[10,11]、歸一化、濾波[12]等操作,最終通過處理后的灰度投影曲線最低點(diǎn)所在橫坐標(biāo),求得縱向同步頭中心位置縱坐標(biāo),從而得到答案填涂區(qū)域選項的每一行對應(yīng)的縱坐標(biāo)位置信息??v向同步頭經(jīng)灰度轉(zhuǎn)化后,將圖像長邊視為x軸,短邊視為y軸。將同步頭灰度值投影在長邊x軸方向,按照灰度值長邊從左到右依次遍歷,累加每個所處xi位置的一列灰度值并保存在數(shù)組ax中。對于xi位置處的灰度值投影,由式(1)計算得到,其中w為縱向同步頭圖像短邊的長度,I(i,j)為縱向同步頭灰度圖中第i行第j列元素的灰度值。

      (1)

      由于黑色同步頭位置與其他區(qū)域灰度的累加值相差過大,使用式(1)累加的灰度值不方便計算與圖像顯示,因此需要對數(shù)組ax進(jìn)行歸一化,使得灰度累加后的取值范圍在-1~1之間,式(2)中得到累加灰度的中值m。其中min(ax)為累計灰度值數(shù)組ax的最小值,max(ax)為累計灰度值數(shù)組ax的最大值。

      (2)

      對于累加灰度值小于等于灰度中值m的灰度值,執(zhí)行式(3)

      (3)

      對于累加灰度值大于灰度中值m的灰度值,執(zhí)行式(4)

      (4)

      根據(jù)歸一化后的灰度累加值數(shù)組,繪制縱向同步頭灰度值曲線圖像,如圖7(a)所示。由于波谷位置最低點(diǎn)位置不明確,無法確定答案填涂區(qū)域的縱向同步定位頭中心點(diǎn)坐標(biāo),因此考慮對投影曲線進(jìn)行濾波。Savitzky-Golay濾波器通過移動窗口,利用最小二乘擬合原理進(jìn)行濾波,實(shí)現(xiàn)對同步定位頭曲線的2次平滑濾波操作,濾波后的灰度投影曲線如圖7(b)所示。

      圖7 原始灰度投影曲線與濾波后的灰度投影曲線

      經(jīng)觀察,縱向同步頭灰度投影曲線的波谷位置,位于同步頭中心位置。即取得灰度投影曲線波谷位置的橫坐標(biāo),就能得到答題卡填涂區(qū)域選項的中心位置縱坐標(biāo),將坐標(biāo)信息保存于csv文件中。

      2.3 答題卡識別

      2.3.1 疊加匹配后的圖像特點(diǎn)

      將圖6(b)的待識別答案圖像調(diào)整為圖6(a)的大小后,使用add方法疊加答題卡蒙版圖像與待識別答題卡圖像,匹配疊加后的圖像如圖8(a)所示。

      圖8(a)的正確答案待填涂位置的RGB值為(255,255,255);其余位置的RGB值為(0,0,0)。蒙版圖像的待填涂位置被待識別圖像的答案填充則Alpha值變?yōu)?55,否則為0。根據(jù)上述特性,按照以下3種情況,分別進(jìn)行詳細(xì)描述。如果疊加后的圖像在正確答案待填涂位置完全填充,如圖8(b)中圖①所示,則此處的像素值全部為(255,255,255,255),非正確答案待填涂位置的像素值為(0,0,0,255)。其中,ans中的黑色(0,0,0,255)與mask中的(255,255,255,0)使用add疊加,像素值顯示為(255,255,255,255),但在圖像顯示上仍是黑色的。如果因填涂規(guī)范、圖像預(yù)處理、匹配疊加等原因,發(fā)生正確答案待填涂位置處未完全填充的情況,如圖8(b)中圖②所示,則正確答案待填涂位置的已填充像素值為(255,255,255,255),未填充的像素值為(255,255,255,0)。蒙版mask、待識別答案圖像ans與疊加后圖像add的像素值示意如圖8(c)所示。如果疊加后的圖像在正確答案待填涂位置,完全沒有被填充,即為答題卡中答案填錯情況,如圖8(b)中圖③所示,則未填充位置的像素全部為(255,255,255,0)。

      圖8 圖像疊加后的匹配示意圖

      2.3.2 利用指針與RGBA特性進(jìn)行識別

      按照上文中提取到的縱坐標(biāo)位置信息,逐行對匹配疊加的圖像的填涂情況進(jìn)行識別。綜合上述3種填涂情況,利用疊加圖像的RGB像素值,判斷是否為待填涂的正確答案位置;利用Alpha值是否為255,判斷疊加后圖像的待填涂正確答案位置是否被填充。根據(jù)答案待填涂處首尾指針間的未填充像素個數(shù)ansu與應(yīng)填充像素個數(shù)maska的比值,與預(yù)設(shè)的閾值[13]比較,根據(jù)試驗(yàn)結(jié)果將閾值定為0.9,判斷此填涂位置區(qū)域是否未被填涂。其中,wron為錯誤填涂個數(shù),如式(5)所示

      (5)

      根據(jù)整張答題卡的未填涂答案個數(shù)與應(yīng)填涂答案個數(shù),計算此待識別答題卡的得分情況。由于答題卡每行待填涂答案個數(shù)未知,每個待填涂選項的像素個數(shù)未知,設(shè)計如下算法。

      算法1答題卡識別算法

      輸入:疊加圖像dst;縱向同步頭中心位置信息數(shù)組r

      輸出:填涂正確的個數(shù)crn

      1:function IDENTIFY

      2: forrowi=r[0]→row[-1] do

      3: forcoli=2→width-1 do

      4:frontk,backk←比較當(dāng)前像素與前后R值,得到指針位置

      5:maska←backk-frontk+1

      6:totalrow++

      7:ansu←計算此區(qū)間像素Alpha為0的像素個數(shù)

      8:wron++←ansu/maska比值大于某一閾值

      9:ansu←0

      10: end for

      11:totaln=totaln+totalrow

      12:totalrow←0

      13: end for

      14:crn=totaln-wron

      15: returncrn

      16:end function

      設(shè)定front point與back point前后兩個指針,按照上文獲取的同步頭中心點(diǎn)的縱坐標(biāo),逐行遍歷像素中RGBA中的R通道像素值,如圖9所示。

      圖9 使用指針判別

      R

      R

      R

      R

      R

      R

      R

      R

      front

      k

      back

      k

      mask

      a

      maska=backk-frontk+1

      (6)

      如果兩指針間,即對某一待填涂位置而言,未填充的像素個數(shù)與待填涂像素個數(shù)的比值超過預(yù)設(shè)的閾值,則說明這個位置處沒有被填涂,即填錯。按照上述流程,逐行遍歷疊加后的圖像,根據(jù)未填涂個數(shù)與待填涂個數(shù),計算考生最終得分情況。識別的答題卡填涂情況如圖10(a)所示,左圖為標(biāo)準(zhǔn)答案答題卡,右圖為待識別答題卡,白點(diǎn)為識別到的正確答案的位置。最終識別計算得到的分?jǐn)?shù)如圖10(b)所示。

      圖10 運(yùn)行結(jié)果

      3 結(jié)果與分析

      測試環(huán)境:處理器型號為Intel(R)Core(TM)i5-9500 CPU@3.00 GHz 3.00 GHz,內(nèi)存8 GB,Windows10操作系統(tǒng)。仿真軟件為PyCharm 2020.3.4(Community Edition)。攝像頭為普通攝像頭,參考金翔高拍儀的分辨率參數(shù),設(shè)置攝像頭分辨率為3 264*2 448。PC使用Anaconda平臺配置Python和OpenCV,版本分別為Python 3.8.5和OpenCV 4.5.1。

      本方法首次識別時,使用預(yù)先拍攝好的標(biāo)準(zhǔn)答案答題卡圖像,制作答題卡標(biāo)準(zhǔn)答案蒙版。將待識別答案依次放在拍攝水平面上,完成答題卡的識別。本識別方法需要均勻的拍攝光線以保證答題卡的提取與答案填涂區(qū)域的分割。如表2所示,給出了10張答題卡測試數(shù)據(jù),分別列出了答題卡填涂的識別分?jǐn)?shù)、輸出與真實(shí)結(jié)果相符的概率、答題卡填涂的實(shí)際分?jǐn)?shù)以及準(zhǔn)確率。每張答題卡測試20次,最終識別的準(zhǔn)確率均為100%。測試結(jié)果:對于規(guī)范填涂的答題卡,在均勻的拍攝光線下識別率達(dá)到100%。

      表2 答題卡識別結(jié)果

      識別錯誤情況:由于答題卡識別基于蒙版匹配識別,對于待識別圖像完全填涂的問題還沒有找到有效方法進(jìn)行解決。如果對待識別答題卡的全部位置填涂上黑色,匹配后的圖像也全部為黑色,此時識別正確率為100%。疊加匹配的圖像如圖11所示。后續(xù)需要對此問題進(jìn)行進(jìn)一步研究。

      圖11 全部填涂的待識別答案的疊加結(jié)果

      4 結(jié)束語

      為了解決當(dāng)前答題卡采集設(shè)備成本過高、手動劃分答題卡填涂區(qū)域與信息區(qū)域、手動定位答題卡填涂區(qū)域起始位置等問題,設(shè)計并提出了基于機(jī)器視覺的答題卡識別系統(tǒng)。本文設(shè)計適用于機(jī)器視覺識別的答題卡模版,使用普通攝像頭對答題卡圖像進(jìn)行采集,使用邊緣檢測、形態(tài)學(xué)操作、輪廓檢測等圖像處理操作,實(shí)現(xiàn)了答題卡圖像的提取。利用最大矩形框輪廓檢測方法,對答題卡圖像進(jìn)行區(qū)域劃分。使用縱向同步頭繪制灰度投影曲線,得到答題卡選項每一行中心位置的縱坐標(biāo)信息。將圖像轉(zhuǎn)化為RGBA四通道圖像,利用Alpha通道,生成標(biāo)準(zhǔn)答題卡蒙版圖像與待識別答題卡圖像。將兩個圖像疊加匹配后,利用縱向同步頭位置信息、RGBA顏色空間特性與指針?biāo)惴ü餐瓿纱痤}卡的識別。

      本文補(bǔ)充了其他文獻(xiàn)中描述不詳盡的答題卡圖像采集部分及區(qū)域劃分部分。提出了利用縱向同步頭位置信息、RGBA顏色空間特性與指針?biāo)惴ǖ拇痤}卡識別新方法。在具有較好識別精度的情況下,解決了前面所述文章的局限性。但本文的答題卡識別方法(蒙版圖像與待識別圖像的匹配疊加)存在局限性。由于蒙版圖像只有正確答案為空缺,如果蒙版圖像在同一題目下的其他選項處填涂了答案,算法則無法判斷。針對此問題,后續(xù)將進(jìn)行深入研究。

      猜你喜歡
      標(biāo)準(zhǔn)答案答題卡輪廓
      吃飯喝水傷身體?吃飯喝湯養(yǎng)生?快看看協(xié)和醫(yī)院的標(biāo)準(zhǔn)答案
      祝您健康(2024年4期)2024-04-08 16:18:08
      OPENCV輪廓識別研究與實(shí)踐
      李耀進(jìn):沒有標(biāo)準(zhǔn)答案,唯有用心用情
      中國民政(2019年12期)2020-01-02 09:12:04
      基于實(shí)時輪廓誤差估算的數(shù)控系統(tǒng)輪廓控制
      丟失了標(biāo)準(zhǔn)答案
      湖南省動物衛(wèi)生監(jiān)督知識競賽答題卡
      安全知識競賽答題卡
      標(biāo)準(zhǔn)答案的反思
      答題卡
      在線學(xué)習(xí)機(jī)制下的Snake輪廓跟蹤
      常德市| 六枝特区| 湟中县| 江都市| 迁安市| 新郑市| 凤庆县| 星座| 红原县| 拜泉县| 株洲市| 衡水市| 铜梁县| 宽甸| 阜城县| 龙川县| 昆山市| 张家口市| 汕尾市| 宁远县| 永年县| 南城县| 安阳市| 五台县| 丽水市| 盈江县| 娄烦县| 建平县| 江阴市| 崇义县| 桃源县| 扎鲁特旗| 新蔡县| 平顶山市| 绥阳县| 揭阳市| 黎城县| 晋城| 四平市| 红安县| 香河县|