本發明涉及rs糾錯碼,主要涉及一種兼容多種二維碼的rs糾錯解碼方法和系統。
背景技術:
1、rs碼作為一種經典的糾錯編碼技術,已被廣泛應用于二維碼系統中。rs碼通過在數據中插入冗余信息,能夠在數據傳輸或存儲過程中檢測并糾正一定數量的錯誤。然而,傳統的rs碼編譯碼方法在實現過程中存在一定的復雜性,尤其是在有限域上的乘法和加法運算,這些運算需要大量的計算資源,限制了編譯碼的速度和效率。
2、在此背景下,例如公開號為cn1303763c的中國發明專利公開了一種用于降低rs碼編譯碼復雜度的方法,該方法屬于rs碼技術領域。其主要特征在于:在發送端進行編碼時,利用本原域元素a的冪次來表示rs碼的碼元,所有碼字均在有限域gf(2^m)上。該方法通過將有限域gf(2^m)上的非零元素表示為本原域元素a的整數次冪,并通過符號表示法簡化乘法和除法運算,避免了復雜的有限域運算。例如,對于任意兩個元素x和y,x與y的相乘可以通過指數相加實現,x與y的相除則通過指數相減實現。此外,加法和減法運算通過查表法實現。該發明所述方法顯著降低了rs碼編譯碼的復雜度,提升了編譯碼效率,同時保持了與現有方法相同的糾錯性能。但該發明主要針對傳統的rs碼編譯碼過程進行優化,并未考慮二維碼的多樣性。實際應用中,二維碼的標準和格式多種多樣,不同標準對rs碼的實現方式和參數要求各不相同,且由于不同二維碼標準可能采用不同的有限域或模值,該發明所述方法在處理這些差異時顯得不夠靈活,因此,亟需一種提高二維碼的解碼效率和容錯能力的兼容多種二維碼的rs糾錯解碼方法。
技術實現思路
1、為了解決現有技術所存在的上述問題,本技術提供了一種兼容多種二維碼的rs糾錯解碼方法和系統。
2、本技術的技術方案如下:
3、一種兼容多種二維碼的rs糾錯解碼方法,所述方法包括:
4、基于用戶需求的二維碼類型定義有限域和模值對應表,根據有限域的模值生成有限域元素的冪次表,以所述冪次表為基礎構建冪次和數據之間的對應關系表,將冪次數據對應表存儲于配置管理模塊;
5、利用圖像傳感器獲取圖像數據,從所述圖像數據提取二維碼數據;
6、基于冪次數據對應表對所述二維碼數據進行錯誤檢測和糾正,獲得原始編碼信息。
7、作為本發明一種優選的實施方式,從所述圖像數據提取二維碼數據具體為:
8、通過全圖掃掃描所述圖像數據獲得對應二維碼標識符,基于所述二維碼標識符確定二維碼的類型和位置;
9、將所述圖像數據轉換為灰度圖像,并使用閾值算法將所述灰度圖像轉換為二值圖像,獲得對應的黑白陣列圖;
10、基于二維碼的類型和位置,確定對應的編碼標準的位流排列順序,從黑白陣列圖中逐行或逐列提取數據位流,將所述數據位流轉換為有限域碼字,獲得二維碼數據,即數據碼字流。
11、作為本發明一種優選的實施方式,基于冪次數據對應表對所述二維碼數據進行錯誤檢測和糾正,具體為:
12、根據數據碼字流計算對應伴隨式,基于伴隨式系數判斷是否存在錯誤,若存在錯誤,通過berlekamp-massey算法計算錯誤位置多項式;
13、利用chien搜索算法找到錯誤位置,并通過forney算法計算錯誤值,根據錯誤位置和錯誤值糾正數據塊中的錯誤。
14、作為本發明一種優選的實施方式,根據數據碼字流計算對應伴隨式,基于伴隨式系數判斷是否存在錯誤具體為:
15、將接收到的數據碼字流視為多項式r(x),以公式表達為:
16、r(x)=r0+r1x+r2x2+r3x3+......+r(n-1)x(n-1);
17、式中,r0,r1,r2,r3,......,r(n-1)為數據碼字流的值;n為碼字的長度;
18、將所述多項式r(x)除以生成多項式的余式計算獲得伴隨多項式,所述伴隨多項式s(x)以公式表達為:
19、
20、其中:
21、
22、s1=r0+r12+r222+r323+......+r(n-1)2(n-1);
23、s2=r0+r1(22)+r2(22)2+r3(22)3+......+r(n-1)(22)(n-1);
24、s3=r0+r1(23)+r2(23)2+r3(23)3+......+r(n-1)(23)(n-1);
25、……;
26、s2t=r0+r1(22t)+r2(22t)2+r3(22t)3+......+r(n-1)(22t)(n-1);
27、式中,x為變量,t為糾錯能力,si為伴隨式的第i個系數;
28、若伴隨式系數si全為0,則表示接收到的數據碼字流沒有錯誤,解碼過程結束,輸出數據塊;若伴隨式系數不全為0,則表示接收到的碼字數據碼字流存在錯誤,進行糾正;
29、其中,根據二維碼類型確定伴隨式系數的存儲起始地址,基于伴隨式系數判斷是否存在錯誤時,從所述存儲起始地址讀取伴隨式系數。
30、作為本發明一種優選的實施方式,在計算伴隨式多項式時,通過查找存儲于配置管理模塊的冪次數據對應表實現將數據碼字流中的每個元素映射到其對應的冪次,即伴隨式系數si的下標i直接對應于有限域的本原元素的i次冪。
31、作為本發明一種優選的實施方式,通過berlekamp-massey算法計算錯誤位置多項式具體為:
32、設定初始參數,包括初始錯誤位置多項式為l(x)=1;初始差分多項式為△(x)=0;初始迭代次數為j=0;初始記錄多項式為∧(x)=1;
33、對于每一輪迭代j,更新差分多項式,以公式表達為:
34、
35、式中,rk為接收到的數據碼字流的系數;k為當前處理的數據碼字流中的位置;為上一輪迭代得到的記錄多項式的系數;
36、判斷差分多項式為△(x)是否為0,若△(x)=0,則保持當前的記錄多項式∧(x)不變,更新迭代次數j=j+1,繼續下一輪迭代;若△(x)≠0,則更新記錄多項式∧(x),以公式表達為:
37、
38、式中,l(j-1)為上一輪迭代得到的錯誤位置多項式的階數;
39、更新錯誤位置多項式l(x)的階數,以公式表達為:
40、l(j)=max(l(j-1),j-l(j-1));
41、當迭代次數j達到糾錯能力t時,停止迭代,最終得到的記錄多項式∧(x)即為錯誤位置多項式。
42、作為本發明一種優選的實施方式,利用chien搜索算法找到錯誤位置具體為:
43、設定錯誤位置多項式即最終得到的記錄多項式∧(x)的搜索變量x=1;
44、基于存儲于配置管理模塊的冪次數據對應表,在有限域中遍歷所有值,將每個值代入錯誤位置多項式,檢查錯誤位置多項式是否為零,若錯誤位置多項式為零,則對應的變量則為錯誤位置,其中,將每個值代入錯誤位置多項式以公式表達為:
45、
46、式中,αi為有限域的本原元素α的i次冪,∧j'為錯誤位置多項式的系數,l為錯誤位置多項式的階數。
47、作為本發明一種優選的實施方式,通過forney算法計算錯誤值,根據錯誤位置和錯誤值糾正數據塊中的錯誤具體為:
48、通過伴隨多項式s(x)和和錯誤位置多項式∧(x)計算錯誤值多項式ω(x),以公式表達為:
49、ω(x)=s(x)·∧(x)mod?x2t;
50、計算錯誤位置多項式∧(x)的導數,以公式表達為:
51、
52、對于每一個錯誤位置αi計算錯誤值ei,以公式表達為:
53、
54、根據每一個錯誤位置和對應的錯誤值,通過從原始數據碼字流中將錯誤值減去進行錯誤糾正,恢復原始的編碼信息。
55、本發明還提供了一種兼容多種二維碼的rs糾錯解碼系統,所述系統包括配置管理模塊、圖像采集模塊、二維碼提取模塊和糾錯解碼模塊,其中:
56、所述配置管理模塊存儲有冪次數據對應表,所述冪次數據對應表的構建具體為:基于用戶需求的二維碼類型定義有限域和模值對應表,根據有限域的模值生成有限域元素的冪次表,以所述冪次表為基礎構建冪次和數據之間的對應關系表;
57、所述圖像采集模塊利用圖像傳感器獲取圖像數據;
58、所述二維碼提取模塊從所述圖像數據提取二維碼數據;
59、所述糾錯解碼模塊基于冪次數據對應表對所述二維碼數據進行錯誤檢測和糾正,獲得原始編碼信息,其中,所述基于冪次數據對應表對所述二維碼數據進行錯誤檢測和糾正,具體為:
60、根據數據碼字流計算對應伴隨式,基于伴隨式系數判斷是否存在錯誤,若存在錯誤,通過berlekamp-massey算法計算錯誤位置多項式;
61、利用chien搜索算法找到錯誤位置,并通過forney算法計算錯誤值,根據錯誤位置和錯誤值糾正數據塊中的錯誤。
62、本發明還提供了一種電子設備,包括存儲器、處理器及存儲在存儲器上并可在處理器上運行的計算機程序,所述處理器執行所述程序時實現如本發明任一實施例所述的一種兼容多種二維碼的rs糾錯解碼方法。
63、與現有技術相比,本發明的有益效果是:
64、1)本發明提供了一種兼容多種二維碼的rs糾錯解碼方法和系統,通過定義不同的有限域和模值,適應不同的二維碼類型和標準,具有廣泛的適用性;
65、2)本發明提供了一種兼容多種二維碼的rs糾錯解碼方法和系統,通過預構建的冪次數據對應表,加速了糾錯解碼過程中的計算,提高了解碼速度和效率;
66、3)本發明提供了一種兼容多種二維碼的rs糾錯解碼方法和系統,通過rs糾錯碼,二維碼可以容忍一定比例的錯誤或損壞,從而在不丟失信息的情況下被正確解碼。