发明名称 基于改进的GS算法的矩阵式二维码RS译码纠错方法
摘要 本发明提供了一种基于改进的GS算法的矩阵式二维码RS译码纠错方法,改进的GS算法可以降低插值的复杂度,因此可以提高算法的效率,同时译码纠错方法对RS码的两种编码方式及其转化关系进行了研究,因此可以利用两种编码方式的转化过程对RS码进行纠正,使二维码在出现脱落、污点、穿孔以及局部破损等情况时,也能正确地还原原始信息。
申请公布号 CN104915699A 申请公布日期 2015.09.16
申请号 CN201510263384.0 申请日期 2015.05.21
申请人 中山大学;中山大学花都产业科技研究院 发明人 谭洪舟;陈荣军;刘松劲;杨崇灵;朱雄泳;谢舜道
分类号 G06K19/06(2006.01)I 主分类号 G06K19/06(2006.01)I
代理机构 广州粤高专利商标代理有限公司 44102 代理人 林丽明
主权项 一种基于改进的GS算法的矩阵式二维码RS译码纠错方法,其中改进的GS算法包括改进的Kotter插值算法和Roth‑Ruckenstein因式分解算法,其特征在于:所述纠错方法包括以下步骤:S1.对二维码图像进行去掩膜处理,获得去掩膜后的RS(n,k)码,在RS(n,k)码的末位填充(255‑n)个零,构造RS(255,255+k‑n)码;S2.通过码字RS(255,255+k‑n)结合有限域GF(q<sup>m</sup>)中非零元素(x<sub>0</sub>,x<sub>1</sub>,...,x<sub>255+k‑n‑1</sub>)构成255+k‑n个插值点(x<sub>0</sub>,r<sub>0</sub>),(x<sub>1</sub>,r<sub>1</sub>),...,(x<sub>255+k‑n‑1</sub>,r<sub>255+k‑n‑1</sub>),再基于(1,k‑1)‑加权字典反序表通过在每个插值点至少插值m次来构建一个二元多项式,其中m为内插重度;S3.利用改进的Kotter插值算法求取最小多项式,具体过程如下:S31.首先通过公式<img file="FDA0000721674260000011.GIF" wi="594" he="101" />初始化一组二元多项式,其中<img file="FDA0000721674260000012.GIF" wi="92" he="69" />为初始化的第j条二元多项式,l<sub>m</sub>为该组二元多项式的数目,<img file="FDA00007216742600000112.GIF" wi="69" he="62" />为初始化后的二元多项式组成的集合,i<sub>k</sub>为迭代次数,此时i<sub>k</sub>=0;S32.通过公式<img file="FDA0000721674260000013.GIF" wi="551" he="85" />消去集合<img file="FDA0000721674260000014.GIF" wi="78" he="58" />内首阶大于C的二元多项式,其中<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>C</mi><mo>=</mo><mi>n</mi><mfenced open='(' close=')'><mtable><mtr><mtd><mi>m</mi><mo>+</mo><mn>1</mn></mtd></mtr><mtr><mtd><mn>2</mn></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0000721674260000015.GIF" wi="313" he="138" /></maths>S33.通过公式<img file="FDA0000721674260000016.GIF" wi="306" he="75" />对<img file="FDA0000721674260000017.GIF" wi="72" he="57" />中的各个二元多项式的Hasse混合偏导数进行计算,然后判断集合<img file="FDA0000721674260000018.GIF" wi="60" he="58" />中所有二元多项式的Hasse混合偏导数是否都等于0,若都等于0,则进行步骤S36,若不全等于0,进行步骤S34;S34.求取该组二元多项式中的最小多项式,如下式所示:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>f</mi><mo>=</mo><munder><mi>min</mi><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>J</mi><msub><mi>i</mi><mi>k</mi></msub></msub></mrow></munder><msub><mi>g</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>,</mo><mi>j</mi></mrow></msub></mrow>]]></math><img file="FDA0000721674260000019.GIF" wi="268" he="103" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msup><mi>j</mi><mo>*</mo></msup><mo>=</mo><mi>arg</mi><munder><mi>min</mi><mrow><mi>j</mi><mo>&Element;</mo><msub><mi>J</mi><msub><mi>i</mi><mi>k</mi></msub></msub></mrow></munder><msub><mi>g</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>,</mo><mi>j</mi></mrow></msub></mrow>]]></math><img file="FDA00007216742600000110.GIF" wi="348" he="107" /></maths>其中<img file="FDA00007216742600000111.GIF" wi="357" he="79" />f为该组二元多项式中的最小多项式,j<sup>*</sup>为最小多项式对应的序号;S35.对该组二元多项式中的最小多项式进行变换修改,公式如下:<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>g</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>+</mo><mn>1</mn><mo>,</mo><msup><mi>j</mi><mo>*</mo></msup></mrow></msub><mo>=</mo><msub><mrow><mo>[</mo><mi>xf</mi><mo>,</mo><mi>f</mi><mo>]</mo></mrow><msub><mi>D</mi><msub><mi>i</mi><mi>k</mi></msub></msub></msub><mo>=</mo><msub><mi>&Delta;</mi><msup><mi>j</mi><mo>*</mo></msup></msub><mrow><mo>(</mo><mi>x</mi><mo>-</mo><msub><mi>x</mi><mi>i</mi></msub><mo>)</mo></mrow><mi>fj</mi><mo>=</mo><msup><mi>j</mi><mo>*</mo></msup><mo>,</mo></mrow>]]></math><img file="FDA0000721674260000021.GIF" wi="840" he="100" /></maths>其余的二元多项式也进行变换修改,公式如下:<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>g</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>+</mo><mn>1</mn><mo>,</mo><mi>j</mi></mrow></msub><mo>=</mo><msub><mrow><mo>[</mo><msub><mi>g</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>,</mo><mi>j</mi></mrow></msub><mo>,</mo><mi>f</mi><mo>]</mo></mrow><msub><mi>D</mi><msub><mi>i</mi><mi>k</mi></msub></msub></msub><mo>=</mo><msub><mi>&Delta;</mi><msup><mi>j</mi><mo>*</mo></msup></msub><msub><mi>g</mi><mrow><msub><mi>i</mi><mi>k</mi></msub><mo>,</mo><mi>j</mi></mrow></msub><mo>-</mo><msub><mi>&Delta;</mi><mi>j</mi></msub><mi>fj</mi><mo>&NotEqual;</mo><msup><mi>j</mi><mo>*</mo></msup><mo>;</mo></mrow>]]></math><img file="FDA0000721674260000022.GIF" wi="887" he="95" /></maths>S36.选取另一组二元多项式重复步骤S31~S35的过程进行该组最小多项式的求取,并令i<sub>k</sub>=i<sub>k</sub>+1;S37.若i<sub>k</sub>=C则停止迭代,此时各组二元多项式的最小多项式g<sub>C,j</sub>组成集合G<sub>C</sub>,通过公式Q(x,y)=min{g<sub>C,j</sub>|g<sub>C,j</sub>∈G<sub>C</sub>}对C组二元多项式中的最小多项式Q(x,y)进行求解;S4.在求得Q(x,y)之后,利用Roth‑Ruckenstein因式分解算法对Q(x,y)进行分解获得RS码频域编码对应的信息多项式m'(x);S5.对信息多项式m'(x)采用频域编码方式进行n位编码,获得编码码字之后取编码码字第n‑k+1到n位码字生成时域编码对应的信息多项式m(x),对m(x)采用时域编码方式进行编码,即可获得纠正的RS(n,k)码。
地址 510275 广东省广州市海珠区新港西路135号