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