一種視覺導航用的crc二維碼的生成方法及識別方法
【專利摘要】本發(fā)明公開了一種視覺導航用的CRC二維碼的生成方法及識別方法,該生成方法的步驟為:設(shè)置數(shù)據(jù)區(qū)和ID編號,所述數(shù)據(jù)區(qū)包括ID的二進制位碼區(qū)和對應(yīng)的CRC校驗碼區(qū),所述ID編號是該二維碼在二維碼數(shù)據(jù)庫中唯一的十進制編號;構(gòu)建CRC二維碼的邊框和設(shè)置邊框頂點:邊框包括具有對比度的內(nèi)邊框和外邊框;頂點包括4個外邊框頂點和4個內(nèi)邊框頂點;生成CRC二維碼圖片。該識別方法是用來識別上述方法所生成的CRC二維碼。本發(fā)明具有原理簡單、易實現(xiàn)和推廣、能夠快速準確的從場景圖像中檢測與識別等優(yōu)點。
【專利說明】
一種視覺導航用的CRC二維碼的生成方法及識別方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明主要涉及到視覺導航領(lǐng)域,特指一種適用于視覺導航的CRC二維碼的生成 方法及識別方法。
【背景技術(shù)】
[0002] 目前,隨著科學技術(shù)的日益進步,導航已經(jīng)在各行各業(yè)、甚至是普通人的生活當中 得以普及。視覺導航是指依據(jù)視覺圖像,利用圖像處理、計算機視覺、模型識別等相關(guān)技術(shù) 獲取運動體的運動信息和空間位置信息,實現(xiàn)導航。比如無人機自主著落、倉儲智能車導 航、室內(nèi)機器人導航等均需要視覺導航系統(tǒng)同時提供位置和姿態(tài)信息。與此同時,導航技術(shù) 逐漸在根據(jù)實際運用的狀況與其他技術(shù)進行融合,以達到在特定應(yīng)用場合中最佳的導航效 果。
[0003] 二維碼迅速走向市場,被各行各業(yè)的用戶熟識并廣泛使用。在水平和垂直方向的 二維空間存儲信息的條形碼稱為二維條形碼(2-dimensional Barcode),簡稱二維碼。根據(jù) 二維碼的編碼原理,通??梢苑譃閮煞N類型:行排式二維條碼和矩陣式二維碼;典型的行排 式二維碼有:〇)(16161(、(:〇(1649、?0?417等。典型的矩陣式二維碼有 :(:〇(160116、]\^?1(:〇(16、 QRCode、DataMatr ix 等。
[0004] 從已經(jīng)公開的專利和文獻來看,目前還沒有專門針對視覺導航應(yīng)用而設(shè)計的二維 碼。但視覺導航應(yīng)用區(qū)別于其它應(yīng)用而言,對二維碼的性能需求是不同的:第一,視覺導航 應(yīng)用對二維碼的形狀是否美觀以及所含信息是否安全并不關(guān)注,而是要求其易于在大視角 變換以及遠距離的情況下能夠準確的從獲取的圖像中識別;第二,視覺導航應(yīng)用對二維碼 是否能夠從局部區(qū)域中恢復數(shù)據(jù)并不關(guān)注,而是要求能夠準確的從圖像中檢測出盡量多的 頂點,進而根據(jù)成像原理估計出載體的位置和姿態(tài)。
[0005] 由此可見看出,通用二維碼圖像在導航應(yīng)用中的兩大缺點:(1)通用二維碼圖像在 大視角變換條件下難以準確識別;(2)通用二維碼圖像的頂點不易精確提取,一般只適用于 鄰近定位;而本發(fā)明設(shè)計的基于CRC的二維碼具有內(nèi)外一共8個頂點,且在圖像中易于準確 提取,可以根據(jù)成像原理同時估計載體的位置和姿態(tài)。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明要解決的技術(shù)問題就在于:針對現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一 種原理簡單、易實現(xiàn)和推廣、能夠快速準確的從場景圖像中檢測與識別的視覺導航用的CRC 二維碼的生成方法及識別方法。進一步利用本發(fā)明的方法設(shè)計一種視覺導航專用的CRC二 維碼圖案,能夠快速準確的從場景圖像中檢測與識別,為視覺導航應(yīng)用提供技術(shù)支撐。
[0007] 為解決上述技術(shù)問題,本發(fā)明采用以下技術(shù)方案:
[0008] -種視覺導航用的CRC二維碼的生成方法,其步驟為:
[0009] 設(shè)置數(shù)據(jù)區(qū)和ID編號,所述數(shù)據(jù)區(qū)包括ID的二進制位碼區(qū)和對應(yīng)的CRC校驗碼區(qū), 所述ID編號是該二維碼在二維碼數(shù)據(jù)庫中唯一的十進制編號;
[0010] 構(gòu)建CRC二維碼的邊框和設(shè)置邊框頂點:邊框包括具有對比度的內(nèi)邊框和外邊框; 頂點包括4個外邊框頂點和4個內(nèi)邊框頂點;
[0011] 生成CRC二維碼圖片。
[0012] 作為本發(fā)明生成方法的進一步改進:所述邊框采用連續(xù)邊線組成的對稱結(jié)構(gòu),所 述內(nèi)邊框和外邊框之間的對比度為顏色的對比度,或亮度的對比度,或者是兩者的組合。
[0013] 作為本發(fā)明生成方法的進一步改進:所述外邊框的寬度為2個碼元寬度,所述內(nèi)邊 框的寬度為1個碼元寬度。
[0014] 作為本發(fā)明生成方法的進一步改進:所述數(shù)據(jù)區(qū)的寬度為5個碼元寬度,所述數(shù)據(jù) 區(qū)包含5 X 5 = 25個b i t的信息;其中前21個b i t用于存放該二維碼ID對應(yīng)的二進制位碼,后4 個bit用于存放二進制位碼的CRC校驗碼。
[0015] 作為本發(fā)明生成方法的進一步改進:利用二進制數(shù)表示二維碼的ID,并用循環(huán)冗 余碼技術(shù)計算ID的校驗碼,將二進制表示的ID與校驗碼組合,構(gòu)成固定長度的位碼。
[0016] 作為本發(fā)明生成方法的進一步改進:所述CRC校驗碼由二進制位碼對應(yīng)的多項式 與生成多項式相除取余得到。
[0017]作為本發(fā)明生成方法的進一步改進:選取那些僅能從0°旋轉(zhuǎn)方向正確讀取的ID, 即對于一個給定的ID編號,將其轉(zhuǎn)換為二進制數(shù)據(jù)得到位碼,并計算相應(yīng)的CRC校驗碼碼; 然后將位碼和校驗碼填入到數(shù)據(jù)區(qū),形成5 X 5的編碼矩陣。
[0018] -種基于上述CRC二維碼的識別方法,其步驟為:
[0019] S1:檢測二維碼圖像的邊緣和頂點;即,進行圖像二值化及邊緣檢測,提取可能的 CRC二維碼邊沿和頂點;
[0020] S2:并對提取的二維碼區(qū)域進行單應(yīng)變換,讀取位碼;即,對圖像中的CRC二維碼區(qū) 域進行單應(yīng)變換,根據(jù)像素值讀取位碼和CRC校驗碼;
[0021] S3:利用循環(huán)冗余碼校驗技術(shù)對位碼進行錯誤檢測,識別二維碼的ID。
[0022] 作為本發(fā)明識別方法的進一步改進:所述步驟S1的具體流程為:首先將輸入圖像 轉(zhuǎn)換為二值圖像,提取黑白區(qū)域的邊緣像素點;然后在提取的圖像邊緣中,選取滿足具有4 個頂點的凸閉合邊緣,得到二維碼區(qū)域的候選集。
[0023] 作為本發(fā)明識別方法的進一步改進:所述步驟S2中,對每個二維碼區(qū)域的候選集, 根據(jù)數(shù)據(jù)庫中的二維碼頂點Pl和場景圖像二維碼頂A Pl'之間的關(guān)系,估計單應(yīng)矩陣H;計算 公式為:
[0024] [pi' X ]Hpi = 0(i = 1,2,3,4)
[0025]其中[Pl'X]表示由齊次坐標仍'形成的反對稱陣;上式是關(guān)于H的線性方程,將4個 頂點的齊次坐標代人上式,用最小二乘估計算法求出H。
[0026] 與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點在于:
[0027] (1)、本發(fā)明視覺導航用的CRC二維碼具有同時估計相機的位置和姿態(tài)的優(yōu)點;
[0028] (2)、本發(fā)明視覺導航用的CRC二維碼具有大視角圖像變換下實時識別的優(yōu)點;
[0029] (3)、本發(fā)明視覺導航用的CRC二維碼的生成方法及識別方法,有效提高了二維碼 在視覺導航應(yīng)用中的環(huán)境適應(yīng)性和導航精度。
【附圖說明】
[0030] 圖1是本發(fā)明生成方法的流程示意圖。
[0031] 圖2是本發(fā)明在具體應(yīng)用實例中生成的CRC二維碼圖像的示意圖。
[0032] 圖3是本發(fā)明在具體應(yīng)用實例中數(shù)據(jù)區(qū)表示的四種可能的編碼矩陣示意圖。
[0033] 圖4是本發(fā)明識別方法的流程示意圖。
[0034]圖5是本發(fā)明在具體應(yīng)用實例中單應(yīng)矩陣H與數(shù)據(jù)庫中的二維碼頂點和場景圖像 二維碼頂點之間的關(guān)系示意圖。
【具體實施方式】
[0035]以下將結(jié)合說明書附圖和具體實施例對本發(fā)明做進一步詳細說明。
[0036]如圖1所示,本發(fā)明的視覺導航用的CRC二維碼的生成方法,其步驟為:
[0037] 設(shè)置數(shù)據(jù)區(qū)和ID編號,所述數(shù)據(jù)區(qū)包括ID的二進制位碼區(qū)和對應(yīng)的CRC校驗碼區(qū), 所述ID編號是該二維碼在二維碼數(shù)據(jù)庫中唯一的十進制編號。
[0038] 構(gòu)建CRC二維碼的邊框和設(shè)置邊框頂點:邊框包括具有一定對比度的內(nèi)邊框和外 邊框;頂點包括4個外邊框頂點和4個內(nèi)邊框頂點;具體應(yīng)用時,黑色外邊框和白色內(nèi)邊框的 寬度以碼元寬度為單位,作為優(yōu)選的方案,黑色外邊框的寬度可以為2個碼元寬度,白色內(nèi) 邊框的寬度可以為1個碼元寬度。
[0039] 生成CRC二維碼圖片。
[0040] 在上述方案當中,可以先進行數(shù)據(jù)區(qū)和ID編號的設(shè)置,然后再進行邊框和頂點的 設(shè)置;也可以先進行邊框和頂點的設(shè)置,然后再進行數(shù)據(jù)區(qū)和ID編號的設(shè)置。根據(jù)實際需要 來選擇即可,都應(yīng)在本發(fā)明的保護范圍之內(nèi)。
[0041] 具體應(yīng)用時,邊框采用連續(xù)邊線組成的對稱結(jié)構(gòu),內(nèi)邊框和外邊框之間具有一定 的對比度,可以是顏色的對比度,也可以是亮度的對比度,或者是兩者的組合。例如,可以采 用黑色外邊框和白色內(nèi)邊框,但不僅限于這種設(shè)定方式。
[0042] 具體應(yīng)用時,作為優(yōu)選的方案,數(shù)據(jù)區(qū)的寬度可以為5個碼元寬度,則數(shù)據(jù)區(qū)包含5 X 5 = 25個bit的信息。其中,前21個bit用于存放該二維碼ID對應(yīng)的二進制位碼,后4個bit 用于存放二進制位碼的CRC校驗碼。
[0043]具體應(yīng)用時,CRC二維碼的編碼規(guī)則為:利用二進制數(shù)表示二維碼的ID,并用循環(huán) 冗余碼技術(shù)計算ID的校驗碼,將二進制表示的ID與校驗碼組合,構(gòu)成固定長度的位碼。
[0044] 具體應(yīng)用時,CRC校驗碼由二進制位碼對應(yīng)的多項式與生成多項式相除取余得到。 作為優(yōu)選的方案,可以是選取x4+x 2+l為生成多項式。
[0045] 參見圖2,為在一個具體應(yīng)用實例中CRC二維碼的示意圖。黑色外邊框為圖中的黑 色邊框邊長為11個位碼,寬度為2個位碼,白色內(nèi)邊框為圖中的白色邊框?qū)挾葹?個位碼。外 邊框上有4個外頂點,內(nèi)邊框上有4個內(nèi)頂點。數(shù)據(jù)區(qū)的大小為5X5個位碼;數(shù)據(jù)區(qū)的前21個 bit為位碼區(qū),用于存放ID的二進制表示,最后4個bit為CRC校驗碼區(qū),用于存放CRC校驗碼。
[0046] 例如:ID70939的二進制表示是:10001010100011011,則加零補齊21位之后位碼區(qū) 的值為000010001010100011011。本實施案例中,CRC生成多項式是x 4+x2+l,該示例中位碼區(qū) 數(shù)據(jù)對應(yīng)的4b i t的CRC校驗碼為11 0 1。所以最終得到的25b i t的數(shù)據(jù)區(qū)的值為: 0000100010101000110111101。
[0047] 在上述步驟的基礎(chǔ)上,還包括:判斷給定二維碼ID是否是有效ID;由于位碼區(qū)為 21bit,所以能夠表示的有效的ID范圍是:0~2097151,那么給定的ID必須在能夠表示的有 效范圍以內(nèi)。對于有效的ID形成的編碼矩陣,分別用黑色和白色來填充對應(yīng)碼元方塊。然后 按照CRC二維碼圖像的結(jié)構(gòu),添加白色內(nèi)邊框和黑色外邊框。最后在外邊框的右上角添加ID 的十進制數(shù)字,形成一幅完整的CRC二維碼圖片。
[0048] 對于通用的二維碼,比如QR二維碼,其結(jié)構(gòu)的三個頂點處設(shè)置有定位碼,可以通過 這三個定位碼來判斷QR二維碼在圖像中的旋轉(zhuǎn)方向,從而正確的讀取數(shù)據(jù)區(qū)的編碼。對于 本發(fā)明設(shè)計的CRC二維碼,由于需要精確確定邊框的頂點,所以邊框采用連續(xù)邊線組成的對 稱結(jié)構(gòu)。因此無法根據(jù)檢測的邊框確定CRC二維碼在圖像中的旋轉(zhuǎn)方向,這會給CRC二維碼 的識別帶來模糊問題。為了解決本問題,本發(fā)明選取那些僅能從0°旋轉(zhuǎn)方向正確讀取的ID。 即對于一個給定的ID編號(比如70939),將其轉(zhuǎn)換為二進制數(shù)據(jù)得到位碼,并計算相應(yīng)的 CRC校驗碼。然后將位碼和校驗碼填入到數(shù)據(jù)區(qū),形成5X5的編碼矩陣。如圖3所示,將編碼 矩陣分別旋轉(zhuǎn)0°、90°、180°、270°,得到4個編碼矩陣,對應(yīng)的編碼分別是: 0000100010101000110111101,1001101000001110001100101, 1011110110001010100010000,1010011000111000001011001。這以上的四組編碼中,只有第 一組的校驗碼與位碼正確匹配,即只能從0°旋轉(zhuǎn)方向正確讀取。因此70939是一個有效的ID 編號。
[0049] 如圖4所示,本發(fā)明進一步提供一種基于上述CRC二維碼的識別方法,步驟為:
[0050] S1:檢測二維碼圖像的邊緣和頂點;即,進行圖像二值化及邊緣檢測,提取可能的 CRC二維碼邊沿和頂點。
[0051] 二維碼圖像的邊緣檢測包括圖像二值化邊緣提取和凸四邊形校驗。因為本發(fā)明設(shè) 計的二維碼的黑色邊緣是正四邊形,經(jīng)過圖像透視變化后,應(yīng)該保持凸四邊形的特點,所以 對于場景圖像中提取的閉合邊緣,必須滿足凸四邊形的條件,才有可能是二維碼的圖像。 [0052]因此,步驟可以為:
[0053]首先,將輸入圖像轉(zhuǎn)換為二值圖像,提取黑白區(qū)域的邊緣像素點。然后,在提取的 圖像邊緣中,選取滿足具有4個頂點的凸閉合邊緣,得到二維碼區(qū)域的候選集。
[0054] S2:并對提取的二維碼區(qū)域進行單應(yīng)變換,讀取位碼;即,對圖像中的CRC二維碼區(qū) 域進行單應(yīng)變換,根據(jù)像素值讀取位碼和CRC校驗碼。
[0055] 對每個二維碼區(qū)域的候選集,如圖5所示,根據(jù)數(shù)據(jù)庫中的二維碼頂點pjP場景圖 像二維碼頂點Pl'之間的關(guān)系,估計單應(yīng)矩陣H。計算公式為:
[0056] [pi' X ]Hpi = 0(i = 1,2,3,4)
[0057]其中[Pl'X]表示由齊次坐標仍'形成的反對稱陣。上式是關(guān)于H的線性方程,將4個 頂點的齊次坐標代人上式,用最小二乘估計算法求出H。
[0058] 利用估計的單應(yīng)矩陣H,將數(shù)據(jù)庫中二維碼的數(shù)據(jù)區(qū)域內(nèi)每個位碼的中心位置投 影到圖像中,得到像素坐標從而讀取該坐標的位碼b 1: r"cn1 fo if
[0059] ^=\
[1 else
[0060] 其中g(shù)(yi,Vi)是像素坐標(yi,Vi)處的圖像灰度值,gthre5shc)ld是判斷位碼為1或者〇 的灰度值閾值。將數(shù)據(jù)區(qū)域的所有位碼{bj組成二進制串,則可得到編碼。圖5所示的二維 碼圖像中數(shù)據(jù)區(qū)域的編碼為:〇〇〇〇1〇〇〇1〇1〇1〇〇〇11〇1111〇1。
[0061] S3:利用循環(huán)冗余碼校驗(CRC)技術(shù)對位碼進行錯誤檢測,識別二維碼的ID。
[0062]對于本實施案例中提取的二維碼編碼,其前21位為二維碼ID對應(yīng)的二進制數(shù)據(jù), 后4位是該二進制數(shù)據(jù)的CRC校驗碼。本實例案例中,采用與二維碼生成算法中相同的CRC生 成多項式(即:x4 + x2 + l )。對于圖5所示的二維碼圖像,前21位二進制碼為: 000010001010100011011,對應(yīng)的CRC校驗碼為1101。將由前21位二進制數(shù)據(jù)計算的CRC碼與 提取的編碼后4位相比,如果相同,則該二維碼圖像被正確提取,識別結(jié)構(gòu)有效。如該例中計 算的C R C校驗碼與圖像中檢測的C R C二維碼均為1 1 0 1,說明I D編碼正確, 000010001010100011011 對應(yīng)的 ID 號為 70939。
[0063]以上僅是本發(fā)明的優(yōu)選實施方式,本發(fā)明的保護范圍并不僅局限于上述實施例, 凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護范圍。應(yīng)當指出,對于本技術(shù)領(lǐng)域的 普通技術(shù)人員來說,在不脫離本發(fā)明原理前提下的若干改進和潤飾,應(yīng)視為本發(fā)明的保護 范圍。
【主權(quán)項】
1. 一種視覺導航用的CRC二維碼的生成方法,其特征在于,步驟為: 設(shè)置數(shù)據(jù)區(qū)和ID編號,所述數(shù)據(jù)區(qū)包括ID的二進制位碼區(qū)和對應(yīng)的CRC校驗碼區(qū),所述 ID編號是該二維碼在二維碼數(shù)據(jù)庫中唯一的十進制編號; 構(gòu)建CRC二維碼的邊框和設(shè)置邊框頂點:邊框包括具有對比度的內(nèi)邊框和外邊框;頂點 包括4個外邊框頂點和4個內(nèi)邊框頂點; 生成CRC二維碼圖片。2. 根據(jù)權(quán)利要求1所述的視覺導航用的CRC二維碼的生成方法,其特征在于,所述邊框 采用連續(xù)邊線組成的對稱結(jié)構(gòu),所述內(nèi)邊框和外邊框之間的對比度為顏色的對比度,或亮 度的對比度,或者是兩者的組合。3. 根據(jù)權(quán)利要求1所述的視覺導航用的CRC二維碼的生成方法,其特征在于,所述外邊 框的寬度為2個碼元寬度,所述內(nèi)邊框的寬度為1個碼元寬度。4. 根據(jù)權(quán)利要求1或2或3所述的視覺導航用的CRC二維碼的生成方法,其特征在于,所 述數(shù)據(jù)區(qū)的寬度為5個碼元寬度,所述數(shù)據(jù)區(qū)包含5 X 5 = 25個b i t的信息;其中前21個b i t用 于存放該二維碼ID對應(yīng)的二進制位碼,后4個bit用于存放二進制位碼的CRC校驗碼。5. 根據(jù)權(quán)利要求1或2或3所述的視覺導航用的CRC二維碼的生成方法,其特征在于,利 用二進制數(shù)表示二維碼的ID,并用循環(huán)冗余碼技術(shù)計算ID的校驗碼,將二進制表示的ID與 校驗碼組合,構(gòu)成固定長度的位碼。6. 根據(jù)權(quán)利要求1或2或3所述的視覺導航用的CRC二維碼的生成方法,其特征在于,所 述CRC校驗碼由二進制位碼對應(yīng)的多項式與生成多項式相除取余得到。7. 根據(jù)權(quán)利要求1或2或3所述的視覺導航用的CRC二維碼的生成方法,其特征在于,選 取那些僅能從O旋轉(zhuǎn)方向正確讀取的ID,即對于一個給定的ID編號,將其轉(zhuǎn)換為二進制數(shù)據(jù) 得到位碼,并計算相應(yīng)的CRC校驗碼碼;然后將位碼和校驗碼填入到數(shù)據(jù)區(qū),形成5 X 5的編 碼矩陣。8. -種基于上述權(quán)利要求1~7中任意一項CRC二維碼的識別方法,其特征在于,步驟 為: Sl:檢測二維碼圖像的邊緣和頂點;即,進行圖像二值化及邊緣檢測,提取可能的CRC二 維碼邊沿和頂點; S2:并對提取的二維碼區(qū)域進行單應(yīng)變換,讀取位碼;即,對圖像中的CRC二維碼區(qū)域進 行單應(yīng)變換,根據(jù)像素值讀取位碼和CRC校驗碼; S3:利用循環(huán)冗余碼校驗技術(shù)對位碼進行錯誤檢測,識別二維碼的ID。9. 根據(jù)權(quán)利要求8所述的CRC二維碼的識別方法,其特征在于,所述步驟SI的具體流程 為:首先將輸入圖像轉(zhuǎn)換為二值圖像,提取黑白區(qū)域的邊緣像素點;然后在提取的圖像邊緣 中,選取滿足具有4個頂點的凸閉合邊緣,得到二維碼區(qū)域的候選集。10. 根據(jù)權(quán)利要求8所述的CRC二維碼的識別方法,其特征在于,所述步驟S2中,對每個 二維碼區(qū)域的候選集,根據(jù)數(shù)據(jù)庫中的二維碼頂點 ?1和場景圖像二維碼頂點?/之間的關(guān) 系,估計單應(yīng)矩陣H;計算公式為: [pi7 X ]Hpi = 0(i = l ,2,3,4) 其中[p/ X ]表示由齊次坐形成的反對稱陣;上式是關(guān)于H的線性方程,將4個頂點 的齊次坐標代人上式,用最小二乘估計算法求出H。
【文檔編號】G06K19/06GK105894069SQ201610186083
【公開日】2016年8月24日
【申請日】2016年3月29日
【發(fā)明人】吳城鳳, 羅兵
【申請人】吳城鳳, 羅兵