一種qr碼抗污損識(shí)別方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種QR碼抗污損識(shí)別方法,先獲取圖像中所有可能的尋像圖形;再將其每三個(gè)一組進(jìn)行組合,并假設(shè)每一個(gè)組合均對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再對(duì)其解碼,解碼成功的,返回QR碼碼值,未解碼成功的,記錄尋像圖形組合;然后對(duì)記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其每?jī)蓚€(gè)一組進(jìn)行組合,并假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼,再假設(shè)第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值。本發(fā)明能夠識(shí)別污損QR碼、靈活、高效、快速,適用性廣,適于在物流、工廠、實(shí)驗(yàn)室等易造成QR碼圖像污損的環(huán)境中使用。
【專(zhuān)利說(shuō)明】—種QR碼抗污損識(shí)別方法
[0001]
【技術(shù)領(lǐng)域】
[0002]本發(fā)明涉及二維碼技術(shù),具體說(shuō)是一種QR碼抗污損識(shí)別方法。
[0003]
【背景技術(shù)】
[0004]QR碼(quick response,快速反應(yīng)二維碼)目前在眾多行業(yè)中均有大量的應(yīng)用?,F(xiàn)有QR碼解碼算法中,一般先找出碼圖中的三個(gè)尋像圖形,根據(jù)這三個(gè)尋像圖形的中心位置大致定位出第四個(gè)角點(diǎn),由這四個(gè)點(diǎn)來(lái)校正碼圖。根據(jù)找到的尋像圖形也可以確定QR碼中模塊的大致寬度,以此來(lái)確定碼圖中心的大體位置。另外的處理方式是檢測(cè)QR碼的邊緣,找到滿足邊緣寬度滿足黑-白-黑-白-黑寬度比為1:1:3:1:1的可能的點(diǎn),然后對(duì)這些點(diǎn)進(jìn)行分類(lèi),找出滿足一定條件的聚類(lèi)點(diǎn)作為可能的尋像圖形,接下來(lái)的處理方式跟上面的處理方式一致。 上述處理方式都具有一個(gè)致命的缺陷——當(dāng)其中一個(gè)尋像圖形污損,整個(gè)QR碼就無(wú)法識(shí)別解碼。所以,在例如物流等容易使QR碼污損的使用場(chǎng)合,現(xiàn)有的解碼方法并不能很好的適用。
[0005]
【發(fā)明內(nèi)容】
[0006]本發(fā)明的任務(wù)是要針對(duì)上述技術(shù)問(wèn)題,提供一種QR碼抗污損識(shí)別方法,其特征在于,包括如下步驟:
S102:獲取圖像中所有可能的尋像圖形;圖像為灰度圖像或彩色圖像,獲取彩色圖像中尋像圖形的步驟包括先對(duì)其進(jìn)行灰度化處理,得到灰度圖像;
5104:QR碼的解碼識(shí)別,包括如下步驟:
51041:對(duì)灰度圖像進(jìn)行二值化處理,每三個(gè)尋像圖形一組,解碼:將所有可能的尋像圖形每三個(gè)一組進(jìn)行組合,并假設(shè)每一組尋像圖形組合均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再對(duì)假設(shè)的QR碼進(jìn)行解碼,解碼成功的,返回QR碼碼值,未解碼成功的,記錄相應(yīng)的尋像圖形組合;
51042:每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼:對(duì)步驟S1041記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其歸類(lèi)為二類(lèi)尋像圖形,將所有二類(lèi)尋像圖形每?jī)蓚€(gè)一組進(jìn)行組合,并假設(shè)每一組尋像圖形組合均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值;
5105:結(jié)束解碼。
[0007]所述S1041中每三個(gè)尋像圖形一組,解碼,包括如下步驟:
S201:每三個(gè)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼; S202:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S202判斷的結(jié)果為是,進(jìn)行S203:返回QR碼碼值,
并進(jìn)行S206:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù),
如果S206判斷的結(jié)果為是,進(jìn)行所述步驟S1042,
如果S206判斷的結(jié)果為否,進(jìn)行S207,對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S207判斷的結(jié)果為是,進(jìn)行前述S203,
如果S207判斷的結(jié)果為否,進(jìn)行S205:記錄未解碼成功的組合,
并進(jìn)行前述步驟S206,
如果S202判斷的結(jié)果為否,進(jìn)行前述步驟S205。
[0008]所述S1041中每三個(gè)尋像圖形一組,解碼,對(duì)假設(shè)的QR碼進(jìn)行解碼前設(shè)置要求成功解碼的QR碼個(gè)數(shù),為要求的解碼個(gè)數(shù),解碼包括如下步驟:
5201:每三個(gè)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼;
5202:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S202判斷的結(jié)果為是,進(jìn)行S203:返回QR碼碼值,
并進(jìn)行S204:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù),
如果S204判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼,
如果S204判斷的結(jié)果為否,進(jìn)行S206:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù),
如果S206判斷的結(jié)果為是,進(jìn)行所述步驟S1042,
如果S206判斷的結(jié)果為否,進(jìn)行S207,對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S207判斷的結(jié)果為是,進(jìn)行前述S203,
如果S207判斷的結(jié)果為否,進(jìn)行S205,記錄未解碼成功的組合,
并進(jìn)行前述步驟S206,
如果S202判斷的結(jié)果為否,進(jìn)行前述步驟S205。
[0009]所述S1042中每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼,包括如下步驟:
S301:對(duì)未解碼成功的三個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出二類(lèi)尋像圖形;
5303:每?jī)蓚€(gè)二類(lèi)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼;
5304:假設(shè)每個(gè)QR碼的第三個(gè)尋像圖形的位置;
5305:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S305判斷的結(jié)果為是,進(jìn)行S306:返回QR碼碼值,
并進(jìn)行S309:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù),
如果S309判斷的結(jié)果為是,進(jìn)行所述步驟S105,
如果S309判斷的結(jié)果為否,進(jìn)行S310:對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S310判斷的結(jié)果為是,進(jìn)行前述S306,
如果S310判斷的結(jié)果為否,進(jìn)行前述S309,
如果S305判斷的結(jié)果為否,進(jìn)行前述S309。[0010]所述S1042中每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼,對(duì)假設(shè)的QR碼進(jìn)行解碼前設(shè)置要求成功解碼的QR碼個(gè)數(shù),為要求的解碼個(gè)數(shù),解碼包括如下步驟:
S301:對(duì)未解碼成功的三個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出二類(lèi)尋像圖形;
5303:每?jī)蓚€(gè)二類(lèi)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼;
5304:假設(shè)每個(gè)QR碼的第三個(gè)尋像圖形的位置;
5305:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S305判斷的結(jié)果為是,進(jìn)行S306:返回QR碼碼值,
并進(jìn)行S307:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù),
如果S307判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼,
如果S307判斷的結(jié)果為否,進(jìn)行S309:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù),
如果S309判斷的結(jié)果為是,進(jìn)行所述步驟S1043,
如果S309判斷的結(jié)果為否,進(jìn)行S310:對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S310判斷的結(jié)果為是,進(jìn)行前述S306,
如果S310判斷的結(jié)果為否,進(jìn)行S308:記錄未解碼成功的組合,
并進(jìn)行前述S309,
如果S305判斷的結(jié)果為否,進(jìn)行前述S308。
[0011]所述步驟S1042還包括記錄未解碼成功的尋像圖形組合;所述QR碼抗污損識(shí)別方法的步驟還包括,在進(jìn)行步驟S1042后進(jìn)行S1043 ;
S1043:每個(gè)尋像圖形,分別解碼:對(duì)步驟S1042記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其歸類(lèi)為三類(lèi)尋像圖形,假設(shè)所有三類(lèi)尋像圖形均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第二個(gè)尋像圖形、第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值。
[0012]所述圖像為灰度圖像,所述步驟S102中獲取圖像中所有可能的尋像圖形的過(guò)程包括如下步驟:
51021:通過(guò)邊緣檢測(cè)獲取尋像圖形的水平邊緣點(diǎn)群:橫向掃描灰度圖像的每一行,對(duì)每一行進(jìn)行移動(dòng)均值濾波去噪,再進(jìn)行二階差分運(yùn)算,得到可能的邊緣點(diǎn),并記錄邊緣點(diǎn)和邊緣點(diǎn)之間的灰度變化情況;記錄滿足寬度比黑:白:黑:白:黑為1:1:3:1:1的邊緣點(diǎn)作為可能的尋像圖形的內(nèi)邊框和外邊框的邊緣點(diǎn),再對(duì)邊緣點(diǎn)進(jìn)行分類(lèi)組合得到水平邊緣點(diǎn)群;
51022:通過(guò)邊緣檢測(cè)獲取尋像圖形的垂直邊緣點(diǎn)群:縱向掃描灰度圖像的每一列,對(duì)每一列進(jìn)行移動(dòng)均值濾波去噪,再進(jìn)行二階差分運(yùn)算,得到可能的邊緣點(diǎn),并記錄邊緣點(diǎn)和邊緣點(diǎn)之間的灰度變化情況;記錄滿足寬度比黑:白:黑:白:黑為1:1:3:1:1的邊緣點(diǎn)作為可能的尋像圖形的內(nèi)邊框和外邊框的邊緣點(diǎn),再對(duì)邊緣點(diǎn)進(jìn)行分類(lèi)組合得到垂直邊緣點(diǎn)群;
51023:對(duì)水平邊緣點(diǎn)群中心連接的線段和垂直邊緣點(diǎn)群中心連接的線段相交的所有點(diǎn)群進(jìn)行合并,并重新計(jì)算每個(gè)合并后的邊緣點(diǎn)群的中心點(diǎn),作為可能的尋像圖形的中心,外邊緣點(diǎn)圍成的圖形為尋像圖形。
[0013]在所述步驟S1042中,利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置的方法為擬合直線,找交點(diǎn)的方法,包括如下步驟:
S10421,計(jì)算一組的兩個(gè)所述二類(lèi)尋像圖形的中心之間的距離1,在其中一個(gè)二類(lèi)尋像圖形外邊框上任取一點(diǎn),計(jì)算這個(gè)點(diǎn)到另外一個(gè)二類(lèi)尋像圖形外邊框四條直線的距離,這四個(gè)距離中只要有一個(gè)距離小于0.51,則假設(shè)兩個(gè)二類(lèi)尋像圖形位于QR碼的同一側(cè),否則假設(shè)兩個(gè)二類(lèi)尋像圖形位于QR碼的對(duì)角線上的兩個(gè)角上;
S10422,兩個(gè)二類(lèi)尋像圖形位于假設(shè)QR碼的同一側(cè)時(shí),假設(shè)第三個(gè)尋像圖形的位置的方法包括如下步驟:
1)、先對(duì)每個(gè)尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框;
2)、分別合并步驟I)中兩個(gè)尋像圖形擬合出的外邊框直線和內(nèi)邊框直線:如果滿足兩條直線之間的距離小于5個(gè)像素且它們的夾角小于5°,則將兩條直線上的點(diǎn)合并并重新擬合出一條新的直線;得到重新擬合的2條外邊框線和2條內(nèi)邊框線。
[0014]3)、對(duì)一個(gè)尋像圖形中沒(méi)有合并的外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合,并向兩個(gè)方向延伸掃描,判定QR碼區(qū)域位于兩個(gè)尋像圖形中心連線的哪一側(cè),同時(shí)判斷邊界掃描終點(diǎn)位置,如果滿足直線向外邊框平移I個(gè)模塊的位置,直線的外側(cè)是白色邊框,直線向內(nèi)邊框平移I個(gè)模塊的位置,直線的外側(cè)存在黑色模塊,并且黑色模塊數(shù)與白色模塊數(shù)相差不超過(guò)25%,則這條直線為QR碼的一條邊界黑色模塊中心線,將其向外邊框平移0.5個(gè)模塊構(gòu)成QR碼的一條邊界El ;根據(jù)兩個(gè)尋像圖形的邊緣點(diǎn)信息,確定模塊尺寸、QR碼的版本信息,進(jìn)一步確定邊界掃描終止位置Dl ;對(duì)另一個(gè)尋像圖形中沒(méi)有合并的外邊框直線與內(nèi)邊框直線做同樣的處理,找到另一條邊界E2,并找到另一條邊界E2的邊界掃描終止位置D2 ;
4)、根據(jù)兩條邊界的掃描終止位置確定一條邊界搜索直線LI,以一個(gè)邊界掃描終止位置D2為起點(diǎn),如果此點(diǎn)為污損點(diǎn),沿此條邊界搜索直線LI進(jìn)行搜索,直到找到一個(gè)白色模塊,以此白色模塊為新的起點(diǎn),將邊界搜索直線LI向QR碼內(nèi)側(cè)區(qū)域旋轉(zhuǎn)5度,旋轉(zhuǎn)后的邊界搜索直線作為新的邊界搜索直線LI,沿這條新的邊界搜索直線LI繼續(xù)向另一個(gè)邊界掃描終止位置Dl所在的方向搜索,直到找到一個(gè)黑色模塊,然后對(duì)其進(jìn)行邊界追蹤,如果邊界點(diǎn)與邊界搜索直線LI的距離為3個(gè)模塊寬度以下,記錄邊界追蹤得到的黑色點(diǎn),如果邊界點(diǎn)與邊界搜索直線LI的距離大于3個(gè)模塊寬度,終止追蹤,作此終止點(diǎn)到邊界搜索直線LI的垂線,找到此垂線與邊界搜索直線LI的交點(diǎn),并以此作為新的搜索起點(diǎn),按前述方法搜索直到另一個(gè)邊界掃描終止位置Dl ;根據(jù)邊界追蹤得到的黑色點(diǎn),擬合出一條直線,作為QR碼的第3條邊界;第3條邊界與另外兩條邊界的交點(diǎn)為QR碼的兩個(gè)角點(diǎn),第三個(gè)尋像圖形的位置在兩個(gè)角點(diǎn)中的一個(gè)所在的位置;
S10423,兩個(gè)二類(lèi)尋像圖形位于假設(shè)QR碼的對(duì)角線上的兩個(gè)角上時(shí),假設(shè)第三個(gè)尋像圖形的位置的方法包括如下步驟:
1)、先對(duì)每個(gè)尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框;
2)、對(duì)每個(gè)尋像圖形的外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合,將其向外邊框平移0.5個(gè)模塊構(gòu)成QR碼的一條邊界,并進(jìn)行延伸,兩個(gè)二類(lèi)尋像圖形的前述邊界相交,交點(diǎn)為可能的第三個(gè)尋像圖形的角點(diǎn),假設(shè)出第三個(gè)尋像圖形的位置在假設(shè)QR碼的另外兩個(gè)角中的一個(gè)上,如果這個(gè)假設(shè)的第三個(gè)尋像圖形的組合不能解碼,則假設(shè)第三個(gè)尋像圖形位于假設(shè)QR碼的另一個(gè)角上;
對(duì)所述三個(gè)尋像圖形一組進(jìn)行組合前和/或兩個(gè)二類(lèi)尋像圖形一組進(jìn)行組合前,首先判斷尋像圖形的個(gè)數(shù):
當(dāng)尋像圖形的個(gè)數(shù)為三個(gè)以上時(shí),進(jìn)行步驟S1041 ;
當(dāng)尋像圖形個(gè)數(shù)為兩個(gè)時(shí),直接進(jìn)行步驟S1042 ;
當(dāng)尋像圖形個(gè)數(shù)為一個(gè)時(shí),直接進(jìn)行步驟S1043;
當(dāng)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),進(jìn)行步驟S105 ;
當(dāng)二類(lèi)尋像圖形為兩個(gè)以上時(shí),每?jī)蓚€(gè)尋像圖形一組進(jìn)行組合,再解碼;
當(dāng)二類(lèi)尋像圖形個(gè)數(shù)為一個(gè)時(shí),進(jìn)行步驟S1043;
當(dāng)二類(lèi)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),進(jìn)行步驟S105;
所述S1043中每個(gè)尋像圖形,分別解碼,包括如下步驟:
S401:對(duì)未解碼成功的兩個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出三類(lèi)尋像圖形;
5403:假設(shè)每個(gè)三類(lèi)尋像圖形均對(duì)應(yīng)一個(gè)QR碼,假設(shè)每個(gè)QR碼的第二尋像圖形、第三個(gè)尋像圖形的位置;
5404:對(duì)第一個(gè)尋像圖形對(duì)應(yīng)的假設(shè)QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S404判斷的結(jié)果為是,進(jìn)行S405:返回QR碼碼值,
并進(jìn)行S406:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù),
如果S406判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼,
如果S406判斷的結(jié)果為否,進(jìn)行S408:判斷已進(jìn)行解碼的三類(lèi)尋像圖形個(gè)數(shù)是否為總的三類(lèi)尋像圖形的個(gè)數(shù),
如果S408判斷的結(jié)果為是,進(jìn)行所述步驟S105:結(jié)束解碼,
如果S408判斷的結(jié)果為否,進(jìn)行S409,對(duì)下一個(gè)三類(lèi)尋像圖形對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S409判斷的結(jié)果為是,進(jìn)行前述S05,
如果S409判斷的結(jié)果為否,進(jìn)行S407,記錄未解碼成功的三類(lèi)尋像圖形,
如果S404判斷的結(jié)果為否,進(jìn)行S407。
[0015]所述步驟S1043中利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第二個(gè)尋像圖形、第三個(gè)尋像圖形的位置的方法包括如下步驟:
1)、先對(duì)當(dāng)前尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框;
2)、根據(jù)尋像圖形的邊緣點(diǎn)信息確定模塊尺寸信息;
3)、對(duì)外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別擬合成一條直線,并沿著一條直線兩個(gè)方向進(jìn)行掃描,掃描長(zhǎng)度最大為40模塊寬度,最小長(zhǎng)度14個(gè)模塊寬度;如果滿足該直線向一側(cè)平移一個(gè)模塊寬度位置是白色外邊框,向相對(duì)的另一側(cè)平移一個(gè)負(fù)的模塊寬度是黑色模塊,黑色模塊數(shù)與白色模塊數(shù)相差不到25%,則可以確定為QR碼的一條邊界,同時(shí)終止掃描。對(duì)其它擬合的直線進(jìn)行同樣處理,如果可以找到兩條可能的邊界,則認(rèn)為是一個(gè)可能的QR碼區(qū)域,并根據(jù)直線掃描的方向確定QR碼位于兩條邊界圍成的四個(gè)象限的哪一個(gè)象限;
4)、以一條邊界為起始直線,這條邊界長(zhǎng)度為21個(gè)模塊寬度,并以一個(gè)模塊寬度向QR碼區(qū)域內(nèi)側(cè)平移、掃描這條直線直到這條直線是一條白色外邊框?yàn)橹?;如果能夠找到白色外邊框,按照S10422中的方法得到第三條邊界,同樣的方法通過(guò)另一條邊界得到第4條邊界;
5)、分別假設(shè)未知的兩個(gè)尋像圖形在QR碼的另外3個(gè)角上,構(gòu)成三種尋像圖形組合。
[0016]【專(zhuān)利附圖】
【附圖說(shuō)明】
[0017]圖1為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之一;
圖2為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之二 ;
圖3為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之三;
圖4為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之四;
圖5為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之五;
圖6為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之六;
圖7為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例的流程圖之七;
圖8為本發(fā)明一種QR碼抗污損識(shí)別方法實(shí)施例灰度圖像的示意圖;
圖9為假設(shè)圖8 B的第三個(gè)尋像圖形位置的示意圖;
圖10為假設(shè)圖8 C的第二個(gè)、第三個(gè)尋像圖形位置的示意圖。
[0018]【具體實(shí)施方式】
[0019]實(shí)施例1:
如圖6所示,本發(fā)明公開(kāi)了一種QR碼抗污損識(shí)別方法,包括如下步驟:
S102:獲取圖像中所有可能的尋像圖形;圖像為灰度圖像或彩色圖像,獲取彩色圖像中尋像圖形的步驟包括先對(duì)其進(jìn)行灰度化處理,得到灰度圖像;
5104:QR碼的解碼識(shí)別,包括如下步驟:
51041:對(duì)灰度圖像進(jìn)行二值化處理,每三個(gè)尋像圖形一組,解碼:將所有可能的尋像圖形每三個(gè)一組進(jìn)行組合,并假設(shè)每一組尋像圖形組合均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再對(duì)假設(shè)的QR碼進(jìn)行解碼,解碼成功的,返回QR碼碼值,未解碼成功的,記錄相應(yīng)的尋像圖形組合;
51042:每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼:對(duì)步驟S1041記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其歸類(lèi)為二類(lèi)尋像圖形,將所有二類(lèi)尋像圖形每?jī)蓚€(gè)一組進(jìn)行組合,并假設(shè)每一組尋像圖形組合均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值;
5105:結(jié)束解碼。
[0020]其中步驟S102中獲取圖像中所有可能的尋像圖形的過(guò)程可包括如下步驟: 51021:通過(guò)邊緣檢測(cè)獲取尋像圖形的水平邊緣點(diǎn)群;
51022:通過(guò)邊緣檢測(cè)獲取尋像圖形的垂直邊緣點(diǎn)群;
51023:對(duì)水平邊緣點(diǎn)群中心連接的線段和垂直邊緣點(diǎn)群中心連接的線段相交的所有點(diǎn)群進(jìn)行合并,并重新計(jì)算每個(gè)合并后的邊緣點(diǎn)群的中心點(diǎn),作為可能的尋像圖形的中心,外邊緣點(diǎn)圍成的圖形為尋像圖形;
其中步驟S1021中獲取水平邊緣點(diǎn)群的方法可包括步驟:橫向掃描灰度圖像的每一行,對(duì)每一行進(jìn)行移動(dòng)均值濾波去噪,再進(jìn)行二階差分運(yùn)算,得到可能的邊緣點(diǎn),并記錄邊緣點(diǎn)和邊緣點(diǎn)之間的灰度變化情況;記錄滿足寬度比黑:白:黑:白:黑為1:1:3:I:I的邊緣點(diǎn)作為可能的尋像圖形的內(nèi)邊框和外邊框的邊緣點(diǎn),再對(duì)邊緣點(diǎn)進(jìn)行分類(lèi)組合得到水平邊緣點(diǎn)群;類(lèi)似的,步驟S1022中獲取垂直邊緣點(diǎn)群的步驟包括:縱向掃描灰度圖像的每一列,對(duì)每一列進(jìn)行移動(dòng)均值濾波去噪,再進(jìn)行二階差分運(yùn)算,得到可能的邊緣點(diǎn),并記錄邊緣點(diǎn)和邊緣點(diǎn)之間的灰度變化情況;記錄滿足寬度比黑:白:黑:白:黑為1:1:3:I:I的邊緣點(diǎn)作為可能的尋像圖形的內(nèi)邊框和外邊框的邊緣點(diǎn),再對(duì)邊緣點(diǎn)進(jìn)行分類(lèi)組合得到垂直邊緣點(diǎn)群。
[0021]其中步驟S1042中,利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置的方法可為擬合直線,找交點(diǎn)的方法,可為如下方法:
方法A:
在步驟S1042中,利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置的方法為擬合直線,找交點(diǎn)的方法,包括如下步驟:
S10421,計(jì)算一組的兩個(gè)二類(lèi)尋像圖形的中心之間的距離1,在其中一個(gè)二類(lèi)尋像圖形外邊框上任取一點(diǎn),計(jì)算這個(gè)點(diǎn)到另外一個(gè)二類(lèi)尋像圖形外邊框四條直線的距離,這四個(gè)距離中只要有一個(gè)距離小于0.51,則假設(shè)兩個(gè)二類(lèi)尋像圖形位于QR碼的同一側(cè),否則假設(shè)兩個(gè)二類(lèi)尋像圖形位于QR碼的對(duì)角線上的兩個(gè)角上;
如圖9所示,S10422,兩個(gè)二類(lèi)尋像圖形位于假設(shè)QR碼的同一側(cè)時(shí),假設(shè)第三個(gè)尋像圖形的位置的方法包括如下步驟:
1)、先對(duì)每個(gè)尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框;
2)、分別合并步驟I)中兩個(gè)尋像圖形擬合出的外邊框直線和內(nèi)邊框直線:如果滿足兩條直線之間的距離小于5個(gè)像素且它們的夾角小于5°,則將兩條直線上的點(diǎn)合并并重新擬合出一條新的直線;得到重新擬合的2條外邊框線和2條內(nèi)邊框線。
[0022]根據(jù)QR碼中兩個(gè)尋像圖形的邊緣點(diǎn)信息,可以確定:(1)、模塊尺寸;(2)QR碼的版本信息,也即是當(dāng)前QR碼寬、高方向模塊數(shù)。
[0023]3)、對(duì)一個(gè)尋像圖形中沒(méi)有合并的外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合,并向兩個(gè)方向延伸掃描,判定QR碼區(qū)域位于兩個(gè)尋像圖形中心連線的哪一側(cè),同時(shí)判斷邊界掃描終點(diǎn)位置,如果滿足直線向外邊框平移I個(gè)模塊的位置,直線的外側(cè)是白色邊框,直線向內(nèi)邊框平移I個(gè)模塊的位置,直線的外側(cè)存在黑色模塊,并且黑色模塊數(shù)與白色模塊數(shù)相差不超過(guò)25%,則這條直線為QR碼的一條邊界黑色模塊中心線,將其向外邊框平移0.5個(gè)模塊構(gòu)成QR碼的一條邊界E3 ;根據(jù)兩個(gè)尋像圖形的邊緣點(diǎn)信息,確定模塊尺寸、QR碼的版本信息,進(jìn)一步確定邊界掃描終止位置Dl ;對(duì)另一個(gè)尋像圖形中沒(méi)有合并的外邊框直線與內(nèi)邊框直線做同樣的處理,找到另一條邊界E4,并找到另一條邊界掃描的終止位置D2;
4)、根據(jù)D1、D2確定一條直線LI,以D2為起點(diǎn),如果此點(diǎn)為污損點(diǎn),沿此條直線搜索,直到找到一個(gè)白色模塊,以此白色模塊為新的起點(diǎn),將直線向QR碼內(nèi)側(cè)區(qū)域旋轉(zhuǎn)5度,沿這條新的直線繼續(xù)向Dl所在的方向搜索,直到找到一個(gè)黑色模塊,然后對(duì)其進(jìn)行邊界追蹤,如果邊界點(diǎn)與LI的距離為3個(gè)模塊寬度以下,記錄邊界追蹤得到的黑色點(diǎn),如果邊界點(diǎn)與LI的距離大于3個(gè)模塊寬度,終止追蹤,作此終止點(diǎn)到LI的垂線,找到此垂線與LI的交點(diǎn),并以此作為新的搜索起點(diǎn),按前述方法搜索直到另一個(gè)終止位置Dl ;根據(jù)邊界追蹤得到的黑色點(diǎn),擬合出一條直線,作為QR碼的第3條邊界;第3條邊界與另外兩條邊界的交點(diǎn)為QR碼的兩個(gè)角點(diǎn),第三個(gè)尋像圖形的位置在兩個(gè)角點(diǎn)中的一個(gè)所在的位置;
S10423,兩個(gè)二類(lèi)尋像圖形位于假設(shè)QR碼的對(duì)角線上的兩個(gè)角上時(shí),假設(shè)第三個(gè)尋像圖形的位置的方法包括如下步驟:
1)、先對(duì)每個(gè)尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框;
2)、對(duì)每個(gè)尋像圖形的外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合,將其向外邊框平移0.5個(gè)模塊構(gòu)成QR碼的一條邊界,并進(jìn)行延伸,兩個(gè)二類(lèi)尋像圖形的前述邊界相交,交點(diǎn)為可能的第三個(gè)尋像圖形的角點(diǎn),假設(shè)出第三個(gè)尋像圖形的位置在假設(shè)QR碼的另外兩個(gè)角中的一個(gè)上,如果這個(gè)假設(shè)的第三個(gè)尋像圖形的組合不能解碼,則假設(shè)第三個(gè)尋像圖形位于假設(shè)QR碼的另一個(gè)角上;
后面述及的根據(jù)一個(gè)三類(lèi)尋像圖形假設(shè)QR碼中另外兩個(gè)尋像圖形的位置時(shí),也可以通過(guò)這種方法先找出兩條邊界。
[0024]實(shí)施例2:
本實(shí)施例在實(shí)施例1的基礎(chǔ)上進(jìn)行了改進(jìn),改進(jìn)了 S1041中每三個(gè)尋像圖形一組,解碼的過(guò)程。
[0025]三個(gè)尋像圖形組合解碼的過(guò)程包括如下步驟:
5201:每三個(gè)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼;
5202:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S202判斷的結(jié)果為是,進(jìn)行S203:返回QR碼碼值,
并進(jìn)行S206:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù),
如果S206判斷的結(jié)果為是,進(jìn)行步驟S1042,
如果S206判斷的結(jié)果為否,進(jìn)行S207,對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S207判斷的結(jié)果為是,進(jìn)行前述S203,
如果S207判斷的結(jié)果為否,進(jìn)行S205:記錄未解碼的組合,
并進(jìn)行前述步驟S206,
如果S202判斷的結(jié)果為否,進(jìn)行前述步驟S205 ;
各步驟之間的流程可以參考圖2。
[0026]實(shí)施例3:
如圖2所示,本實(shí)施例在實(shí)施例2的基礎(chǔ)上增加了成功解碼個(gè)數(shù)是否為要求的解碼個(gè)數(shù)的判斷過(guò)程,三個(gè)尋像圖形組合解碼的過(guò)程包括如下步驟:
對(duì)假設(shè)的QR碼進(jìn)行解碼前設(shè)置要求成功解碼的QR碼個(gè)數(shù),為要求的解碼個(gè)數(shù),解碼過(guò)程與實(shí)施例2的區(qū)別如下:
如果S202判斷的結(jié)果為是,進(jìn)行S203:返回QR碼碼值,并進(jìn)行S204:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù),
如果S204判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼,
如果S204判斷的結(jié)果為否,才進(jìn)行S206:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù)。
[0027]實(shí)施例4:
本實(shí)施例在實(shí)施例1的基礎(chǔ)上進(jìn)行了改進(jìn),改進(jìn)了 S1042中每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼的過(guò)程。
[0028]兩個(gè)二類(lèi)尋像圖形組合解碼的過(guò)程包括如下步驟:
S301:對(duì)未解碼成功的三個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出二類(lèi)尋像圖形;
5303:每?jī)蓚€(gè)二類(lèi)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼;
5304:假設(shè)每個(gè)QR碼的第三個(gè)尋像圖形的位置;
5305:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S305判斷的結(jié)果為是,進(jìn)行S306:返回QR碼碼值,
并進(jìn)行S309:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù),
如果S309判斷的結(jié)果為是,進(jìn)行步驟S105,
如果S309判斷的結(jié)果為否,進(jìn)行S310:對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S310判斷的結(jié)果為是,進(jìn)行前述S306,
如果S310判斷的結(jié)果為否,進(jìn)行前述S309,
如果S305判斷的結(jié)果為否,進(jìn)行前述S309 ;
各步驟之間的流程可以參考圖5。
[0029]實(shí)施例5:
本實(shí)施例在實(shí)施例4的基礎(chǔ)上增加了成功解碼個(gè)數(shù)是否為要求的解碼個(gè)數(shù)的判斷過(guò)程,兩個(gè)二類(lèi)尋像圖形組合解碼的過(guò)程包括如下步驟:
對(duì)假設(shè)的QR碼進(jìn)行解碼前設(shè)置要求成功解碼的QR碼個(gè)數(shù),為要求的解碼個(gè)數(shù),解碼過(guò)程與實(shí)施例4的區(qū)別如下:
如果S305判斷的結(jié)果為是,進(jìn)行S306:返回QR碼碼值,并進(jìn)行S307:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù),
如果S307判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼,
如果S307判斷的結(jié)果為否,才進(jìn)行S309:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù);
各步驟之間的流程可以參考圖5。
[0030]實(shí)施例6:
如圖7所示,本實(shí)施例與實(shí)施例1-5的區(qū)別在于:在步驟S1042中增加了記錄未解碼成功的尋像圖形組合的步驟,在步驟S1042后增加進(jìn)行步驟S1043,執(zhí)行步驟S1042后不跳轉(zhuǎn)到結(jié)束,而是跳轉(zhuǎn)到步驟S1043 ;
S1043包括如下步驟:每個(gè)尋像圖形,分別解碼:對(duì)步驟S1042記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其歸類(lèi)為三類(lèi)尋像圖形,假設(shè)所有三類(lèi)尋像圖形均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第二個(gè)尋像圖形、第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值。
[0031]其中步驟S1043中,利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第二個(gè)尋像圖形、第三個(gè)尋像圖形的位置的方法包括如下步驟:
S401:對(duì)未解碼成功的兩個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出三類(lèi)尋像圖形;
S403:假設(shè)每個(gè)三類(lèi)尋像圖形均對(duì)應(yīng)一個(gè)QR碼,假設(shè)每個(gè)QR碼的第二尋像圖形、第三個(gè)尋像圖形的位置;
步驟S403的方法可包括如下步驟:
1)、先對(duì)當(dāng)前尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框;
2)、根據(jù)尋像圖形的邊緣點(diǎn)信息確定模塊尺寸信息;
3)、對(duì)外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合成一條直線,并沿著這條直線兩個(gè)方向進(jìn)行掃描,掃描長(zhǎng)度最大為40模塊寬度,最小長(zhǎng)度14個(gè)模塊寬度;如果滿足該直線一側(cè)平移一個(gè)模塊寬度位置是白色外邊框,另一側(cè)平移一個(gè)負(fù)的模塊寬度黑色模塊數(shù)與白色模塊數(shù)相差不到25%,則可以確定為QR碼的一條邊界,同時(shí)終止掃描。如果可以找到兩條可能的邊界,分別為邊界E1、邊界E2,則認(rèn)為是一個(gè)可能的QR碼區(qū)域,并根據(jù)直線掃描的方向確定QR碼位于邊界E1、邊界E2圍成的四個(gè)象限的哪一個(gè)象限;
4)、以邊界El為起始直線,邊界El長(zhǎng)度為21個(gè)模塊寬度,并以一個(gè)模塊寬度向QR碼區(qū)域內(nèi)側(cè)平移、掃描這條直線直到這條直線是一條白色外邊框?yàn)橹?;如果能夠找到白色外邊框,按照S10422中的方法得到第三條邊界。同樣的辦法得到第4條邊界;
5)、分別假設(shè)未知兩個(gè)尋像圖形在QR碼的另外3個(gè)角上,有三種組合,尋找可能的成功解碼組合。
[0032]S404:對(duì)第一個(gè)尋像圖形對(duì)應(yīng)的假設(shè)QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S404判斷的結(jié)果為是,進(jìn)行S405:返回QR碼碼值,
并進(jìn)行S406:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù),
如果S406判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼,
如果S406判斷的結(jié)果為否,進(jìn)行S408:判斷已進(jìn)行解碼的三類(lèi)尋像圖形個(gè)數(shù)是否為總的三類(lèi)尋像圖形的個(gè)數(shù),
如果S408判斷的結(jié)果為是,進(jìn)行步驟S105:結(jié)束解碼,
如果S408判斷的結(jié)果為否,進(jìn)行S409,對(duì)下一個(gè)三類(lèi)尋像圖形對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功,
如果S409判斷的結(jié)果為是,進(jìn)行前述S05,
如果S409判斷的結(jié)果為否,進(jìn)行S407,記錄未解碼成功的三類(lèi)尋像圖形,
如果S404判斷的結(jié)果為否,進(jìn)行S407 ;
各步驟之間的流程可以參考圖4。[0033]實(shí)施例7:
本實(shí)施例與實(shí)施例1-7的區(qū)別在于:為提高解碼效率,對(duì)三個(gè)尋像圖形一組進(jìn)行組合前和/或兩個(gè)二類(lèi)尋像圖形一組進(jìn)行組合前,首先判斷尋像圖形的個(gè)數(shù)是否為不小于一個(gè)組合需要的尋像圖形的個(gè)數(shù),在對(duì)第三類(lèi)尋像圖形進(jìn)行解碼時(shí),在假設(shè)第二尋像圖形、第三尋像圖形的位置前,也對(duì)其個(gè)數(shù)是否不小于I進(jìn)行判斷:
三個(gè)尋像圖形一組進(jìn)行組合前進(jìn)行如下判斷:
當(dāng)尋像圖形的個(gè)數(shù)為三個(gè)以上時(shí),進(jìn)行步驟S1041 ;
當(dāng)尋像圖形個(gè)數(shù)為兩個(gè)時(shí),直接進(jìn)行步驟S1042,此時(shí)的兩個(gè)尋像圖形也歸類(lèi)為二類(lèi)尋像圖形;
當(dāng)尋像圖形個(gè)數(shù)為一個(gè)時(shí),直接進(jìn)行步驟S1043,此時(shí)的兩個(gè)尋像圖形也歸類(lèi)為三類(lèi)尋像圖形;如果為提高準(zhǔn)確度和效率,不進(jìn)行步驟S1043,則在尋像圖形個(gè)數(shù)為一個(gè)以下時(shí),跳轉(zhuǎn)到步驟S105結(jié)束解碼;
當(dāng)尋像圖形個(gè)數(shù)小于I個(gè)時(shí),進(jìn)行步驟S105,結(jié)束解碼;
兩個(gè)二類(lèi)尋像圖形一組進(jìn)行組合前進(jìn)行如下判斷:
當(dāng)二類(lèi)尋像圖形個(gè)數(shù)為兩個(gè)以上時(shí),每?jī)蓚€(gè)尋像圖形一組進(jìn)行組合,再解碼;
當(dāng)二類(lèi)尋像圖形個(gè)數(shù)為一個(gè)時(shí),進(jìn)行步驟S1043;如果為提高準(zhǔn)確度和效率,不進(jìn)行步驟S1043,則在二類(lèi)尋像圖形個(gè)數(shù)為一個(gè)以下時(shí),跳轉(zhuǎn)到步驟S105結(jié)束解碼;
當(dāng)二類(lèi)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),進(jìn)行步驟S105,結(jié)束解碼;
第三類(lèi)尋像圖形進(jìn)行解碼時(shí),在假設(shè)第二尋像圖形、第三尋像圖形的位置前進(jìn)行如下判斷:
當(dāng)三類(lèi)尋像圖形個(gè)數(shù)為一個(gè)以上時(shí),假設(shè)第二尋像圖形、第三尋像圖形的位置,再解
碼;
當(dāng)三類(lèi)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),進(jìn)行步驟S105,結(jié)束解碼。
[0034]對(duì)應(yīng)附圖進(jìn)行說(shuō)明:
如圖1所示,其是在圖7的基礎(chǔ)上增加了進(jìn)行步驟S1041前判斷尋像圖形個(gè)數(shù)的過(guò)程,即在進(jìn)行步驟S102后,先進(jìn)行S103:判斷尋像圖形的個(gè)數(shù)是否為3個(gè)以上,
如果判斷的結(jié)果為是才進(jìn)行步驟S1041,
如果判斷的結(jié)果為否,則判斷尋像圖形的個(gè)數(shù)是否為2個(gè)以上,
如果判斷結(jié)果為是,兩個(gè)尋像圖形組合解碼,
如果判斷結(jié)果為否,進(jìn)行步驟S1043 ;
步驟S1042中每?jī)蓚€(gè)尋像圖形進(jìn)行組合前,也進(jìn)行前述尋像圖形的個(gè)數(shù)是否為2個(gè)以上的判斷。
[0035]如圖3所示,其是在實(shí)施例6的基礎(chǔ)上增加了進(jìn)行步驟S303前判斷二類(lèi)尋像圖形個(gè)數(shù)的過(guò)程,即在進(jìn)行步驟S301后,先進(jìn)行S302:判斷尋像圖形的個(gè)數(shù)是否為2個(gè)以上,
如果判斷的結(jié)果為是才進(jìn)行步驟S303,
如果判斷的結(jié)果為否,到圖1的步驟S1043。
[0036]如圖4所示,其是在實(shí)施例7的基礎(chǔ)上增加了進(jìn)行步驟S403前判斷三類(lèi)尋像圖形個(gè)數(shù)的過(guò)程,即在進(jìn)行步驟S401后,先進(jìn)行S402:判斷尋像圖形的個(gè)數(shù)是否為I個(gè)以上,
如果判斷的結(jié)果為是才進(jìn)行步驟S403,如果判斷的結(jié)果為否,到圖1的步驟S105,結(jié)束解碼。
[0037]如圖5所示,其是在實(shí)施例4、實(shí)施例5的基礎(chǔ)上增加了進(jìn)行步驟S303前判斷二類(lèi)尋像圖形個(gè)數(shù)的過(guò)程,即在進(jìn)行步驟S301后,先進(jìn)行S302:判斷尋像圖形的個(gè)數(shù)是否為2個(gè)以上,
如果判斷的結(jié)果為是才進(jìn)行步驟S303,
如果判斷的結(jié)果為否,到圖1的步驟S105,結(jié)束解碼。
[0038]實(shí)施例8:
本實(shí)施例在實(shí)施例1的基礎(chǔ)上,以一個(gè)含有一個(gè)以上的QR碼的灰度圖像為例說(shuō)明其解碼過(guò)程:
首先獲取圖像中所有可能的尋像圖形,如圖8所示,平面內(nèi)有A、B、C、D四枚QR碼圖案,并識(shí)別找到7尋像圖形,分別為尋像圖形1、尋像圖形2、尋像圖形3、尋像圖形4、尋像圖形
5、尋像圖形6、尋像圖形7,為了便于表示其組合,分別用(I)、(2)、(3)、(4)、(5)、(6)、(7)來(lái)表示這7個(gè)尋像圖形,對(duì)該三枚QR碼的解碼方式按照下列時(shí)序步驟進(jìn)行:
步驟a:將6個(gè)尋像圖形每三個(gè)一組進(jìn)行組合,例如(I) (2) (3),(1) (2) (4),(1) (2)(5),(1) (2) (6),(1) (2) (7)……,并假設(shè)每一組均對(duì)應(yīng)一個(gè)QR碼,然后對(duì)每一個(gè)假設(shè)的QR碼進(jìn)行解碼,解碼成功的返回QR碼碼值,未解碼成功的,記錄該尋像圖形組合,如圖8,篩選出哪些尋像圖形在其構(gòu)成的QR碼均解碼失敗,歸類(lèi)為二類(lèi)尋像圖形,所有組合中只有組合(I) (2) (5)構(gòu)成的碼圖A解碼成功,而包含有(3)、(4)、(6)或(7)的QR碼圖案均沒(méi)有解碼成功。
[0039]步驟b:將尋像圖形(3)、(4)、(6)、(7)每?jī)蓚€(gè)一組進(jìn)行排列組合,例如(3) (4)、
(3)(6),(3) (7)……,并假設(shè)每一組均構(gòu)成QR碼圖案,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系找到第三個(gè)尋像圖形的位置,確定QR碼的位置;
然后將上述假設(shè)的QR碼進(jìn)行解碼,返回解碼成功的QR碼碼值,同時(shí)記錄未解碼成功的組合,篩選出哪些尋像圖形在其構(gòu)成的所有假設(shè)的QR碼中均解碼失敗,歸類(lèi)為三類(lèi)尋像圖形,由圖8可知,此時(shí)只有當(dāng)尋像圖形(3)、(4)組合,并且(3)為左上角、(4)為右上角時(shí),碼圖B才可被成功解碼,而尋像圖形(6)、(7)構(gòu)成的QR碼仍沒(méi)有解碼成功。
[0040]步驟c:解碼過(guò)程結(jié)束;此種只解碼到兩個(gè)二類(lèi)尋像圖形組合的情況,可以不記錄兩個(gè)尋像圖形構(gòu)成的未解碼成功的組合;
或者進(jìn)行三類(lèi)尋像圖形的解碼(對(duì)應(yīng)碼圖C、D),返回解碼成功的QR碼碼值,完成三類(lèi)尋像圖形的解碼后結(jié)束解碼。
[0041]而為提高檢測(cè)效率,優(yōu)選在步驟a之前首先判斷尋像圖形的個(gè)數(shù):1)當(dāng)尋像圖形的個(gè)數(shù)為三個(gè)以上時(shí),進(jìn)行步驟a ;2)當(dāng)尋像圖形個(gè)數(shù)為兩個(gè)時(shí),直接進(jìn)行步驟b ;3)當(dāng)尋像圖形個(gè)數(shù)為一個(gè)時(shí),進(jìn)行C ;4)當(dāng)尋像圖形個(gè)數(shù)小于I個(gè)時(shí),結(jié)束解碼;因?yàn)閷は駡D形為7個(gè)【(I)、(2)、(3)、(4)、(5)、(6)、(7)】,大于3,所以進(jìn)行步驟a。
[0042]優(yōu)選在步驟b之前首先判斷二類(lèi)尋像圖形的個(gè)數(shù):1)當(dāng)二類(lèi)尋像圖形的個(gè)數(shù)為兩個(gè)以上時(shí),進(jìn)行步驟b ;2)當(dāng)尋像圖形個(gè)數(shù)為一個(gè)時(shí),直接進(jìn)行步驟c ;3)當(dāng)尋像圖形個(gè)數(shù)為小于I個(gè)時(shí),結(jié)束解碼;因?yàn)槎?lèi)尋像圖形為4個(gè)【(3)、(4)、(6)、(7)】,大于2,所以進(jìn)行步驟b。
[0043]優(yōu)選在步驟c之前首先判斷三類(lèi)尋像圖形的個(gè)數(shù):1)當(dāng)二類(lèi)尋像圖形的個(gè)數(shù)為一個(gè)以上時(shí),進(jìn)行步驟C ;2)當(dāng)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),結(jié)束解碼。因?yàn)槿?lèi)尋像圖形為2個(gè)【(6)、(7)】,大于1,所以進(jìn)行步驟C。
[0044] 也可優(yōu)選有一個(gè)成功解碼的組合時(shí),對(duì)包含這個(gè)組合中的至少一個(gè)尋像圖形對(duì)應(yīng)的其它組合,不進(jìn)行解碼。如進(jìn)行三個(gè)尋像圖形組合解碼時(shí),如果(I) (2) (5)已經(jīng)成功解碼,則包括(1)、(2)或(5)中任意一個(gè)或者多個(gè)的其它組合,如(I) (2) (6),(1) (2) (7)、
(5)(6) (7) 等,如果還沒(méi)有進(jìn)行解碼,則不必進(jìn)行解碼。
【權(quán)利要求】
1.一種QR碼抗污損識(shí)別方法,其特征在于,包括如下步驟: S102:獲取圖像中所有可能的尋像圖形;圖像為灰度圖像或彩色圖像,獲取彩色圖像中尋像圖形的步驟包括先對(duì)其進(jìn)行灰度化處理,得到灰度圖像; 5104:QR碼的解碼識(shí)別,包括如下步驟: 51041:對(duì)灰度圖像進(jìn)行二值化處理,每三個(gè)尋像圖形一組,解碼:將所有可能的尋像圖形每三個(gè)一組進(jìn)行組合,并假設(shè)每一組尋像圖形組合均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再對(duì)假設(shè)的QR碼進(jìn)行解碼,解碼成功的,返回QR碼碼值,未解碼成功的,記錄相應(yīng)的尋像圖形組合; 51042:每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼:對(duì)步驟S1041記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其歸類(lèi)為二類(lèi)尋像圖形,將所有二類(lèi)尋像圖形每?jī)蓚€(gè)一組進(jìn)行組合,并假設(shè)每一組尋像圖形組合均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值; 5105:結(jié)束解碼。
2.根據(jù)權(quán)利要求1所述的一種QR碼抗污損識(shí)別方法,其特征在于,所述S1041中每三個(gè)尋像圖形一組,解碼,包括如下步驟: 5201:每三個(gè)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼; 5202:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S202判斷的結(jié)果為是,進(jìn)行S203:返回QR碼碼值, 并進(jìn)行S206:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù), 如果S206判斷的結(jié)果為是,進(jìn)行所述步驟S1042, 如果S206判斷的結(jié)果為否,進(jìn)行S207,對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S207判斷的結(jié)果為是,進(jìn)行前述S203, 如果S207判斷的結(jié)果為否,進(jìn)行S205:記錄未解碼成功的組合, 并進(jìn)行前述步驟S206, 如果S202判斷的結(jié)果為否,進(jìn)行前述步驟S205。
3.根據(jù)權(quán)利要求1所述的一種QR碼抗污損識(shí)別方法,其特征在于,所述S1041中每三個(gè)尋像圖形一組,解碼,對(duì)假設(shè)的QR碼進(jìn)行解碼前設(shè)置要求成功解碼的QR碼個(gè)數(shù),為要求的解碼個(gè)數(shù),解碼包括如下步驟: 5201:每三個(gè)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼; 5202:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S202判斷的結(jié)果為是,進(jìn)行S203:返回QR碼碼值, 并進(jìn)行S204:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù), 如果S204判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼, 如果S204判斷的結(jié)果為否,進(jìn)行S206:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù), 如果S206判斷的結(jié)果為是,進(jìn)行所述步驟S1042, 如果S206判斷的結(jié)果為否,進(jìn)行S207,對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S207判斷的結(jié)果為是,進(jìn)行前述S203, 如果S207判斷的結(jié)果為否,進(jìn)行S205,記錄未解碼成功的組合, 并進(jìn)行前述步驟S206, 如果S202判斷的結(jié)果為否,進(jìn)行前述步驟S205。
4.根據(jù)權(quán)利要求1所述的一種QR碼抗污損識(shí)別方法,其特征在于,所述S1042中每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼,包括如下步驟: S301:對(duì)未解碼成功的三個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出二類(lèi)尋像圖形; 5303:每?jī)蓚€(gè)二類(lèi)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼; 5304:假設(shè)每個(gè)QR碼的 第三個(gè)尋像圖形的位置; 5305:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S305判斷的結(jié)果為是,進(jìn)行S306:返回QR碼碼值, 并進(jìn)行S309:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù), 如果S309判斷的結(jié)果為是,進(jìn)行所述步驟S105, 如果S309判斷的結(jié)果為否,進(jìn)行S310:對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S310判斷的結(jié)果為是,進(jìn)行前述S306, 如果S310判斷的結(jié)果為否,進(jìn)行前述S309, 如果S305判斷的結(jié)果為否,進(jìn)行前述S309。
5.根據(jù)權(quán)利要求1所述的一種QR碼抗污損識(shí)別方法,其特征在于,所述S1042中每?jī)蓚€(gè)二類(lèi)尋像圖形一組,解碼,對(duì)假設(shè)的QR碼進(jìn)行解碼前設(shè)置要求成功解碼的QR碼個(gè)數(shù),為要求的解碼個(gè)數(shù),解碼包括如下步驟: S301:對(duì)未解碼成功的三個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出二類(lèi)尋像圖形; 5303:每?jī)蓚€(gè)二類(lèi)尋像圖形一組進(jìn)行組合,假設(shè)每個(gè)組合均對(duì)應(yīng)一個(gè)QR碼; 5304:假設(shè)每個(gè)QR碼的第三個(gè)尋像圖形的位置; 5305:對(duì)第一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S305判斷的結(jié)果為是,進(jìn)行S306:返回QR碼碼值, 并進(jìn)行S307:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù), 如果S307判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼, 如果S307判斷的結(jié)果為否,進(jìn)行S309:判斷已進(jìn)行解碼的組合的個(gè)數(shù)是否為總的組合個(gè)數(shù), 如果S309判斷的結(jié)果為是,進(jìn)行所述步驟S1043, 如果S309判斷的結(jié)果為否,進(jìn)行S310:對(duì)下一個(gè)尋像圖形組合對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S310判斷的結(jié)果為是,進(jìn)行前述S306, 如果S310判斷的結(jié)果為否,進(jìn)行S308:記錄未解碼成功的組合, 并進(jìn)行前述S309, 如果S305判斷的結(jié)果為否,進(jìn)行前述S308。
6.根據(jù)權(quán)利要求1所述的一種QR碼抗污損識(shí)別方法,其特征在于,所述步驟S1042還包括記錄未解碼成功的尋像圖形組合;所述QR碼抗污損識(shí)別方法的步驟還包括,在進(jìn)行步驟S1042后進(jìn)行S1043 ; S1043: 每個(gè)尋像圖形,分別解碼:對(duì)步驟S1042記錄的未解碼成功的尋像圖形組合進(jìn)行篩選,找出與其它尋像圖形構(gòu)成的所有組合均未解碼成功的尋像圖形,將其歸類(lèi)為三類(lèi)尋像圖形,假設(shè)所有三類(lèi)尋像圖形均相應(yīng)的對(duì)應(yīng)一個(gè)QR碼,其為假設(shè)QR碼,再利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第二個(gè)尋像圖形、第三個(gè)尋像圖形的位置,然后進(jìn)行解碼,解碼成功的,返回QR碼碼值。
7.根據(jù)權(quán)利要求1至6中任一權(quán)利要求所述的一種QR碼抗污損識(shí)別方法,其特征在于,所述圖像為灰度圖像,所述步驟S102中獲取圖像中所有可能的尋像圖形的過(guò)程包括如下步驟: 51021:通過(guò)邊緣檢測(cè)獲取尋像圖形的水平邊緣點(diǎn)群:橫向掃描灰度圖像的每一行,對(duì)每一行進(jìn)行移動(dòng)均值濾波去噪,再進(jìn)行二階差分運(yùn)算,得到可能的邊緣點(diǎn),并記錄邊緣點(diǎn)和邊緣點(diǎn)之間的灰度變化情況;記錄滿足寬度比黑:白:黑:白:黑為1:1:3:1:1的邊緣點(diǎn)作為可能的尋像圖形的內(nèi)邊框和外邊框的邊緣點(diǎn),再對(duì)邊緣點(diǎn)進(jìn)行分類(lèi)組合得到水平邊緣點(diǎn)群; 51022:通過(guò)邊緣檢測(cè)獲取尋像圖形的垂直邊緣點(diǎn)群:縱向掃描灰度圖像的每一列,對(duì)每一列進(jìn)行移動(dòng)均值濾波去噪,再進(jìn)行二階差分運(yùn)算,得到可能的邊緣點(diǎn),并記錄邊緣點(diǎn)和邊緣點(diǎn)之間的灰度變化情況;記錄滿足寬度比黑:白:黑:白:黑為1:1:3:1:1的邊緣點(diǎn)作為可能的尋像圖形的內(nèi)邊框和外邊框的邊緣點(diǎn),再對(duì)邊緣點(diǎn)進(jìn)行分類(lèi)組合得到垂直邊緣點(diǎn)群; S1023:對(duì)水平邊緣點(diǎn)群中心連接的線段和垂直邊緣點(diǎn)群中心連接的線段相交的所有點(diǎn)群進(jìn)行合并,并重新計(jì)算每個(gè)合并后的邊緣點(diǎn)群的中心點(diǎn),作為可能的尋像圖形的中心,外邊緣點(diǎn)圍成的圖形為尋像圖形。
8.根據(jù)權(quán)利要求1至6中任一權(quán)利要求所述的QR碼抗污損識(shí)別方法,其特征在于,在所述步驟S1042中,利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第三個(gè)尋像圖形的位置的方法為擬合直線,找交點(diǎn)的方法,包括如下步驟: S10421,計(jì)算一組的兩個(gè)所述二類(lèi)尋像圖形的中心之間的距離1,在其中一個(gè)二類(lèi)尋像圖形外邊框上任取一點(diǎn),計(jì)算這個(gè)點(diǎn)到另外一個(gè)二類(lèi)尋像圖形外邊框四條直線的距離,這四個(gè)距離中只要有一個(gè)距離小于0.51,則假設(shè)兩個(gè)二類(lèi)尋像圖形位于QR碼的同一側(cè),否則假設(shè)兩個(gè)二類(lèi)尋像圖形位于QR碼的對(duì)角線上的兩個(gè)角上; S10422,兩個(gè)二類(lèi)尋像圖形位于假設(shè)QR碼的同一側(cè)時(shí),假設(shè)第三個(gè)尋像圖形的位置的方法包括如下步驟: 1)、先對(duì)每個(gè)尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框; 2)、分別合并步驟I)中兩個(gè)尋像圖形擬合出的外邊框直線和內(nèi)邊框直線:如果滿足兩條直線之間的距離小于5個(gè)像素且它們的夾角小于5°,則將兩條直線上的點(diǎn)合并并重新擬合出一條新的直線;得到重新擬合的2條外邊框線和2條內(nèi)邊框線; 3)、對(duì)一個(gè)尋像圖形中沒(méi)有合并的外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合,并向兩個(gè)方向延伸掃描,判定QR碼區(qū)域位于兩個(gè)尋像圖形中心連線的哪一偵牝同時(shí)判斷邊界掃描終點(diǎn)位置,如果滿足直線向外邊框平移I個(gè)模塊的位置,直線的外側(cè)是白色邊框,直線向內(nèi)邊框平移I個(gè)模塊的位置,直線的外側(cè)存在黑色模塊,并且黑色模塊數(shù)與白色模塊數(shù)相差不超過(guò)25%,則這條直線為QR碼的一條邊界黑色模塊中心線,將其向外邊框平移0.5個(gè)模塊構(gòu)成QR碼的一條邊界(El);根據(jù)兩個(gè)尋像圖形的邊緣點(diǎn)信息,確定模塊尺寸、QR碼的版本信息,進(jìn)一步確定邊界掃描終止位置(Dl);對(duì)另一個(gè)尋像圖形中沒(méi)有合并的外邊框直線與內(nèi)邊框直線做同樣的處理,找到另一條邊界(E2),并找到另一條邊界(E2)的邊界掃描終止位置(D2); 4)、根據(jù)兩條邊界的掃描終止位置確定一條邊界搜索直線(LI),以一個(gè)邊界掃描終止位置(D2)為起點(diǎn),如果此點(diǎn)為污損點(diǎn),沿此條邊界搜索直線(LI)進(jìn)行搜索,直到找到一個(gè)白色模塊,以此白色模塊為新的起點(diǎn),將邊界搜索直線(LI)向QR碼內(nèi)側(cè)區(qū)域旋轉(zhuǎn)5度,旋轉(zhuǎn)后的邊界搜索直線作為新的邊界搜索直線(LI),沿這條新的邊界搜索直線(LI)繼續(xù)向另一個(gè)邊界掃描終止位置(Dl)所在的方向搜索,直到找到一個(gè)黑色模塊,然后對(duì)其進(jìn)行邊界追蹤,如果邊界點(diǎn)與邊界搜索直線(LI)的距離為3個(gè)模塊寬度以下,記錄邊界追蹤得到的黑色點(diǎn),如果邊界點(diǎn)與邊界搜索直線(LI)的距離大于3個(gè)模塊寬度,終止追蹤,作此終止點(diǎn)到邊界搜索直線(LI)的垂線,找到此垂線與邊界搜索直線(LI)的交點(diǎn),并以此作為新的搜索起點(diǎn),按前述方法 搜索直到另一個(gè)邊界掃描終止位置(Dl);根據(jù)邊界追蹤得到的黑色點(diǎn),擬合出一條直線,作為QR碼的第3條邊界;第3條邊界與另外兩條邊界的交點(diǎn)為QR碼的兩個(gè)角點(diǎn),第三個(gè)尋像圖形的位置在兩個(gè)角點(diǎn)中的一個(gè)所在的位置; S10423,兩個(gè)二類(lèi)尋像圖形位于假設(shè)QR碼的對(duì)角線上的兩個(gè)角上時(shí),假設(shè)第三個(gè)尋像圖形的位置的方法包括如下步驟: 1)、先對(duì)每個(gè)尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框; 2)、對(duì)每個(gè)尋像圖形的外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別進(jìn)行擬合,將其向外邊框平移0.5個(gè)模塊構(gòu)成QR碼的一條邊界,并進(jìn)行延伸,兩個(gè)二類(lèi)尋像圖形的前述邊界相交,交點(diǎn)為可能的第三個(gè)尋像圖形的角點(diǎn),假設(shè)出第三個(gè)尋像圖形的位置在假設(shè)QR碼的另外兩個(gè)角中的一個(gè)上,如果這個(gè)假設(shè)的第三個(gè)尋像圖形的組合不能解碼,則假設(shè)第三個(gè)尋像圖形位于假設(shè)QR碼的另一個(gè)角上。
9.根據(jù)權(quán)利要求8所述的QR碼抗污損識(shí)別方法,其特征在于,對(duì)所述三個(gè)尋像圖形一組進(jìn)行組合前和/或兩個(gè)二類(lèi)尋像圖形一組進(jìn)行組合前,首先判斷尋像圖形的個(gè)數(shù): 當(dāng)尋像圖形的個(gè)數(shù)為三個(gè)以上時(shí),進(jìn)行步驟S1041 ; 當(dāng)尋像圖形個(gè)數(shù)為兩個(gè)時(shí),直接進(jìn)行步驟S1042 ; 當(dāng)尋像圖形個(gè)數(shù)為一個(gè)時(shí),直接進(jìn)行步驟S1043; 當(dāng)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),進(jìn)行步驟S105 ; 當(dāng)二類(lèi)尋像圖形為兩個(gè)以上時(shí),每?jī)蓚€(gè)尋像圖形一組進(jìn)行組合,再解碼; 當(dāng)二類(lèi)尋像圖形個(gè)數(shù)為一個(gè)時(shí),進(jìn)行步驟S1043; 當(dāng)二類(lèi)尋像圖形個(gè)數(shù)小于一個(gè)時(shí),進(jìn)行步驟S105; 所述S1043中每個(gè)尋像圖形,分別解碼,包括如下步驟: S401:對(duì)未解碼成功的兩個(gè)尋像圖形構(gòu)成的組合進(jìn)行篩選,篩選出三類(lèi)尋像圖形; S403:假設(shè)每個(gè)三類(lèi)尋像圖形均對(duì)應(yīng)一個(gè)QR碼,假設(shè)每個(gè)QR碼的第二尋像圖形、第三個(gè)尋像圖形的位置; S404:對(duì)第一個(gè)尋像圖形對(duì)應(yīng)的假設(shè)QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S404判斷的結(jié)果為是,進(jìn)行S405:返回QR碼碼值, 并進(jìn)行S406:判斷成功解碼的QR碼碼值的個(gè)數(shù)是否為要求的解碼個(gè)數(shù), 如果S406判斷的結(jié)果為是,進(jìn)行S105:結(jié)束解碼, 如果S406判斷的結(jié)果為否,進(jìn)行S408:判斷已進(jìn)行解碼的三類(lèi)尋像圖形個(gè)數(shù)是否為總的三類(lèi)尋像圖形的個(gè)數(shù), 如果S408判斷的結(jié)果為是,進(jìn)行所述步驟S105:結(jié)束解碼, 如果S408判斷的結(jié)果為否,進(jìn)行S409,對(duì)下一個(gè)三類(lèi)尋像圖形對(duì)應(yīng)的QR碼進(jìn)行解碼,判斷解碼是否成功, 如果S409判斷的結(jié)果為是,進(jìn)行前述S05, 如果S409判斷的結(jié)果為否,進(jìn)行S407,記錄未解碼成功的三類(lèi)尋像圖形, 如果S404判斷的結(jié)果為否,進(jìn)行S407。
10.根據(jù)權(quán)利要求8所述的QR碼抗污損識(shí)別方法,其特征在于,所述步驟S1043中利用QR碼的三個(gè)尋像圖形的位置關(guān)系假設(shè)第二個(gè)尋像圖形、第三個(gè)尋像圖形的位置的方法包括如下步驟: 1)、先對(duì)當(dāng)前尋像圖形內(nèi)邊緣點(diǎn)和外邊緣點(diǎn)分別擬合出4條直線,組成一個(gè)四邊形內(nèi)邊框和一個(gè)四邊形外邊框; 2)、根據(jù)尋像圖形的邊緣點(diǎn)信息確定模塊尺寸信息; 3)、對(duì)外邊框直線和內(nèi)邊框直線之間黑色模塊的中心線分別擬合成一條直線,并沿著一條直線兩個(gè)方向進(jìn)行掃描,掃描長(zhǎng)度最大為40模塊寬度,最小長(zhǎng)度14個(gè)模塊寬度;如果滿足該直線向一側(cè)平移一個(gè)模塊寬度位置是白色外邊框,向相對(duì)的另一側(cè)平移一個(gè)負(fù)的模塊寬度是黑色模塊,黑色模塊數(shù)與白色模塊數(shù)相差不到25%,則可以確定為QR碼的一條邊界,同時(shí)終止掃描;對(duì)其它擬合的直線進(jìn)行同樣處理,如果可以找到兩條可能的邊界,則認(rèn)為是一個(gè)可能的QR碼區(qū)域,并根據(jù)直線掃描的方向確定QR碼位于兩條邊界圍成的四個(gè)象限的哪一個(gè)象限; 4)、以一條邊界為起始直線,這條邊界長(zhǎng)度為21個(gè)模塊寬度,并以一個(gè)模塊寬度向QR碼區(qū)域內(nèi)側(cè)平移、掃描這條直線直到這條直線是一條白色外邊框?yàn)橹?;如果能夠找到白色外邊框,按照S10422中的方法得到第三條邊界,同樣的方法通過(guò)另一條邊界得到第4條邊界; 5)、分別假設(shè)未知的兩個(gè)尋像圖形在QR碼的另外3個(gè)角上,構(gòu)成三種尋像圖形組合。
【文檔編號(hào)】G06K7/10GK103955663SQ201410162402
【公開(kāi)日】2014年7月30日 申請(qǐng)日期:2014年4月22日 優(yōu)先權(quán)日:2014年4月22日
【發(fā)明者】吳秋蓉 申請(qǐng)人:廣州寬度信息技術(shù)有限公司