本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,尤指一種矩陣式二維碼的采樣網(wǎng)格劃分方法及裝置。
背景技術(shù):
二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的,在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來(lái)表示文字?jǐn)?shù)值信息,通過(guò)圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。根據(jù)二維碼的實(shí)現(xiàn)原理和結(jié)構(gòu)形狀的差異,可分為堆積式二維碼和矩陣式二維碼,其中矩陣式二維碼主要包括Code One、MaxiCode、QR Code、Data Matrix、Han Xin Code、Grid Matrix等。
以DM(Data Matrix)碼為例,在對(duì)矩陣式二維碼進(jìn)行檢測(cè)時(shí),主要分為DM碼區(qū)域的定位和DM碼區(qū)域的解碼??焖贉?zhǔn)確地解碼已知位置的DM碼,是DM碼檢測(cè)方案的重要組成部分。傳統(tǒng)的技術(shù)方案在確定DM碼的位置和版本之后,采用均勻網(wǎng)格劃分法,平均分割DM碼所在區(qū)域,完成對(duì)DM碼模塊的劃分,或者通過(guò)讀取DM碼的定位符特征,依賴(lài)DM碼的定位符特性微調(diào)采樣網(wǎng)格,完成對(duì)DM碼模塊的劃分。
然而,均勻網(wǎng)格劃分法對(duì)于模塊分布均勻且大小基本一致的DM碼,有比較好的解碼效果。但是,實(shí)際得到的DM碼圖像由于拍攝角度、打印機(jī)質(zhì)量、工業(yè)環(huán)境污染和誤差等不同的原因,會(huì)存在各模塊大小、長(zhǎng)寬不一致等問(wèn)題。此時(shí),均勻網(wǎng)格劃分法無(wú)法準(zhǔn)確地得到DM碼的黑白分布結(jié)構(gòu)特征,也就無(wú)法正確解碼。通過(guò)讀取DM碼定位符特征的方法,可以在一定程度上解決上述均勻劃分導(dǎo)致的問(wèn)題,但是無(wú)法解決由于污染、破壞導(dǎo)致的DM碼定位符缺損問(wèn)題。
綜上,現(xiàn)有技術(shù)中,不能合理劃分矩陣式二維碼的采樣網(wǎng)格。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例提供了一種矩陣式二維碼的采樣網(wǎng)格劃分方法及裝置,用以解決現(xiàn)有技術(shù)中存在的不能合理劃分矩陣式二維碼的采樣網(wǎng)格的問(wèn)題。
本發(fā)明實(shí)施例提供了一種矩陣式二維碼的采樣網(wǎng)格劃分方法,包括:
將二維碼圖像在水平方向上的水平梯度投影圖和在垂直方向上的垂直梯度投影圖中各峰值的位置分別作為用于分割所述二維碼圖像的各垂直分割線(xiàn)和各水平分割線(xiàn)的位置;
根據(jù)所述二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各所述垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)所述二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各所述水平分割線(xiàn)進(jìn)行調(diào)整;
根據(jù)調(diào)整后的各所述垂直分割線(xiàn)和所述水平分割線(xiàn)對(duì)所述二維碼圖像進(jìn)行采樣網(wǎng)格劃分。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,所述二維碼圖像的列數(shù)和行數(shù)按以下方式確定:
分別根據(jù)所述水平梯度投影圖中各相鄰峰值的間距,以及所述二維碼圖像在水平方向上的寬度,確定所述二維碼圖像的列數(shù);
分別根據(jù)所述垂直梯度投影圖中各相鄰峰值的間距,以及所述二維碼圖像在垂直方向上的寬度,確定所述二維碼圖像的行數(shù);
所述二維碼圖像在水平方向和垂直方向上的模塊寬度按以下方式確定:
根據(jù)所述二維碼圖像列數(shù)和行數(shù),確定所述二維碼圖像的版本信息;
根據(jù)所述二維碼圖像的版本信息,確定所述二維碼圖像在水平方向和垂直方向上的模塊寬度。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,所述根據(jù)所述二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各所述垂直分割線(xiàn)進(jìn)行調(diào)整,具體包括:
若相鄰垂直分割線(xiàn)的間距小于第一閾值,則刪除其中一個(gè)垂直分割線(xiàn);
若相鄰垂直分割線(xiàn)的間距大于第二閾值,則在相鄰的所述垂直分割線(xiàn)之間插入一定數(shù)量的垂直分割線(xiàn);所述第一閾值小于所述第二閾值。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,所述根據(jù)所述二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各所述水平分割線(xiàn)進(jìn)行調(diào)整,具體包括:
若相鄰水平分割線(xiàn)的間距小于第三閾值,則刪除其中一個(gè)水平分割線(xiàn);
若相鄰水平分割線(xiàn)的間距大于第四閾值,則在相鄰的所述水平分割線(xiàn)之間插入一定數(shù)量的水平分割線(xiàn);所述第三閾值小于所述第四閾值。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,在確定所述二維碼圖像的所述水平梯度投影圖和所述垂直梯度投影圖之前,還包括:
將所述二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,得到校正后的二維碼圖像。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,所述矩形區(qū)域的長(zhǎng)度和寬度是根據(jù)下列方式確定的:
根據(jù)所述二維碼圖像的四個(gè)頂點(diǎn)的位置,確定所述二維碼圖像的四個(gè)邊界線(xiàn)的長(zhǎng)度;
以所述二維碼圖像中任意相鄰兩條邊界線(xiàn)的長(zhǎng)度分別作為所述矩形區(qū)域的長(zhǎng)度和寬度。
本發(fā)明實(shí)施例還提供了一種矩陣式二維碼的采樣網(wǎng)格劃分裝置,包括:
分割線(xiàn)確定單元,用于將二維碼圖像在水平方向上的水平梯度投影圖和在垂直方向上的垂直梯度投影圖中各峰值的位置分別作為用于分割所述二維碼圖像的各垂直分割線(xiàn)和各水平分割線(xiàn)的位置;
調(diào)整單元,用于根據(jù)所述二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各所述垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)所述二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各所述水平分割線(xiàn)進(jìn)行調(diào)整;
采樣網(wǎng)格劃分單元,用于根據(jù)調(diào)整后的各所述垂直分割線(xiàn)和所述水平分割線(xiàn)對(duì)所述二維碼圖像進(jìn)行采樣網(wǎng)格劃分。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,還包括:模塊規(guī)格確定單元,用于:
分別根據(jù)所述水平梯度投影圖中各相鄰峰值的間距,以及所述二維碼圖像在水平方向上的寬度,確定所述二維碼圖像的列數(shù);
分別根據(jù)所述垂直梯度投影圖中各相鄰峰值的間距,以及所述二維碼圖像在垂直方向上的寬度,確定所述二維碼圖像的行數(shù);
根據(jù)所述二維碼圖像列數(shù)和行數(shù),確定所述二維碼圖像的版本信息;
根據(jù)所述二維碼圖像的版本信息,確定所述二維碼圖像在水平方向和垂直方向上的模塊寬度。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,所述調(diào)整單元,具體用于:
若相鄰垂直分割線(xiàn)的間距小于第一閾值,則刪除其中一個(gè)垂直分割線(xiàn);
若相鄰垂直分割線(xiàn)的間距大于第二閾值,則在相鄰的所述垂直分割線(xiàn)之間插入一定數(shù)量的垂直分割線(xiàn);所述第一閾值小于所述第二閾值。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,所述調(diào)整單元,具體用于:
若相鄰水平分割線(xiàn)的間距小于第三閾值,則刪除其中一個(gè)水平分割線(xiàn);
若相鄰水平分割線(xiàn)的間距大于第四閾值,則在相鄰的所述水平分割線(xiàn)之間插入一定數(shù)量的水平分割線(xiàn);所述第三閾值小于所述第四閾值。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,還包括:
校正單元,用于將所述二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,得到校正后的二維碼圖像。
在一種可能的實(shí)現(xiàn)方式中,在本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,所述校正單元,具體用于:
根據(jù)所述二維碼圖像的四個(gè)頂點(diǎn)的位置,確定所述二維碼圖像的四個(gè)邊界線(xiàn)的長(zhǎng)度;
以所述二維碼圖像中任意相鄰兩條邊界線(xiàn)的長(zhǎng)度分別作為所述矩形區(qū)域的長(zhǎng)度和寬度;
將所述二維碼圖像中的各像素點(diǎn)的灰度值映射到所述矩形區(qū)域中。
本發(fā)明有益效果如下:
本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法及裝置,該方法包括:將二維碼圖像在水平方向上的水平梯度投影圖和在垂直方向上的垂直梯度投影圖中各峰值的位置分別作為用于分割二維碼圖像的各垂直分割線(xiàn)和各水平分割線(xiàn)的位置;根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整;根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分。本發(fā)明實(shí)施例提供的方法,根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整,根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分,這種網(wǎng)格劃分方法對(duì)模塊的排列是否整齊,模塊大小是否一致的要求較低,且不依賴(lài)定位符的特征,因此,即使獲取到的二維碼圖像中的模塊大小不一致,或者定位符缺損等,也不會(huì)對(duì)采樣網(wǎng)格劃分產(chǎn)生影響,適應(yīng)性較強(qiáng)。此外,二維碼圖像中的梯度特征比較豐富,在對(duì)比度極低的情況下也可以準(zhǔn)確的劃分采樣網(wǎng)格,即該方法具有很強(qiáng)的魯棒性,也使后續(xù)的解碼過(guò)程有更高的解碼率。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法的流程圖之一;
圖2a為DM二維碼的結(jié)構(gòu)示意圖;
圖2b為圖2a中的DM二維碼的定位區(qū)的示意圖;
圖2c為圖2a中的DM二維碼的數(shù)據(jù)區(qū)的示意圖;
圖3為本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法的流程圖之二;
圖4為本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
針對(duì)現(xiàn)有技術(shù)中存在的不能合理劃分矩陣式二維碼的采樣網(wǎng)格的問(wèn)題,本發(fā)明實(shí)施例提供了一種矩陣式二維碼的采樣網(wǎng)格劃分方法及裝置。
下面結(jié)合附圖,對(duì)本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法及裝置的具體實(shí)施方式進(jìn)行詳細(xì)地說(shuō)明。
本發(fā)明實(shí)施例提供了一種矩陣式二維碼的采樣網(wǎng)格劃分方法,如圖1所示,包括:
S101、將二維碼圖像在水平方向上的水平梯度投影圖和在垂直方向上的垂直梯度投影圖中各峰值的位置分別作為用于分割二維碼圖像的各垂直分割線(xiàn)和各水平分割線(xiàn)的位置;
S102、根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整;
S103、根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分。
本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法,根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整,根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分,這種網(wǎng)格劃分方法對(duì)模塊的排列是否整齊,模塊大小是否一致的要求較低,且不依賴(lài)定位符的特征,因此,即使獲取到的二維碼圖像中的模塊大小不一致,或者定位符缺損等,也不會(huì)對(duì)采樣網(wǎng)格劃分產(chǎn)生影響,適應(yīng)性較強(qiáng)。此外,二維碼圖像中的梯度特征比較豐富,在對(duì)比度極低的情況下也可以準(zhǔn)確的劃分采樣網(wǎng)格,即該方法具有很強(qiáng)的魯棒性,也使后續(xù)的解碼過(guò)程有更高的解碼率。
本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法,可以應(yīng)用于任何矩陣式二維碼,本發(fā)明以DM碼為例進(jìn)行說(shuō)明,DM二維碼是由多個(gè)大小相同的黑色或白色方塊組成的矩形陣列的圖像,如圖2a所示,DM二維碼的四周為定位區(qū),如圖2b所示,定位區(qū)包括四條邊界,由兩條相鄰的實(shí)線(xiàn)邊界和兩條相鄰的虛線(xiàn)邊界組成,所謂虛線(xiàn)是各模塊一黑一白交替組成,目的是的為了幫助識(shí)別該二維碼的尺寸和單位結(jié)構(gòu)。定位區(qū)包圍的內(nèi)部為數(shù)據(jù)區(qū),如圖2c所示,數(shù)據(jù)區(qū)內(nèi)每個(gè)黑色模塊或白色模塊代表矩陣數(shù)據(jù)中的一位數(shù)據(jù),0或1。
上述步驟S101中,二維碼圖像的水平梯度投影圖和垂直梯度投影圖是根據(jù)二維碼圖像中各像素點(diǎn)的灰度值得到的,由于二維碼圖像本身具有黑白相間的顏色特性,因此利用各像素點(diǎn)的灰度值,可以去除其他顏色對(duì)圖像處理過(guò)程的影響,提高了處理的速度,降低方法的空間復(fù)雜度。在確定水平梯度投影圖和垂直梯度投影圖之后,可以分別將水平梯度投影圖和垂直梯度投影圖中的峰值個(gè)數(shù)、峰值的大小以及各峰值的位置等峰值信息,以數(shù)組、矩陣或者圖表等形式記錄下來(lái),用于后續(xù)計(jì)算。
在圖像處理領(lǐng)域中,梯度值指的是相鄰兩個(gè)像素點(diǎn)的灰度差,而二維碼圖像一般由多個(gè)黑色模塊或者白色模塊按照一定規(guī)則排列,黑色模塊和白色模塊之間的位置為灰度變化最大的位置,即黑色模塊和白色模塊之間的灰度值為某個(gè)鄰域范圍內(nèi)的極大值,所以在不考慮噪聲的影響時(shí),梯度投影圖中的峰值位置可以認(rèn)為是黑色模塊和白色模塊之間的位置,而一般水平梯度投影圖可以通過(guò)將各像素點(diǎn)在垂直方向上的梯度圖逐行求和得到,所以水平梯度投影圖中的峰值一般為垂直方向上多個(gè)峰值疊加的效果,由于很少會(huì)出現(xiàn)一行或一列的模塊均是黑色或白色,所以在水平梯度投影圖中,相鄰兩個(gè)模塊之間一定會(huì)出現(xiàn)峰值,因此,相鄰兩個(gè)峰值的間距可以近似等于模塊的寬度,垂直梯度投影圖的原理與水平梯度投影圖的原理類(lèi)似,此處不再贅述。
基于上述原理,可以根據(jù)水平梯度投影圖中各相鄰峰值之間的間距以及二維碼圖像在水平方向上的寬度,確定二維碼圖像的列數(shù)和水平方向上的模塊寬度,同理,可以根據(jù)垂直梯度投影圖中各相鄰峰值之間的間距以及二維碼圖像在垂直方向上的寬度,確定二維碼圖像的行數(shù)和垂直方向上的模塊寬度。
在不考慮噪聲的影響時(shí),在梯度投影圖中的峰值的位置可以認(rèn)為是相鄰兩個(gè)峰值之間的位置,所以可以將峰值出現(xiàn)的位置作為分割線(xiàn)的位置,通過(guò)將水平梯度投影圖中各峰值的位置作為各垂直分割線(xiàn)的位置,將垂直梯度投影圖中各峰值的位置作為各水平分割線(xiàn)的位置,因而可以將二維碼圖像分割為一個(gè)一個(gè)的矩形網(wǎng)格。在實(shí)際應(yīng)用中,在梯度投影圖中噪聲比較大的位置處也可能出現(xiàn)峰值,并且獲取到的二維碼圖像可能并不是很整齊,所以在上述步驟S102中,需要根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整,以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整,從而去除噪聲和二維碼圖像可能不整齊帶來(lái)的劃分網(wǎng)格的誤差。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,還可以包括:
S100'、分別根據(jù)水平梯度投影圖和垂直梯度投影圖中各相鄰峰值的間距,以及二維碼圖像在水平方向和垂直方向上的寬度,確定二維碼圖像的行數(shù)、列數(shù),以及在水平方向和垂直方向上的模塊寬度。
上述二維碼圖像的列數(shù)和行數(shù)按以下方式確定(圖中未示出):
分別根據(jù)水平梯度投影圖中各相鄰峰值的間距,以及二維碼圖像在水平方向上的寬度,確定二維碼圖像的列數(shù);
分別根據(jù)垂直梯度投影圖中各相鄰峰值的間距,以及二維碼圖像在垂直方向上的寬度,確定二維碼圖像的行數(shù);
具體地,上述二維碼圖像在水平方向和垂直方向上的模塊寬度按以下方式確定(圖中未示出):
根據(jù)二維碼圖像列數(shù)和行數(shù),確定二維碼圖像的版本信息;
根據(jù)二維碼圖像的版本信息,確定二維碼圖像在水平方向和垂直方向上的模塊寬度。
更具體地,在確定二維碼圖像的列數(shù)時(shí),根據(jù)水平梯度投影圖中每一個(gè)相鄰峰值的間距和二維碼圖像在水平方向上的寬度,可以得到多個(gè)與每一個(gè)間距對(duì)應(yīng)的列數(shù)的近似個(gè)數(shù),一般可以通過(guò)水平方向上的寬度分別除以每一個(gè)間距得到每一個(gè)間距對(duì)應(yīng)的近似個(gè)數(shù),而列數(shù)一般為確定的整數(shù),例如16、18或22等數(shù)值,在得到的多個(gè)近似個(gè)數(shù)中,若大多數(shù)的近似個(gè)數(shù)與這些整數(shù)中的某一個(gè)整數(shù)接近,則可以認(rèn)為二維碼圖像的列數(shù)就是該整數(shù)。舉例來(lái)說(shuō),若水平梯度投影圖中的各相鄰峰值的間距分別為2.1、2.15、2.13、2.09、2.4、2.12,二維碼圖像在水平方向上的寬度為38,則用41除以上述間距的數(shù)值,可以得到各間距對(duì)應(yīng)的近似個(gè)數(shù)為:18.1、17.7、17.8、18.2、15.8、17.9,可以看出大多數(shù)的近似個(gè)數(shù)都與18接近,則可以認(rèn)為列數(shù)為18。若在計(jì)算出的近似個(gè)數(shù)中出現(xiàn)某個(gè)數(shù)值介于上述整數(shù)之間,例如出現(xiàn)17在16和18之間的情況,此時(shí)也可以通過(guò)設(shè)置權(quán)重的方式看整體上哪個(gè)整數(shù)的權(quán)重最大來(lái)確定列數(shù)。在確定行數(shù)時(shí)的過(guò)程與確定列數(shù)的過(guò)程類(lèi)似,此處不再贅述。
在確定水平方向和垂直方向上的模塊寬度時(shí),一般對(duì)于二維碼圖像每個(gè)版本對(duì)應(yīng)的行數(shù)、列數(shù)以及模塊的尺寸都是是固定的,所以可以根據(jù)二維碼圖像的行數(shù)和列數(shù)來(lái)確定該二維碼圖像屬于哪個(gè)版本,確定該二維碼圖像的版本信息后,則可以確定該二維碼的尺寸。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,上述步驟S102中對(duì)垂直分割線(xiàn)進(jìn)行調(diào)整,可以具體包括(圖中未示出):
S102a、若相鄰垂直分割線(xiàn)的間距小于第一閾值,則刪除其中一個(gè)垂直分割線(xiàn);
S102b、若相鄰垂直分割線(xiàn)的間距大于第二閾值,則在相鄰的垂直分割線(xiàn)之間插入一定數(shù)量的垂直分割線(xiàn);第一閾值小于第二閾值。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,上述步驟S102中對(duì)水平分割線(xiàn)進(jìn)行調(diào)整,可以具體包括(圖中未示出):
S102c、若相鄰水平分割線(xiàn)的間距小于第三閾值,則刪除其中一個(gè)水平分割線(xiàn);
S102d、若相鄰水平分割線(xiàn)的間距大于第四閾值,則在相鄰的水平分割線(xiàn)之間插入一定數(shù)量的水平分割線(xiàn);第三閾值小于第四閾值。
上述步驟S102a中,若相鄰兩個(gè)垂直分割線(xiàn)的間距太小,則可以認(rèn)為其中一個(gè)垂直分割線(xiàn)對(duì)應(yīng)的峰值是由于噪聲導(dǎo)致的,則需要?jiǎng)h除其中一個(gè)垂直分割線(xiàn),在具體應(yīng)用中,對(duì)每一個(gè)間距進(jìn)行判斷,若出現(xiàn)間距小于第一閾值,優(yōu)選為均刪除靠前的垂直分割線(xiàn)或均刪除靠后的垂直分割線(xiàn),上述第一閾值可以根據(jù)在水平方向上的模塊寬度確定,例如可以取在水平方向上的模塊寬度的1/3或1/2等數(shù)值,也可以根據(jù)實(shí)際需要確定。
上述步驟S102b中,若相鄰垂直分割線(xiàn)的間距太大,則說(shuō)明在這兩個(gè)垂直分割線(xiàn)之間還存在沒(méi)有檢測(cè)出來(lái)的峰值,則需要在這兩個(gè)垂直分割線(xiàn)之間插入垂直分割線(xiàn),插入的數(shù)量要根據(jù)間距的大小來(lái)確定,若該間距大約為兩個(gè)模塊的寬度,則只需再插入一個(gè)垂直分割線(xiàn)即可,若該間距大約為三個(gè)模塊的寬度,則需要再插入兩個(gè)垂直分割線(xiàn)。上述第二閾值可以根據(jù)在水平方向上的模塊寬度確定,例如可以取在水平方向上的模塊寬度的1.2倍或1.3倍等數(shù)值,也可以根據(jù)實(shí)際需要確定。在具體實(shí)施時(shí),在插入垂直分割線(xiàn)時(shí),還要結(jié)合二維碼圖像的列數(shù)來(lái)確定插入垂直分割線(xiàn)的數(shù)量,要使插入垂直分割線(xiàn)后得到的垂直分割線(xiàn)的數(shù)量比列數(shù)多1,才能進(jìn)行網(wǎng)格劃分,后續(xù)才能正確解碼,也可以將間距由大到小進(jìn)行排序,看哪些間距中可以插入垂直分割線(xiàn),再結(jié)合需要插入的個(gè)數(shù),來(lái)確定每一個(gè)間距中需要插入的個(gè)數(shù),當(dāng)然也可以采用其他確定方式,此處不做限定。
上述步驟S102c和步驟S102d為對(duì)水平分割線(xiàn)調(diào)整的過(guò)程,與上述步驟S102a和步驟S102b對(duì)垂直分割線(xiàn)的調(diào)整過(guò)程類(lèi)似,此處不再贅述。
進(jìn)一步地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,在確定二維碼圖像的水平梯度投影圖和垂直梯度投影圖之前,還可以包括:
S100、將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,得到校正后的二維碼圖像。
通過(guò)將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,實(shí)際上是對(duì)二維碼圖像進(jìn)行校正,由于拍攝角度的問(wèn)題,獲取到的二維碼圖像可能并不是規(guī)則的矩形,有可能是平行四邊形或者梯形等,通過(guò)將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,可以得到圖形規(guī)則的校正后的二維碼圖像,在本發(fā)明實(shí)施例中,后續(xù)提到的二維碼圖形優(yōu)選為校正后的二維碼圖像。
具體地,上述步驟S100可以具體包括(圖中未示出):
S100a、根據(jù)二維碼圖像的四個(gè)頂點(diǎn)的位置,確定二維碼圖像的四個(gè)邊界線(xiàn)的長(zhǎng)度;
S100b、以二維碼圖像中任意相鄰兩條邊界線(xiàn)的長(zhǎng)度分別作為矩形區(qū)域的長(zhǎng)度和寬度;
S100c、將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中。
參照?qǐng)D2b所示的DM二維碼的定位區(qū),上述S100a中,首先根據(jù)DM二維碼的實(shí)線(xiàn)邊界可以找到三個(gè)頂點(diǎn)的位置,然后根據(jù)虛線(xiàn)位置確定DM二維碼第四個(gè)頂點(diǎn)的位置,然后就可以根據(jù)四個(gè)頂點(diǎn)的位置,得到四條邊界的長(zhǎng)度。
步驟S100b中,以二維碼圖像中任意相鄰兩條邊界線(xiàn)的長(zhǎng)度作為矩形區(qū)域的預(yù)設(shè)長(zhǎng)度和寬度,使后續(xù)步驟S100c中的映射過(guò)程比較容易,減小映射過(guò)程的計(jì)算量。
在具體實(shí)施時(shí),本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,上述步驟S101中的水平梯度投影圖和垂直梯度投影圖,可以按以下方式確定:
S101a、根據(jù)二維碼圖像中的各像素點(diǎn)的灰度值,分別得到各像素點(diǎn)在水平方向和垂直方向上的梯度值;
S101b、將各像素點(diǎn)在垂直方向上的梯度值逐行求和,得到水平梯度投影圖;
S101c、將各像素點(diǎn)在水平方向上的梯度值逐列求和,得到垂直梯度投影圖。
在上述步驟S101a中,由于在對(duì)二維碼圖像進(jìn)行網(wǎng)格劃分時(shí),需要對(duì)水平方向和垂直方向上均劃分,所以需要確定各像素點(diǎn)在水平方向和垂直方向兩個(gè)方向上的梯度值,以便后續(xù)計(jì)算兩個(gè)方向上出現(xiàn)的峰值。
在上述步驟S101b中,將各像素點(diǎn)在垂直方向上的梯度值逐行求和,可以得到各像素點(diǎn)灰度變化的累加效果,而峰值一般出現(xiàn)在黑色模塊和白色模塊之間的位置,由于很少會(huì)出現(xiàn)一行或一列的模塊均是黑色或白色,所以在水平梯度投影圖中,相鄰兩個(gè)模塊之間一定會(huì)出現(xiàn)峰值,因而后續(xù)可以將峰值的位置作為分割線(xiàn)的位置。上述步驟S101c與步驟S101b的原理類(lèi)似,此處不再贅述。
更進(jìn)一步地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分方法中,上述步驟S101之前,還可以包括(圖中未示出):
確定水平梯度投影圖和垂直梯度投影圖中的峰值、各峰值的位置、谷值以及各谷值的位置;
濾除與相鄰的谷值的差值小于預(yù)設(shè)閾值的峰值。
在水平(或垂直)梯度投影圖中,一般相鄰的峰值和谷值之間的差值會(huì)比較大,若相鄰的峰值和谷值之間的差值比較小,則有可能該峰值位置處并不是邊緣,而是噪聲,因此,通過(guò)設(shè)定預(yù)設(shè)閾值,如果相鄰的峰值和谷值之間的差值小于該預(yù)設(shè)閾值,則認(rèn)為該峰值位置處為噪聲,將該峰值去除,將整個(gè)水平(或垂直)梯度投影圖都進(jìn)行這樣的處理,則濾除二維碼圖像中不規(guī)則或獨(dú)立的噪聲,使后續(xù)的處理結(jié)果更加準(zhǔn)確。
參照?qǐng)D3,以下結(jié)合附圖,對(duì)本發(fā)明實(shí)施例提供的優(yōu)選實(shí)施例進(jìn)行詳細(xì)說(shuō)明:
S201、根據(jù)二維碼圖像的四個(gè)頂點(diǎn)的位置,確定二維碼圖像的四個(gè)邊界線(xiàn)的長(zhǎng)度;
S202、將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,得到校正后的二維碼圖像;該矩形區(qū)域的長(zhǎng)度和寬度分別為二維碼圖像中任意相鄰兩條邊界線(xiàn)的長(zhǎng)度;
S203、根據(jù)校正后的二維碼圖像中各像素點(diǎn)的灰度值,確定校正后的二維碼圖像在水平方向上的水平梯度投影圖和在垂直方向上的垂直梯度投影圖;
S204、分別確定水平梯度投影圖和垂直梯度投影圖中的峰值、各峰值的位置、谷值以及各谷值的位置,濾除與相鄰的谷值的差值小于預(yù)設(shè)閾值的峰值;
S205、分別根據(jù)水平梯度投影圖和垂直梯度投影圖中各相鄰峰值的間距,以及二維碼圖像在水平方向和垂直方向上的寬度,確定二維碼圖像的列數(shù)、行數(shù)以及在水平方向和垂直方向上的模塊寬度;二維碼圖像在水平方向上和垂直方向上的寬度可以為上述S202中的矩形區(qū)域的長(zhǎng)度和寬度;
S206、將水平梯度投影圖和垂直梯度投影圖中各峰值的位置分別作為用于分割二維碼圖像的各垂直分割線(xiàn)和各水平分割線(xiàn)的位置;
S207、根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整;
S208、根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分。
基于同一發(fā)明構(gòu)思,本發(fā)明實(shí)施例提供一種矩陣式二維碼的采樣網(wǎng)格劃分裝置,由于該裝置解決問(wèn)題的原理與上述方法相似,因此該裝置的實(shí)施可以參見(jiàn)上述方法的實(shí)施,重復(fù)之處不再贅述。
如圖4所示,本發(fā)明實(shí)施例提供了一種矩陣式二維碼的采樣網(wǎng)格劃分裝置,包括:
分割線(xiàn)確定單元301,用于將二維碼圖像在水平方向上的水平梯度投影圖和在垂直方向上的垂直梯度投影圖中各峰值的位置分別作為用于分割二維碼圖像的各垂直分割線(xiàn)和各水平分割線(xiàn)的位置;
調(diào)整單元302,用于根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整;
采樣網(wǎng)格劃分單元303,用于根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,還可以包括:模塊規(guī)格確定單元300',用于:
分別根據(jù)水平梯度投影圖中各相鄰峰值的間距,以及二維碼圖像在水平方向上的寬度,確定二維碼圖像的列數(shù);
分別根據(jù)垂直梯度投影圖中各相鄰峰值的間距,以及二維碼圖像在垂直方向上的寬度,確定二維碼圖像的行數(shù);
根據(jù)二維碼圖像列數(shù)和行數(shù),確定二維碼圖像的版本信息;
根據(jù)二維碼圖像的版本信息,確定二維碼圖像在水平方向和垂直方向上的模塊寬度。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,調(diào)整單元302,可以具體用于:
若相鄰垂直分割線(xiàn)的間距小于第一閾值,則刪除其中一個(gè)垂直分割線(xiàn);
若相鄰垂直分割線(xiàn)的間距大于第二閾值,則在相鄰的垂直分割線(xiàn)之間插入一定數(shù)量的垂直分割線(xiàn);第一閾值小于第二閾值。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,調(diào)整單元302,可以具體用于:
若相鄰水平分割線(xiàn)的間距小于第三閾值,則刪除其中一個(gè)水平分割線(xiàn);
若相鄰水平分割線(xiàn)的間距大于第四閾值,則在相鄰的水平分割線(xiàn)之間插入一定數(shù)量的水平分割線(xiàn);第三閾值小于第四閾值。
進(jìn)一步地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,參照?qǐng)D4,還可以包括:
校正單元300,用于將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,得到校正后的二維碼圖像。
具體地,本發(fā)明實(shí)施例提供的上述矩陣式二維碼的采樣網(wǎng)格劃分裝置中,校正單元300,可以具體用于:
根據(jù)二維碼圖像的四個(gè)頂點(diǎn)的位置,確定二維碼圖像的四個(gè)邊界線(xiàn)的長(zhǎng)度;
以二維碼圖像中任意相鄰兩條邊界線(xiàn)的長(zhǎng)度分別作為矩形區(qū)域的長(zhǎng)度和寬度;
將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中。
本發(fā)明實(shí)施例提供的矩陣式二維碼的采樣網(wǎng)格劃分方法及裝置,根據(jù)二維碼圖像的列數(shù)和在水平方向上的模塊寬度,對(duì)各垂直分割線(xiàn)進(jìn)行調(diào)整;以及根據(jù)二維碼圖像的行數(shù)和在垂直方向上的模塊寬度,對(duì)各水平分割線(xiàn)進(jìn)行調(diào)整,根據(jù)調(diào)整后的各垂直分割線(xiàn)和水平分割線(xiàn)對(duì)二維碼圖像進(jìn)行采樣網(wǎng)格劃分,這種網(wǎng)格劃分方法對(duì)模塊的排列是否整齊,模塊大小是否一致的要求較低,且不依賴(lài)定位符的特征,因此,即使獲取到的二維碼圖像中的模塊大小不一致,或者定位符缺損等,也不會(huì)對(duì)采樣網(wǎng)格劃分產(chǎn)生影響,適應(yīng)性較強(qiáng)。此外,二維碼圖像中的梯度特征比較豐富,在對(duì)比度極低的情況下也可以準(zhǔn)確的劃分采樣網(wǎng)格,即該方法具有很強(qiáng)的魯棒性,也使后續(xù)的解碼過(guò)程有更高的解碼率。此外,通過(guò)將二維碼圖像中的各像素點(diǎn)的灰度值映射到矩形區(qū)域中,使校正后的二維碼圖像具有規(guī)則的圖形,因而,二維碼圖像本身的形狀不會(huì)影響后續(xù)的處理過(guò)程,降低后續(xù)處理過(guò)程的復(fù)雜度。并且在采用網(wǎng)格劃分前還包括去除噪聲的過(guò)程,進(jìn)一步提高了處理速度和采樣網(wǎng)格劃分的準(zhǔn)確性。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。