发明名称 基于改进的KV算法的矩阵式二维码RS译码纠错方法
摘要 本发明提出一种基于改进的KV算法的矩阵式二维码RS译码纠错方法,改进的KV算法可以降低插值的复杂度,因此可以提高算法的效率,同时纠错方法对二维码新的生成方案进行了研究,因此可以利用新的生成方案生成二维码,用KV算法对二维码各个版本的纠错等级所对应的RS码字进行纠错译码,使二维码在出现脱落、污点、穿孔以及局部破损等情况时,能更正好地还原原始信息。
申请公布号 CN105811999A 申请公布日期 2016.07.27
申请号 CN201610112681.X 申请日期 2016.02.29
申请人 广东顺德中山大学卡内基梅隆大学国际联合研究院;中山大学 发明人 谭洪舟;杨崇灵;陈荣军;刘颜;李展强;嵇志辉;谢舜道;朱雄泳
分类号 H03M13/15(2006.01)I 主分类号 H03M13/15(2006.01)I
代理机构 广州粤高专利商标代理有限公司 44102 代理人 林丽明
主权项 一种基于改进的KV算法的矩阵式二维码RS译码纠错方法,其特征在于,其中改进的KV算法包括重度指配算法,Kotter插值算法和Roth‑Ruckenstein因式分解算法三部分,所述纠错方法包括以下步骤:S1.对二维码图像进行去掩膜处理,获得去掩膜后的RS(n,k)码;S2.对去掩膜后的RS(n,k)码利用重度指配算法求取重度矩阵M,矩阵M中元素m<sub>i,j</sub>表示插值点(x<sub>j</sub>,ρ<sub>i</sub>)的插值重度值;S3.根据S2步骤计算得到的重度矩阵M,对于每个插值点(x<sub>j</sub>,ρ<sub>i</sub>),基于(1,k‑1)‑加权字典反序表在每个插值点至少插值m<sub>i,j</sub>次来构建一个二元多项式,i=0,1,...,q‑1;j=0,1,...,n‑1,n是RS(n,k)中的n,表示RS码码字个数,q是有限域元素个数;S4.利用改进的Kotter插值算法求取最小多项式,具体过程如下:S41.首先通过公式<img file="FDA0000931690720000011.GIF" wi="595" he="86" />初始化一组二元多项式,其中<img file="FDA0000931690720000012.GIF" wi="86" he="54" />为第i<sub>k</sub>次迭代初始化的第j个二元多项式,l<sub>m</sub>为该组二元多项式的个数,<img file="FDA0000931690720000013.GIF" wi="55" he="63" />为初始化后的二元多项式组成的集合,y表示二元多项式的自变量;i<sub>k</sub>=0、1、…、C;S42.通过公式<img file="FDA0000931690720000014.GIF" wi="534" he="95" />消去集合<img file="FDA0000931690720000015.GIF" wi="59" he="69" />内首阶大于C的二元多项式,其中<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>C</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><munderover><mo>&Sigma;</mo><mrow><mi>i</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>q</mi><mo>-</mo><mn>1</mn></mrow></munderover><munderover><mo>&Sigma;</mo><mrow><mi>j</mi><mo>=</mo><mn>0</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></munderover><msub><mi>m</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mrow><mo>(</mo><msub><mi>m</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>;</mo></mrow>]]></math><img file="FDA0000931690720000016.GIF" wi="517" he="142" /></maths>S43.通过公式<img file="FDA0000931690720000017.GIF" wi="299" he="87" />对集合<img file="FDA0000931690720000018.GIF" wi="59" he="63" />中的各个二元多项式的Hasse混合偏导数进行计算,然后判断集合<img file="FDA0000931690720000019.GIF" wi="59" he="63" />中所有二元多项式的Hasse混合偏导数是否都等于0,若都等于0,则进行步骤S46,若不全等于0,则进行步骤S44;S44.求取该组集合<img file="FDA00009316907200000110.GIF" wi="58" he="71" />各二元多项式中的最小多项式,如下式所示:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>f</mi><mo>=</mo><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><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="FDA00009316907200000111.GIF" wi="254" he="95" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><msup><mi>j</mi><mo>*</mo></msup><mo>=</mo><mi>arg</mi><munder><mrow><mi>m</mi><mi>i</mi><mi>n</mi></mrow><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="FDA0000931690720000021.GIF" wi="334" he="95" /></maths>其中<img file="FDA0000931690720000022.GIF" wi="350" he="71" />f为该组二元多项式中的最小多项式,j<sup>*</sup>为最小多项式对应的序号;S45.对该组集合<img file="FDA0000931690720000023.GIF" wi="59" he="61" />各二元多项式中的最小多项式进行变换修改,公式如下:<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>&lsqb;</mo><mi>x</mi><mi>f</mi><mo>,</mo><mi>f</mi><mo>&rsqb;</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>f</mi><mi> </mi><mi>j</mi><mo>=</mo><msup><mi>j</mi><mo>*</mo></msup><mo>,</mo></mrow>]]></math><img file="FDA0000931690720000024.GIF" wi="829" he="93" /></maths>x表示二元多项式的自变量,x<sub>i</sub>表示第i个插值点的第一个坐标值;其余的二元多项式也进行变换修改,公式如下:<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>&lsqb;</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>&rsqb;</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>f</mi><mi> </mi><mi>j</mi><mo>&NotEqual;</mo><msup><mi>j</mi><mo>*</mo></msup><mo>;</mo></mrow>]]></math><img file="FDA0000931690720000025.GIF" wi="870" he="109" /></maths>S46.令i<sub>k</sub>=i<sub>k</sub>+1,选取另一组二元多项式重复步骤S41~S45的过程进行该组最小多项式的求取;S47.若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)进行求解;S5.在求得Q(x,y)之后,利用Roth‑Ruckenstein因式分解算法对Q(x,y)进行分解获得RS码频域编码对应的信息多项式m'(x);S6.对信息多项式m'(x)采用频域编码方式进行n位编码,即可获得纠正的RS(n,k)码。
地址 528300 广东省佛山市顺德区大良南国东路9号研究院