一種Grid Matrix二維條碼宏模塊提取方法
【專(zhuān)利摘要】一種Grid Matrix二維條碼宏模塊提取方法,包括:對(duì)圖像進(jìn)行自適應(yīng)的二值化;對(duì)二值化圖像中的輪廓進(jìn)行連通體檢測(cè),并按照逆時(shí)針順序排列輪廓上的點(diǎn);根據(jù)輪廓上前后點(diǎn)的距離,提取其中的清晰線段,建立端點(diǎn)集合及有向線段與端點(diǎn)的映射關(guān)系表,通過(guò)有向線段的廣度優(yōu)先搜索,檢測(cè)四邊的閉合環(huán);最后用后處理排除閉合環(huán)中的錯(cuò)誤檢測(cè),以將檢測(cè)作為宏模塊輸出進(jìn)而根據(jù)幾何關(guān)系采樣并譯碼。上述Grid Matrix二維條碼模塊提取方法能快速得到模塊數(shù)據(jù),且能適應(yīng)條碼模塊被顯著遮擋和無(wú)損,提供高可靠性的譯碼數(shù)據(jù)。
【專(zhuān)利說(shuō)明】一種Gr i d Matr i X二維條碼宏模塊提取方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及二維條碼識(shí)別【技術(shù)領(lǐng)域】,具體為一種Grid Matrix二維條碼宏模塊提 取方法。
【背景技術(shù)】
[0002] Grid Matrix二維條碼為作為我國(guó)具有自主知識(shí)產(chǎn)權(quán)的二維條碼技術(shù),是信息與 物體之間的智能設(shè)備媒介。相比于其他識(shí)別手段,二維條碼技術(shù)具有成本低、使用方便、可 靠性高等優(yōu)點(diǎn)。在迅速發(fā)展的社會(huì)需求下,傳統(tǒng)的一維條碼由于信息量小,呈現(xiàn)出很大的局 限性。在此形勢(shì)下,信息容量更大、糾錯(cuò)能力更高的各種二維條碼被相繼提出,其中各國(guó)都 提出并發(fā)展了不同的二維條碼,并指定了標(biāo)準(zhǔn);Grid Matrix二維條碼為作為我國(guó)具有自主 知識(shí)產(chǎn)權(quán)的二維條碼技術(shù),對(duì)我國(guó)在信息化大發(fā)展的前景下,有深遠(yuǎn)的戰(zhàn)略意義。另一方 面,二維條碼識(shí)讀設(shè)備普遍摒棄了傳統(tǒng)的激光掃描方式,而采用更為低成本的基于可見(jiàn)光 圖像技術(shù)的數(shù)字?jǐn)z像頭。采用數(shù)字?jǐn)z像機(jī)和數(shù)字圖像處理技術(shù)成為二維條碼圖像數(shù)據(jù)采集 設(shè)備的低成本解決方案。近年來(lái),二維條碼被逐漸重視,并開(kāi)始應(yīng)用于各種帶有視頻功能的 智能終端設(shè)備;在信息傳播過(guò)程中,二維條碼作為信息的載體和傳輸接口,例如在物品的出 庫(kù)、運(yùn)輸、分發(fā)、存儲(chǔ)、轉(zhuǎn)移等等環(huán)節(jié),可以通過(guò)掃描讀取物品對(duì)應(yīng)的二維條碼快速的獲取相 關(guān)信息。因此發(fā)展先進(jìn)性的二維條碼技術(shù)對(duì)未來(lái)國(guó)民經(jīng)濟(jì)和生活具有深遠(yuǎn)影響。
[0003] Grid Matrix二維條碼是一種正方形的二維條碼碼制,該碼制的碼圖由正方形的 白色宏模塊和黑色宏模塊組成,每個(gè)宏模塊由6乘6個(gè)正方形單元模塊組成(如圖1所示)。 然而和所有二維條碼一樣,由于Grid Matrix二維條碼在實(shí)際應(yīng)用中會(huì)受到污損和遮擋的 影響,雖然其在設(shè)計(jì)之初就考慮了通過(guò)增強(qiáng)定位信息的冗余性提高條碼的魯棒性。但通過(guò) 算法可進(jìn)一步增強(qiáng)處理能力對(duì)異常情況的適應(yīng),在關(guān)鍵情況下少許的改善即可將譯碼的成 功率大幅提升。更需注意的是,國(guó)家標(biāo)準(zhǔn)僅僅定義了在標(biāo)準(zhǔn)的Grid Matrix二維條碼圖形 下的宏模塊提取方法,并未詳細(xì)解釋如何從真實(shí)的傳感器圖形轉(zhuǎn)換到分割圖像。而不標(biāo)準(zhǔn) 的二維條碼分割圖形,將導(dǎo)致Grid Matrix二維條碼無(wú)法被檢測(cè)。然而實(shí)際使用過(guò)程的環(huán) 境復(fù)雜多變。因此,研制在在復(fù)雜情況下Grid Matrix二維條碼的高可靠性宏模塊提取快 速方法具有積極意義。
【發(fā)明內(nèi)容】
[0004] 針對(duì)上述問(wèn)題,本發(fā)明的目的是提供一種基于數(shù)字圖像處理技術(shù)的Grid Matrix 二維條碼宏模塊的提取方法,以解決復(fù)雜的成像環(huán)境情況下檢測(cè)Grid Matrix二維條碼和 分割宏模塊圖形的問(wèn)題。它能適應(yīng)真實(shí)情況下的涂改、缺損、遮擋、折痕、扭曲、光照不均勻 等等問(wèn)題,并且處理速率更高。技術(shù)方案如下:
[0005] -種Grid Matrix二維條碼宏模塊提取方法,其特征在于,按以下步驟進(jìn)行:
[0006] 1)讀取Grid Matrix二維條碼圖像;
[0007] 2)對(duì)上述圖像做二值化處理;
[0008] 3)對(duì)二值化圖像求逆運(yùn)算,使黑白色翻轉(zhuǎn);
[0009] 4)使用連通體檢測(cè)算法計(jì)算翻轉(zhuǎn)后的二值化圖像中的白色連通體區(qū)域;
[0010] 5)遍歷每個(gè)連通體像素,按照逆時(shí)針順序記錄連通體區(qū)域邊界上的點(diǎn),生成邊界 點(diǎn)鏈表;
[0011] 6)對(duì)邊界點(diǎn)鏈表進(jìn)行簡(jiǎn)化;
[0012] 7)建立輪廓上清晰線段的線段集和清晰線段端點(diǎn)的端點(diǎn)集,以及該線段集與端點(diǎn) 集的元素間映射關(guān)系;
[0013] 8)對(duì)線段集中的端點(diǎn)坐標(biāo)信息進(jìn)行融合;
[0014] 9)遍歷端點(diǎn)集,刪除不屬于任何線段的端點(diǎn);
[0015] 10)搜尋線段集中每個(gè)有向線段,記錄該有向線段的后續(xù)線段及其與該有向線段 之間的連接角度是否為凸;
[0016] 11)遍歷線段集中的所有線段:對(duì)任一線段逐次遞歸地找連接角度為凸且順次連 接的4條后續(xù)線段,若其最后一條線段與當(dāng)前線段重合,則形成4邊逆時(shí)針閉合環(huán),記錄該 4個(gè)線段及相對(duì)應(yīng)端點(diǎn),生成4邊逆時(shí)針閉合環(huán)的鏈表,該鏈表對(duì)應(yīng)白色宏模塊;否則繼續(xù) 遍歷直至完成;
[0017] 12)遍歷線段集中的所有線段:對(duì)任一線段逐次遞歸地找連接角度為凹且順次連 接的4條后續(xù)線段,若其最后一條線段與當(dāng)前線段重合,則形成4邊順時(shí)針閉合環(huán),記錄該 4個(gè)線段及相對(duì)應(yīng)端點(diǎn),生成4邊順時(shí)針閉合環(huán)的鏈表,該鏈表對(duì)應(yīng)黑色宏模塊;否則繼續(xù) 遍歷直至完成;
[0018] 13)判斷上述白色宏模塊和黑色宏模塊的連通,性并建立起相對(duì)幾何坐標(biāo);
[0019] 14)將連通的4邊逆時(shí)針閉合環(huán)和4邊順時(shí)針閉合環(huán)及其相對(duì)坐標(biāo)和圖像區(qū)域傳 遞給譯碼模塊進(jìn)行譯碼;將譯碼結(jié)果輸出。
[0020] 進(jìn)一步的,上述對(duì)圖像做二值化處理的方法為:
[0021] a)對(duì)圖像進(jìn)行預(yù)處理,包括去噪聲和平滑濾波;
[0022] b)將處理后的圖像轉(zhuǎn)換為灰度圖像;
[0023] c)使用Iaplace算子計(jì)算灰度圖像中的邊緣;
[0024] d)計(jì)算邊緣圖形的積分圖;
[0025] e)將圖像分割成若干塊,并對(duì)每塊子圖像計(jì)算其中的邊緣數(shù)量之和;
[0026] f)遍歷所有子圖像,若子圖像中邊緣數(shù)量和大于設(shè)定閾值,則認(rèn)為該區(qū)域是二維 碼圖形區(qū)域,設(shè)置對(duì)應(yīng)的判別矩陣的值為1 ;否則設(shè)定為〇 ;
[0027] g)提升子圖像的分辨率一倍,同樣子圖像的尺度縮小為原來(lái)的一半,利用預(yù)先獲 取的積分圖重新計(jì)算判別矩陣中邊緣對(duì)應(yīng)的子圖像中邊緣數(shù)量和;
[0028] h)若分辨率達(dá)到最大分辨率,則轉(zhuǎn)入下一步,否則返回上一步;
[0029] i)對(duì)判別矩陣中為1的位置用Otsu算法計(jì)算其自適應(yīng)分割值;
[0030] j)擴(kuò)張判別矩陣;
[0031] k)利用判別矩陣分割圖像,即圖像中的像素灰度值若大于判別矩陣對(duì)應(yīng)值,則設(shè) 置為255;否則設(shè)置為0。
[0032] 更進(jìn)一步的,上述對(duì)邊界點(diǎn)鏈表簡(jiǎn)化的方法為:若某點(diǎn)位于其前后兩點(diǎn)所構(gòu)成的 直線上,則從邊界點(diǎn)鏈表中刪除該點(diǎn)。
[0033] 更進(jìn)一步的,上述線段集和端點(diǎn)集建立的方法為:按照逆時(shí)針?lè)较虮闅v簡(jiǎn)化后的 邊界點(diǎn)鏈表,依次計(jì)算連續(xù)兩邊界點(diǎn)的距離,若距離超過(guò)預(yù)先設(shè)置的閾值,則該兩點(diǎn)屬于輪 廓上的清晰線段的端點(diǎn),保留該清晰線段和相對(duì)應(yīng)的端點(diǎn),生成線段集和端點(diǎn)集;若距離小 于預(yù)先設(shè)置的閾值,則刪除該線段。
[0034] 更進(jìn)一步的,上述線段集中的端點(diǎn)坐標(biāo)信息進(jìn)行融合的方法為:遍歷線段集中的 每一個(gè)端點(diǎn),若線段集中的其他端點(diǎn)與該端點(diǎn)坐標(biāo)的歐氏距離小于預(yù)先設(shè)定的閾值,則將 兩個(gè)端點(diǎn)的幾何均值替換兩個(gè)端點(diǎn);若兩點(diǎn)間的歐氏距離大于設(shè)定閾值,則不做處理。
[0035] 更進(jìn)一步的,上述判斷宏模塊的連通性及建立起相對(duì)幾何坐標(biāo)的方法為:將所述 4邊逆時(shí)針閉合環(huán)鏈表中的第一個(gè)4逆時(shí)針邊閉合環(huán)的坐標(biāo)設(shè)置為相對(duì)幾何坐標(biāo)系的原點(diǎn) (〇, 〇);讀取與其相鄰的8個(gè)4邊閉合環(huán);按照空間關(guān)系給予每個(gè)新讀取的閉合環(huán)以坐標(biāo) 值,并再如此迭代地訪問(wèn)新讀取的閉合環(huán)的領(lǐng)域,讀出連通的4邊閉合環(huán)之間坐標(biāo)相對(duì)關(guān) 系;并且從最小最大X和y坐標(biāo)指導(dǎo)連通管4邊閉合環(huán)的范圍。
[0036] 本發(fā)明的有益效果在于:
[0037] 1、本發(fā)明可以最大程度的提高對(duì)Grid Matrix二維條碼宏模塊圖形的提取能力, 不受版本、印刷尺寸和顏色的影響,且具有較高的抗噪聲、抗污損的能力;
[0038] 2、本發(fā)明的宏模塊提取方法可同時(shí)提取黑白模塊,而無(wú)需像傳統(tǒng)方法那樣要同時(shí) 提取黑白模塊需分兩次處理;
[0039] 3、本發(fā)明的處理流程面向一維的有向線段,比面向二維圖像的傳統(tǒng)方法的處理速 率更尚;
[0040] 4、本發(fā)明采用可見(jiàn)光視頻,比基于激光掃描的方法成本更低。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0041] 圖1為Grid Matrix二維條碼外觀的示意圖。
[0042] 圖2為本發(fā)明處理流程圖。
[0043] 圖3為本發(fā)明的處理過(guò)程示意圖,按照從左至右從上至下的順序分別表示了 Grid Matrix二維條碼原圖、自適應(yīng)二值化圖像、逆運(yùn)算之后的圖像、連通體輪廓、有向線段連接 情況和提取的宏模塊區(qū)域的情況。
[0044] 圖4為本發(fā)明完成處理后提取宏模塊內(nèi)容獲取的標(biāo)準(zhǔn)化Grid Matrix二維條碼。
[0045] 圖5為本發(fā)明對(duì)有向線段的方向性說(shuō)明,其中黑色宏模塊的有向線段構(gòu)成的四邊 形是逆時(shí)針?lè)较?,而白色宏模塊的有向線段為順時(shí)針?lè)较颉?br>
[0046] 圖6為本發(fā)明處理遮擋的情況與國(guó)標(biāo)敘述方法的處理情況的對(duì)比,其中國(guó)標(biāo)方法 結(jié)果為左圖,本發(fā)明方法的結(jié)果為右圖。對(duì)比可見(jiàn),在同樣的遮擋情況下,本文方法可用多 直接提取出兩個(gè)模塊(灰色標(biāo)記)。盡管僅多出兩個(gè)模塊,但在解碼上可能就是能否成功的 信息分界線。
【具體實(shí)施方式】
[0047] 本發(fā)明方法應(yīng)用于二維碼掃描器設(shè)備,其工作過(guò)程是,視頻采集部分根據(jù)用戶(hù)指 令,開(kāi)啟攝像頭并按照固定幀率采集彩色視頻圖像;Grid Matrix二維條碼檢測(cè)部分對(duì)攝 像機(jī)采集的視頻圖像進(jìn)行基于自適應(yīng)二值化輪廓的向線段的預(yù)處理,再提取并輸出其中的 Grid Matrix碼宏模塊信息以供譯碼模塊識(shí)別;人機(jī)交互部分接受到用戶(hù)的工作指令后,首 先打開(kāi)補(bǔ)光裝置提示用戶(hù)設(shè)備由休眠轉(zhuǎn)為開(kāi)始工作,并用激光定位指示燈提示用戶(hù)掃描范 圍,當(dāng)掃描成功后用蜂鳴器提示完成。
[0048] 本發(fā)明處理過(guò)程主要包含兩個(gè)部分:從圖像中提取有向線段的預(yù)處理部分和處理 有向線段以魯棒性地提取Grid Matrix二維碼宏模塊的核心部分。其中前者是從觀測(cè)圖像 中提取有向線段并建立線段和端點(diǎn)集的映射表;后者是核心的處理算法,采用廣度優(yōu)先的 遍歷方法從有向線段中組合出可能為Grid Matrix二維碼條碼宏模塊的區(qū)域,最后處理去 除干擾。
[0049] 通過(guò)分區(qū)域的局部信息自適應(yīng)地二值化視頻采集的圖片,提取二值化輪廓中的顯 著線段并按照逆時(shí)針排序,記錄端點(diǎn)集合及其與逆時(shí)針導(dǎo)向的有向線段;進(jìn)而廣度優(yōu)先的 掃描優(yōu)先線段中后續(xù)線段,從中組合獲取四邊的閉合環(huán),最后用后處理排除閉合環(huán)中的錯(cuò) 誤檢測(cè),以將檢測(cè)作為宏模塊輸出進(jìn)而根據(jù)幾何關(guān)系采樣并譯碼。具體步驟如下:
[0050] 1)讀取采集到的Grid Matrix二維條碼圖像。
[0051] 2)對(duì)上述圖像做二值化處理;具體步驟如下:
[0052] a)對(duì)圖像進(jìn)行預(yù)處理,包括去噪聲和平滑濾波;
[0053] b)將處理后的圖像轉(zhuǎn)換為灰度圖像;
[0054] c)使用Iaplace算子計(jì)算灰度圖像中的邊緣;
[0055] d)計(jì)算邊緣圖形的積分圖;
[0056] e)將圖像分割成若干塊,并對(duì)每塊子圖像計(jì)算其中的邊緣數(shù)量之和;
[0057] f)遍歷所有子圖像,若子圖像中邊緣數(shù)量和大于設(shè)定閾值,則認(rèn)為該區(qū)域是二維 碼圖形區(qū)域,設(shè)置對(duì)應(yīng)的判別矩陣的值為1 ;否則設(shè)定為〇 ;
[0058] g)提升子圖像的分辨率一倍,同樣子圖像的尺度縮小為原來(lái)的一半,利用預(yù)先獲 取的積分圖重新計(jì)算判別矩陣中邊緣對(duì)應(yīng)的子圖像中邊緣數(shù)量和;
[0059] h)若分辨率達(dá)到最大分辨率,則轉(zhuǎn)入下一步,否則返回上一步;
[0060] i)對(duì)判別矩陣中為1的位置用Otsu算法計(jì)算其自適應(yīng)分割值;
[0061] j)擴(kuò)張判別矩陣;
[0062] k)利用判別矩陣分割圖像,即圖像中的像素灰度值若大于判別矩陣對(duì)應(yīng)值,則設(shè) 置為255;否則設(shè)置為0。
[0063] 3)對(duì)二值化圖像求逆運(yùn)算,使黑白色翻轉(zhuǎn)。
[0064] 4)使用連通體檢測(cè)算法計(jì)算翻轉(zhuǎn)后的二值化圖像中的白色連通體區(qū)域。
[0065] 5)遍歷每個(gè)連通體像素,按照逆時(shí)針順序記錄連通體區(qū)域邊界上的點(diǎn),生成邊界 點(diǎn)鏈表;由于鏈表中的點(diǎn)按照逆時(shí)針次序記錄,因此相鄰邊界點(diǎn)之間始終存在前后關(guān)系,由 相鄰邊界點(diǎn)定義的線段可以認(rèn)為是從前一個(gè)點(diǎn)指向后一個(gè)點(diǎn),線段具有方向性,在此稱(chēng)其 為有向線段。在本文所述處理中,每個(gè)線段皆賦予了方向性,皆為有向線段。
[0066] 6)對(duì)邊界點(diǎn)鏈表進(jìn)行簡(jiǎn)化;具體方法為:若某點(diǎn)位于其前后兩點(diǎn)所構(gòu)成的直線 上,則從邊界點(diǎn)鏈表中刪除該點(diǎn)。
[0067] 7)建立輪廓上清晰線段的線段集和清晰線段端點(diǎn)的端點(diǎn)集,以及該線段集與端點(diǎn) 集的元素間映射關(guān)系。具體方法為:按照逆時(shí)針?lè)较虮闅v簡(jiǎn)化后的邊界點(diǎn)鏈表,依次計(jì)算連 續(xù)兩邊界點(diǎn)的距離,若距離超過(guò)預(yù)先設(shè)置的閾值,則該兩點(diǎn)屬于輪廓上的清晰線段的端點(diǎn), 保留該清晰線段和相對(duì)應(yīng)的端點(diǎn),生成線段集和端點(diǎn)集;若距離小于預(yù)先設(shè)置的閾值,則刪 除該線段。
[0068] 8)對(duì)線段集中的端點(diǎn)坐標(biāo)信息進(jìn)行融合。具體做法為,遍歷線段集中的端點(diǎn),判斷 線段集中的其他端點(diǎn)與其坐標(biāo)的歐氏距離是否小于預(yù)先設(shè)定的閾值,若小于閾值則可認(rèn)為 此兩點(diǎn)非常近似有待融合,則將兩個(gè)端點(diǎn)的幾何均值替換兩個(gè)端點(diǎn)。若兩點(diǎn)間的歐氏距離 大于設(shè)定閾值,則說(shuō)明兩點(diǎn)分別從屬于不同的端點(diǎn),不予進(jìn)一步考慮。其中的閾值是通過(guò)預(yù) 先的樣本統(tǒng)計(jì)獲取,并在程序中設(shè)置固定。該處理的好處是,可以減少由于圖像模糊等干擾 導(dǎo)致的邊角模糊而引起的定位偏差。
[0069] 9)遍歷端點(diǎn)集,刪除不屬于任何線段的端點(diǎn)。
[0070] 10)搜尋線段集中每個(gè)有向線段,記錄該有向線段的后續(xù)線段及其與該有向線段 之間的連接角度是否為凸。有向線段間夾角是否為凸的定義,是由兩個(gè)有向線段所代表的 矢量外積的正負(fù)所決定,在本文中定義外積為正時(shí)夾角為凸。
[0071] 11)遍歷線段集中的所有線段:對(duì)任一線段逐次遞歸地找連接角度為凸且順次連 接的4條后續(xù)線段,若其最后一條線段與當(dāng)前線段重合,則形成4邊逆時(shí)針閉合環(huán),記錄該 4個(gè)線段及相對(duì)應(yīng)端點(diǎn),生成4邊逆時(shí)針閉合環(huán)的鏈表,該鏈表對(duì)應(yīng)白色宏模塊;否則繼續(xù) 遍歷直至完成。
[0072] 12)遍歷線段集中的所有線段:對(duì)任一線段逐次遞歸地找連接角度為凹且順次連 接的4條后續(xù)線段,若其最后一條線段與當(dāng)前線段重合,則形成4邊順時(shí)針閉合環(huán),記錄該 4個(gè)線段及相對(duì)應(yīng)端點(diǎn),生成4邊順時(shí)針閉合環(huán)的鏈表,該鏈表對(duì)應(yīng)黑色宏模塊;否則繼續(xù) 遍歷直至完成。
[0073] 13)判斷上述白色宏模塊和黑色宏模塊的連通,性并建立起相對(duì)幾何坐標(biāo)。具體做 法為:將步驟11)中獲取的4邊逆時(shí)針閉合環(huán)鏈表中的第一個(gè)4邊閉合環(huán)的坐標(biāo)設(shè)置為相 對(duì)幾何坐標(biāo)系的原點(diǎn)(〇,〇);讀取該與閉合環(huán)的4條邊相鄰四個(gè)閉合環(huán),即為該閉合環(huán)的上 下左右的領(lǐng)域閉合環(huán);再讀取該閉合環(huán)在相對(duì)幾何坐標(biāo)系下的對(duì)角線領(lǐng)域,即左上、左下、 右下和右上領(lǐng)域的閉合環(huán)。按照空間關(guān)系給予每個(gè)新讀取的與其相鄰的8個(gè)4邊閉合環(huán)以 坐標(biāo)值,并再如此迭代地訪問(wèn)新讀取的閉合環(huán)的領(lǐng)域。如此循環(huán)可悉數(shù)讀出連通的4邊閉 合環(huán)之間坐標(biāo)相對(duì)關(guān)系。并且從最小最大X和y坐標(biāo)可以指導(dǎo)連通管4邊閉合環(huán)的范圍。
[0074] 14)將連通的4邊逆時(shí)針閉合環(huán)和4邊順時(shí)針閉合環(huán)及其相對(duì)坐標(biāo)和圖像區(qū)域傳 遞給譯碼模塊進(jìn)行譯碼;譯碼過(guò)程參照國(guó)家標(biāo)準(zhǔn)GB/T 27766-2011進(jìn)行。譯碼結(jié)果輸出到 終端設(shè)備。
[0075] 在以上步驟中,由于自適應(yīng)的閾值計(jì)算過(guò)程總是在提升分辨率后的圖形區(qū)域的邊 緣進(jìn)行的,因此計(jì)算復(fù)雜度由傳統(tǒng)窮舉搜索方法的〇(n 2)減為了 0(n),即計(jì)算復(fù)雜度大為降 低,加速了二維條碼檢測(cè)提取過(guò)程。因此,快速判斷觀測(cè)圖像中是否有二維條碼圖形并快速 分割的意義在于,可以改善檢測(cè)識(shí)別的速率。首先判斷場(chǎng)景中是否有二維條碼的計(jì)算代價(jià) 比較小,如果觀測(cè)圖像中沒(méi)有二維條碼,則可回避后續(xù)無(wú)用的操作,直接循環(huán)處理下一幀圖 像。其次,如果場(chǎng)景中有二維條碼,則需對(duì)二維條碼圖形區(qū)域進(jìn)行提取。此時(shí)的關(guān)鍵要求不 是處理速度快,而是盡量準(zhǔn)確獲得高質(zhì)量的分割圖像,進(jìn)而減少掃描譯碼模塊嘗試的次數(shù)。 換句話(huà)說(shuō),盡管高質(zhì)量的分割過(guò)程會(huì)適當(dāng)增加運(yùn)算量,但由于提高了命中率,因此從全局看 仍然是提高了識(shí)別速率。由于還采用了高精度分割的加速方法,因此使計(jì)算效率進(jìn)一步提 升。
[0076] 硬件列表如下:
[0077]
【權(quán)利要求】
1. 一種Grid Matrix二維條碼宏模塊提取方法,其特征在于,按W下步驟進(jìn)行; 1) 讀取Grid Matrix二維條碼圖像; 2) 對(duì)上述圖像做二值化處理; 3) 對(duì)二值化圖像求逆運(yùn)算,使黑白色翻轉(zhuǎn); 4) 使用連通體檢測(cè)算法計(jì)算翻轉(zhuǎn)后的二值化圖像中的白色連通體區(qū)域; 5) 遍歷每個(gè)連通體像素,按照逆時(shí)針順序記錄連通體區(qū)域邊界上的點(diǎn),生成邊界點(diǎn)鏈 表; 6) 對(duì)邊界點(diǎn)鏈表進(jìn)行簡(jiǎn)化; 7) 建立輪廓上清晰線段的線段集和清晰線段端點(diǎn)的端點(diǎn)集,W及該線段集與端點(diǎn)集的 元素間映射關(guān)系; 8) 對(duì)線段集中的端點(diǎn)坐標(biāo)信息進(jìn)行融合; 9) 遍歷端點(diǎn)集,刪除不屬于任何線段的端點(diǎn); 10) 捜尋線段集中每個(gè)有向線段,記錄該有向線段的后續(xù)線段及其與該有向線段之間 的連接角度是否為凸; 11) 遍歷線段集中的所有線段;對(duì)任一線段逐次遞歸地找連接角度為凸且順次連接的 4條后續(xù)線段,若其最后一條線段與當(dāng)前線段重合,則形成4邊逆時(shí)針閉合環(huán),記錄該4個(gè)線 段及相對(duì)應(yīng)端點(diǎn),生成4邊逆時(shí)針閉合環(huán)的鏈表,該鏈表對(duì)應(yīng)白色宏模塊;否則繼續(xù)遍歷直 至完成; 12) 遍歷線段集中的所有線段;對(duì)任一線段逐次遞歸地找連接角度為凹且順次連接的 4條后續(xù)線段,若其最后一條線段與當(dāng)前線段重合,則形成4邊順時(shí)針閉合環(huán),記錄該4個(gè)線 段及相對(duì)應(yīng)端點(diǎn),生成4邊順時(shí)針閉合環(huán)的鏈表,該鏈表對(duì)應(yīng)黑色宏模塊;否則繼續(xù)遍歷直 至完成; 13) 判斷上述白色宏模塊和黑色宏模塊的連通,性并建立起相對(duì)幾何坐標(biāo); 14) 將連通的4邊逆時(shí)針閉合環(huán)和4邊順時(shí)針閉合環(huán)及其相對(duì)坐標(biāo)和圖像區(qū)域傳遞給 譯碼模塊進(jìn)行譯碼;將譯碼結(jié)果輸出。
2. 根據(jù)權(quán)利要求1所述的一種Grid Matrix二維條碼宏模塊提取方法,其特征在于,所 述對(duì)圖像做二值化處理的方法為: a) 對(duì)圖像進(jìn)行預(yù)處理,包括去噪聲和平滑濾波; b) 將處理后的圖像轉(zhuǎn)換為灰度圖像; C)使用laplace算子計(jì)算灰度圖像中的邊緣; d) 計(jì)算邊緣圖形的積分圖; e) 將圖像分割成若干塊,并對(duì)每塊子圖像計(jì)算其中的邊緣數(shù)量之和; f) 遍歷所有子圖像,若子圖像中邊緣數(shù)量和大于設(shè)定闊值,則認(rèn)為該區(qū)域是二維碼圖 形區(qū)域,設(shè)置對(duì)應(yīng)的判別矩陣的值為1 ;否則設(shè)定為0 ; g) 提升子圖像的分辨率一倍,同樣子圖像的尺度縮小為原來(lái)的一半,利用預(yù)先獲取的 積分圖重新計(jì)算判別矩陣中邊緣對(duì)應(yīng)的子圖像中邊緣數(shù)量和; h) 若分辨率達(dá)到最大分辨率,則轉(zhuǎn)入下一步,否則返回上一步; i) 對(duì)判別矩陣中為1的位置用化SU算法計(jì)算其自適應(yīng)分割值; j) 擴(kuò)張判別矩陣; k)利用判別矩陣分割圖像,即圖像中的像素灰度值若大于判別矩陣對(duì)應(yīng)值,則設(shè)置為 255 ;否則設(shè)置為0。
3. 根據(jù)權(quán)利要求1所述的一種Grid Matrix二維條碼宏模塊提取方法,其特征在于, 所述對(duì)邊界點(diǎn)鏈表簡(jiǎn)化的方法為;若某點(diǎn)位于其前后兩點(diǎn)所構(gòu)成的直線上,則從邊界點(diǎn)鏈 表中刪除該點(diǎn)。
4. 根據(jù)權(quán)利要求1所述的一種Grid Matrix二維條碼宏模塊提取方法,其特征在于, 所述線段集和端點(diǎn)集建立的方法為;按照逆時(shí)針?lè)较虮闅v簡(jiǎn)化后的邊界點(diǎn)鏈表,依次計(jì)算 連續(xù)兩邊界點(diǎn)的距離,若距離超過(guò)預(yù)先設(shè)置的闊值,則該兩點(diǎn)屬于輪廓上的清晰線段的端 點(diǎn),保留該清晰線段和相對(duì)應(yīng)的端點(diǎn),生成線段集和端點(diǎn)集;若距離小于預(yù)先設(shè)置的闊值, 則刪除該線段。
5. 根據(jù)權(quán)利要求1所述的一種Grid Matrix二維條碼宏模塊提取方法,其特征在于, 所述線段集中的端點(diǎn)坐標(biāo)信息進(jìn)行融合的方法為;遍歷線段集中的每一個(gè)端點(diǎn),若線段集 中的其他端點(diǎn)與該端點(diǎn)坐標(biāo)的歐氏距離小于預(yù)先設(shè)定的闊值,則將兩個(gè)端點(diǎn)的幾何均值替 換兩個(gè)端點(diǎn);若兩點(diǎn)間的歐氏距離大于設(shè)定闊值,則不做處理。
6. 根據(jù)權(quán)利要求1所述的一種Grid Matrix二維條碼宏模塊提取方法,其特征在于, 所述判斷宏模塊的連通性及建立起相對(duì)幾何坐標(biāo)的方法為;將所述4邊逆時(shí)針閉合環(huán)鏈表 中的第一個(gè)4逆時(shí)針邊閉合環(huán)的坐標(biāo)設(shè)置為相對(duì)幾何坐標(biāo)系的原點(diǎn)(0, 0);讀取與其相鄰 的8個(gè)4邊閉合環(huán);按照空間關(guān)系給予每個(gè)新讀取的閉合環(huán)W坐標(biāo)值,并再如此迭代地訪問(wèn) 新讀取的閉合環(huán)的領(lǐng)域,讀出連通的4邊閉合環(huán)之間坐標(biāo)相對(duì)關(guān)系;并且從最小最大X和y 坐標(biāo)指導(dǎo)連通管4邊閉合環(huán)的范圍。
【文檔編號(hào)】G06K7/10GK104463067SQ201410736797
【公開(kāi)日】2015年3月25日 申請(qǐng)日期:2014年12月4日 優(yōu)先權(quán)日:2014年12月4日
【發(fā)明者】王俊峰, 唐鵬, 陳懿, 高志剛 申請(qǐng)人:四川大學(xué)