发明名称 基于定位图形顶点的快速响应矩阵码第四顶点的定位方法
摘要 一种基于定位图形顶点的快速响应矩阵码第四顶点的定位方法,按照以下步骤进行:步骤1:在获得快速响应矩阵区域中包含定位图形的三个顶点A、B、D的基础上,预估快速响应矩阵码第四顶点的位置为C<sub>0</sub>,步骤2:计算线段BC<sub>0</sub>和DC<sub>0</sub>的表达式,统计二值化后的图像中线段BC<sub>0</sub>和DC<sub>0</sub>的部分区域上黑色像素点个数,以此判断线段BC<sub>0</sub>、DC<sub>0</sub>是否穿过快速响应矩阵码,步骤3:在直线BC<sub>0</sub>和DC<sub>0</sub>上分别找出点P<sub>2</sub>和P<sub>1</sub>,计算线段BP<sub>1</sub>和DP<sub>2</sub>与快速响应矩阵码的边界的偏差,根据偏差自适应调整直至偏差消失,步骤4:计算出两条边界BP<sub>1</sub>和DP<sub>2</sub>所在直线的交点,即快速响应矩阵码第四顶点C(x<sub>C</sub>,y<sub>C</sub>),这种方法实现了快速响应矩阵码第四顶点快速、精确的定位,实验表明这种方法可在全方位旋转的快速响应矩阵码中应用,对有一定的畸变的快速响应矩阵码也有很好的适用性。
申请公布号 CN103198452B 申请公布日期 2016.01.06
申请号 CN201310069793.8 申请日期 2013.03.06
申请人 东南大学 发明人 路小波;祁慧;沈赛峰;陈伍军;曾维理
分类号 G06T3/60(2006.01)I 主分类号 G06T3/60(2006.01)I
代理机构 南京苏高专利商标事务所(普通合伙) 32204 代理人 柏尚春
主权项 一种基于定位图形顶点的快速响应矩阵码第四顶点的定位方法,按照以下步骤进行:步骤1:设快速响应矩阵码包含定位图形的三个顶点的中间顶点为A,从A点开始,按照顺时针方向,快速响应矩阵码的其他顶点依次被设为B、C、D,三个定位图形顶点分别为A(x<sub>A</sub>,y<sub>A</sub>)、B(x<sub>B</sub>,y<sub>B</sub>)和D(x<sub>D</sub>,y<sub>D</sub>),其中x<sub>A</sub>,y<sub>A</sub>为像素点A在图像中的水平和竖直方向的位置,x<sub>B</sub>,y<sub>B</sub>为像素点B在图像中的水平和竖直方向的位置,x<sub>D</sub>,y<sub>D</sub>为像素点D在图像中的水平和竖直方向的位置,快速响应矩阵码第四顶点为C(x<sub>C</sub>,y<sub>C</sub>),其中x<sub>C</sub>,y<sub>C</sub>为像素点C在图像中的水平和竖直方向的位置,设图像中需要处理的快速响应矩阵码是平行且没有扭曲,则快速响应矩阵码第四顶点C(x<sub>C</sub>,y<sub>C</sub>)的预估位置为C<sub>0</sub>(x<sub>C0</sub>,y<sub>C0</sub>),<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><msub><mi>C</mi><mn>0</mn></msub><mrow><mo>(</mo><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>,</mo><msub><mi>y</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>)</mo></mrow><mo>=</mo><mi>B</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>B</mi></msub><mo>,</mo><msub><mi>y</mi><mi>B</mi></msub><mo>)</mo></mrow><mo>+</mo><mi>D</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>D</mi></msub><mo>,</mo><msub><mi>y</mi><mi>D</mi></msub><mo>)</mo></mrow><mo>-</mo><mi>A</mi><mrow><mo>(</mo><msub><mi>x</mi><mi>A</mi></msub><mo>,</mo><msub><mi>y</mi><mi>A</mi></msub><mo>)</mo></mrow></mrow>]]></math><img file="FDA0000791955670000011.GIF" wi="931" he="86" /></maths>步骤2:步骤2.1根据点B、C<sub>0</sub>、D的位置,计算出线段BC<sub>0</sub>和DC<sub>0</sub>的表达式,具体表达式如下:<maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>y</mi><mo>=</mo><msub><mi>k</mi><mrow><msub><mi>BC</mi><mn>0</mn></msub></mrow></msub><mi>x</mi><mo>+</mo><msub><mi>p</mi><mrow><msub><mi>BC</mi><mn>0</mn></msub></mrow></msub></mrow>]]></math><img file="FDA0000791955670000012.GIF" wi="330" he="84" /></maths><maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>y</mi><mo>=</mo><msub><mi>k</mi><mrow><msub><mi>DC</mi><mn>0</mn></msub></mrow></msub><mi>x</mi><mo>+</mo><msub><mi>p</mi><mrow><msub><mi>DC</mi><mn>0</mn></msub></mrow></msub></mrow>]]></math><img file="FDA0000791955670000013.GIF" wi="339" he="81" /></maths>其中,<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><msub><mi>k</mi><mrow><msub><mi>BC</mi><mn>0</mn></msub></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mi>B</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>C</mi><mn>0</mn></msub></msub></mrow><mrow><msub><mi>x</mi><mi>B</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000791955670000014.GIF" wi="325" he="147" /></maths><maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><msub><mi>p</mi><mrow><msub><mi>BC</mi><mn>0</mn></msub></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mi>B</mi></msub><mo>&times;</mo><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>-</mo><msub><mi>y</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>&times;</mo><msub><mi>x</mi><mi>B</mi></msub></mrow><mrow><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>-</mo><msub><mi>x</mi><mi>B</mi></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000791955670000015.GIF" wi="526" he="149" /></maths><maths num="0006" id="cmaths0006"><math><![CDATA[<mrow><msub><mi>k</mi><mrow><msub><mi>DC</mi><mn>0</mn></msub></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mi>D</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>C</mi><mn>0</mn></msub></msub></mrow><mrow><msub><mi>x</mi><mi>D</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000791955670000016.GIF" wi="336" he="146" /></maths><maths num="0007" id="cmaths0007"><math><![CDATA[<mrow><msub><mi>p</mi><mrow><msub><mi>DC</mi><mn>0</mn></msub></mrow></msub><mo>=</mo><mfrac><mrow><msub><mi>y</mi><mi>D</mi></msub><mo>&times;</mo><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>-</mo><msub><mi>y</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>&times;</mo><msub><mi>x</mi><mi>D</mi></msub></mrow><mrow><msub><mi>x</mi><msub><mi>C</mi><mn>0</mn></msub></msub><mo>-</mo><msub><mi>x</mi><mi>D</mi></msub></mrow></mfrac></mrow>]]></math><img file="FDA0000791955670000017.GIF" wi="541" he="147" /></maths>步骤2.2在线段BC<sub>0</sub>和线段DC<sub>0</sub>上分别选取一个像素点K<sub>1</sub>和K<sub>2</sub>,使<img file="FDA0000791955670000018.GIF" wi="286" he="117" /><img file="FDA0000791955670000019.GIF" wi="293" he="115" />统计二值化后的图像中线段K<sub>1</sub>C<sub>0</sub>和线段K<sub>2</sub>C<sub>0</sub>上黑色像素点的个数,分别记为N<sub>1</sub>和N<sub>2</sub>,步骤2.3以flag1和flag2分别作为线段BC<sub>0</sub>和线段DC<sub>0</sub>是否穿过快速响应矩阵码的标记,如果N<sub>1</sub>>3,则flag1为1,否则flag1为0,如果N<sub>2</sub>>3,则flag2为1,否则flag2为0,步骤3根据flag1和flag2的值,在直线BC<sub>0</sub>和DC<sub>0</sub>上分别找出点P<sub>2</sub>和P<sub>1</sub>,从而确定快速响应矩阵码的边界线段BP<sub>1</sub>和DP<sub>2</sub>,其具体方法如下:步骤3.1当flag1=0时,将P<sub>1</sub>初始化,其值为C<sub>0</sub>,3.1.1.a、从直线DC<sub>0</sub>上,朝靠近D点的方向,取P<sub>1</sub>的下一个像素点,令P<sub>1</sub>的下一个像素点为P<sub>1</sub>,3.1.1.b、在线段BP<sub>1</sub>上选取一个像素点,使得所选取的像素点至P<sub>1</sub>的距离为BP<sub>1</sub>的四分之一,并令所选取的像素点为K<sub>3</sub>,从P<sub>1</sub>点开始,逐个取线段K<sub>3</sub>P<sub>1</sub>上的像素点,判断该点在二值化后的图像中是否为黑色像素点,N<sub>3</sub>为统计线段K<sub>3</sub>P<sub>1</sub>上黑色像素点个数的变量,3.1.1.c、以flag3为线段BP<sub>1</sub>是否穿过快速响应矩阵码的标记,如果N<sub>3</sub>>3,则flag3为1,并将当前的BP<sub>1</sub>作为快速响应矩阵码的一条边界,进入步骤3.2,否则,flag3为0,BP<sub>1</sub>没有穿过快速响应矩阵码,返回步骤3.1.1.a;当flag1=1时,将P<sub>1</sub>初始化,其值为C<sub>0</sub>,3.1.2.a、从直线DC<sub>0</sub>上,朝远离D点的方向,取P<sub>1</sub>的下一个像素点,令P<sub>1</sub>的下一个像素点为P<sub>1</sub>,3.1.2.b、在线段BP<sub>1</sub>上选取一个像素点,使得所选取的像素点至P<sub>1</sub>的距离为BP<sub>1</sub>的四分之一,并令所选取的像素点为K<sub>3</sub>,从P<sub>1</sub>点开始,逐个取线段K<sub>3</sub>P<sub>1</sub>上的像素点,判断该点在二值化后的图像中是否为黑色像素点,N<sub>3</sub>为统计线段K<sub>3</sub>P<sub>1</sub>上黑色像素点个数的变量,3.1.2.c、以flag3为线段BP<sub>1</sub>是否穿过快速响应矩阵码的标记,如果N<sub>3</sub>≤3,则flag3为0,并将当前的BP<sub>1</sub>作为快速响应矩阵码的一条边界,进入步骤3.2,否则,flag3为1,BP<sub>1</sub>穿过快速响应矩阵码,返回步骤3.1.2.a;步骤3.2当flag2=0时,将P<sub>2</sub>初始化,其值为C<sub>0</sub>,3.2.1.a、从直线BC<sub>0</sub>上,朝靠近B点的方向,取P<sub>2</sub>的下一个像素点,令P<sub>2</sub>的下一个像素点为P<sub>2</sub>,3.2.1.b、在线段DP<sub>2</sub>上选取一个像素点,使得所选取的像素点至P<sub>2</sub>的距离为DP<sub>2</sub>的四分之一,并令所选取的像素点为K<sub>4</sub>,从P<sub>2</sub>点开始,逐个取线段K<sub>4</sub>P<sub>2</sub>上的像素点,判断该点在二值化后的图像中是否为黑色像素点,N<sub>4</sub>为统计线段K<sub>4</sub>P<sub>2</sub>上黑色像素点个数的变量,3.2.1.c、以flag4为线段DP<sub>2</sub>是否穿过快速响应矩阵码的标记,如果N<sub>4</sub>>3,则flag4为1,并将当前的DP<sub>2</sub>作为快速响应矩阵码的一条边界,进入步骤4,否则,flag4为0,DP<sub>2</sub>没有穿过快速响应矩阵码,返回步骤3.2.1.a;当flag2=1时,将P<sub>2</sub>初始化,其值为C<sub>0</sub>,3.2.2.a、从直线BC<sub>0</sub>上,朝远离B点的方向,取P<sub>2</sub>的下一个像素点,令P<sub>2</sub>的下一个像素点为P<sub>2</sub>,3.2.2.b、在线段DP<sub>2</sub>上取一个像素点,使得所选取的像素点至P<sub>2</sub>的距离为DP<sub>2</sub>的四分之一,并令所选取的像素点为K<sub>4</sub>,从P<sub>2</sub>点开始,逐个取线段K<sub>4</sub>P<sub>2</sub>上的像素点,判断该点在二值化后的图像中是否为黑色像素点,N<sub>4</sub>为统计线段K<sub>4</sub>P<sub>2</sub>上黑色像素点个数的变量,3.2.2.c、以flag4为线段DP<sub>2</sub>是否穿过快速响应矩阵码的标记,如果N<sub>4</sub>≤3,则flag4为0,并将当前的DP<sub>2</sub>作为快速响应矩阵码的一条边界,进入步骤4,否则,flag4为1,返回步骤3.2.2.a,步骤4利用获得的快速响应矩阵码的两条边界BP<sub>1</sub>和DP<sub>2</sub>,计算出这两条边界BP<sub>1</sub>和DP<sub>2</sub>所在直线的交点即快速响应矩阵码第四顶点C(x<sub>C</sub>,y<sub>C</sub>),其具体方法如下:<maths num="0008" id="cmaths0008"><math><![CDATA[<mrow><msub><mi>x</mi><mi>C</mi></msub><mo>=</mo><mfrac><mrow><mo>(</mo><msub><mi>y</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>&times;</mo><msub><mi>x</mi><mi>D</mi></msub><mo>-</mo><msub><mi>y</mi><mi>D</mi></msub><mo>&times;</mo><msub><mi>x</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>x</mi><mi>B</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo><mo>-</mo><mo>(</mo><msub><mi>y</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>&times;</mo><msub><mi>x</mi><mi>B</mi></msub><mo>-</mo><msub><mi>y</mi><mi>B</mi></msub><mo>&times;</mo><msub><mi>x</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>x</mi><mi>D</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>y</mi><mi>B</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>x</mi><mi>D</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo><mo>-</mo><mo>(</mo><msub><mi>y</mi><mi>D</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>x</mi><mi>B</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo></mrow></mfrac></mrow>]]></math><img file="FDA0000791955670000031.GIF" wi="1394" he="166" /></maths><maths num="0009" id="cmaths0009"><math><![CDATA[<mrow><msub><mi>y</mi><mi>C</mi></msub><mo>=</mo><mfrac><mrow><mo>(</mo><msub><mi>y</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>&times;</mo><msub><mi>x</mi><mi>D</mi></msub><mo>-</mo><msub><mi>y</mi><mi>D</mi></msub><mo>&times;</mo><msub><mi>x</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>y</mi><mi>B</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo><mo>-</mo><mo>(</mo><msub><mi>y</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>&times;</mo><msub><mi>x</mi><mi>B</mi></msub><mo>-</mo><msub><mi>y</mi><mi>B</mi></msub><mo>&times;</mo><msub><mi>x</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>y</mi><mi>D</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo></mrow><mrow><mo>(</mo><msub><mi>y</mi><mi>B</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>x</mi><mi>D</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo><mo>-</mo><mo>(</mo><msub><mi>y</mi><mi>D</mi></msub><mo>-</mo><msub><mi>y</mi><msub><mi>P</mi><mn>2</mn></msub></msub><mo>)</mo><mo>&times;</mo><mo>(</mo><msub><mi>x</mi><mi>B</mi></msub><mo>-</mo><msub><mi>x</mi><msub><mi>P</mi><mn>1</mn></msub></msub><mo>)</mo></mrow></mfrac><mo>.</mo></mrow>]]></math><img file="FDA0000791955670000032.GIF" wi="1431" he="166" /></maths>
地址 210096 江苏省南京市四牌楼2号