发明名称 基于图像处理技术的自动识靶方法
摘要 本发明公开了一种基于图像处理技术的自动识靶方法,该方法按照以下步骤实施:步骤1、对经过预处理的靶面图像取适当的阈值进行二值化处理,处理后的图像只有靶环线和弹孔;依次得到其他各环线的半径;步骤2、利用环线和弹孔的半径大小不同来判别,通过数字形态学图像处理的方法,对图像进行分析后,对上述图像进行反复膨胀腐蚀运算,得到含有弹孔的图像,然后找出各弹孔的重心像素坐标;步骤3、通过计算弹点内各像素坐标的均值来求得各弹点中心坐标,将它代入各个区域表达式中,检测它所满足的区域的表达式,进而判定该弹点的环数,完成识靶。本发明方法运行高效,识靶准确。
申请公布号 CN101937509B 申请公布日期 2012.11.14
申请号 CN201010254637.5 申请日期 2010.08.17
申请人 西安理工大学 发明人 徐宏伟;李霞;王丹;刘勇;鲁锋龙
分类号 G06K9/32(2006.01)I;G06K9/60(2006.01)I 主分类号 G06K9/32(2006.01)I
代理机构 西安弘理专利事务所 61214 代理人 罗笛
主权项 1.一种基于图像处理技术的自动识靶方法,该方法按照以下步骤实施:将靶子前安放的摄像头采集得到的视频信号,送入图像采集卡进行数字化后得到原始的靶面图像,设靶心坐标为(A,B),各圆环半径是r<sub>i</sub>,步骤1、靶面参数的确定:1.1)对采集的靶面图像选取阈值进行二值化处理,得到的二值化处理后图像中只留有靶环线和弹孔;1.2)运用索引突变点的方法,在上步得到的二值化处理后图像中,依次索引找到10环线的左右上下的边缘点,得到其像素坐标,运用最小二乘法拟合出10环线,即得到10环线整个圆的边界,根据索引到的左右上下边界点,再得到10环的半径以及靶心的像素坐标,具体做法是:采用基于最小二乘曲线拟合法,按照以下拟合圆曲线的公式推导,最小二乘法拟合曲线为:R<sup>2</sup>=(x-A)<sup>2</sup>+(y-B)<sup>2</sup>,其中,R是圆的半径,(A,B)是圆心坐标,即R<sup>2</sup>=x<sup>2</sup>-2Ax+A<sup>2</sup>+y<sup>2</sup>-2By+B<sup>2</sup>,令:a=-2A,b=-2B,c=A<sup>2</sup>+B<sup>2</sup>-R<sup>2</sup>,则x<sup>2</sup>+y<sup>2</sup>+ax+by+c=0;求出参数a,b,c的值,即得到圆心坐标及半径,就能够确定圆环,设环线边缘点样本采集为(X<sub>i</sub>,Y<sub>i</sub>),i∈(1,2,3...N),各点到圆环轴心的距离为d<sub>i</sub>,则d<sub>i</sub><sup>2</sup>=(X<sub>i</sub>-A)<sup>2</sup>+(Y<sub>i</sub>-B)<sup>2</sup>,样本点到圆环轴心的距离和圆环半径的平方差为:δ<sub>i</sub>=d<sub>i</sub><sup>2</sup>-R<sup>2</sup>=(X<sub>i</sub>-A)<sup>2</sup>+(Y<sub>i</sub>-B)<sup>2</sup>-R<sup>2</sup>=X<sub>i</sub><sup>2</sup>+Y<sub>i</sub><sup>2</sup>+aX<sub>i</sub>+bY<sub>i</sub>+c,令Q(a,b,c)为δ<sub>i</sub><sup>2</sup>,则:如果有N个测试点,则目标函数误差平方和函数Q(a,b,c)变为:<maths num="0001"><![CDATA[<math><mrow><mi>Q</mi><mrow><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>)</mo></mrow><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><msub><mi>&delta;</mi><mi>i</mi></msub><mn>2</mn></msup><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><mi>a</mi><msub><mi>X</mi><mi>i</mi></msub><mo>+</mo><mi>b</mi><msub><mi>Y</mi><mi>i</mi></msub><mo>+</mo><mi>c</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>,</mo></mrow></math>]]></maths>则求使Q(a,b,c)最小的参数a,b,c,求偏导,得:<maths num="0002"><![CDATA[<math><mrow><mfrac><mrow><mo>&PartialD;</mo><mi>Q</mi><mrow><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>a</mi></mrow></mfrac><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mn>2</mn><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><mi>a</mi><msub><mi>X</mi><mi>i</mi></msub><mo>+</mo><mi>b</mi><msub><mi>Y</mi><mi>i</mi></msub><mo>+</mo><mi>c</mi><mo>)</mo></mrow><msub><mi>X</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mfrac><mrow><mo>&PartialD;</mo><mi>Q</mi><mrow><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>b</mi></mrow></mfrac><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mn>2</mn><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><mi>a</mi><msub><mi>X</mi><mi>i</mi></msub><mo>+</mo><mi>b</mi><msub><mi>Y</mi><mi>i</mi></msub><mo>+</mo><mi>c</mi><mo>)</mo></mrow><msub><mi>Y</mi><mi>i</mi></msub><mo>=</mo><mn>0</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>2</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><mfrac><mrow><mo>&PartialD;</mo><mi>Q</mi><mrow><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>,</mo><mi>c</mi><mo>)</mo></mrow></mrow><mrow><mo>&PartialD;</mo><mi>c</mi></mrow></mfrac><mo>=</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mn>2</mn><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><mi>a</mi><msub><mi>X</mi><mi>i</mi></msub><mo>+</mo><mi>b</mi><msub><mi>Y</mi><mi>i</mi></msub><mo>+</mo><mi>c</mi><mo>)</mo></mrow><mo>=</mo><mn>0</mn><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>3</mn><mo>)</mo></mrow></mrow></math>]]></maths>解以上式(1)、式(2)、式(3)所组成的方程组得:<maths num="0005"><![CDATA[<math><mrow><mi>a</mi><mo>=</mo><mfrac><mrow><mi>HD</mi><mo>-</mo><mi>EG</mi></mrow><mrow><mi>CG</mi><mo>-</mo><msup><mi>D</mi><mn>2</mn></msup></mrow></mfrac><mo>,</mo></mrow></math>]]></maths><maths num="0006"><![CDATA[<math><mrow><mi>b</mi><mo>=</mo><mfrac><mrow><mi>HC</mi><mo>-</mo><mi>ED</mi></mrow><mrow><msup><mi>D</mi><mn>2</mn></msup><mo>-</mo><mi>GC</mi></mrow></mfrac><mo>,</mo></mrow></math>]]></maths><maths num="0007"><![CDATA[<math><mrow><mi>c</mi><mo>=</mo><mfrac><mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>)</mo></mrow><mo>+</mo><mi>a</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>X</mi><mi>i</mi></msub><mo>+</mo><mi>b</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>Y</mi><mi>i</mi></msub></mrow><mi>N</mi></mfrac><mo>,</mo></mrow></math>]]></maths>式中,<maths num="0008"><![CDATA[<math><mrow><mi>C</mi><mo>=</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>X</mi><mi>i</mi></msub><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>X</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths><maths num="0009"><![CDATA[<math><mrow><mi>D</mi><mo>=</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><msub><mrow><msub><mi>X</mi><mi>i</mi></msub><mi>Y</mi></mrow><mi>i</mi></msub><mn>2</mn></msup><mo>-</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>X</mi><mi>i</mi></msub><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>Y</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths><maths num="0010"><![CDATA[<math><mrow><mi>E</mi><mo>=</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><msub><mi>X</mi><mi>i</mi></msub><mn>3</mn></msup><mo>+</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>X</mi><mi>i</mi></msub><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>-</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>)</mo></mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>X</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths><maths num="0011"><![CDATA[<math><mrow><mi>G</mi><mo>=</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>Y</mi><mi>i</mi></msub><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>Y</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths><maths num="0012"><![CDATA[<math><mrow><mi>H</mi><mo>=</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>3</mn></msup><mo>+</mo><mi>N</mi><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>Y</mi><mi>i</mi></msub><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>-</mo><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><mrow><mo>(</mo><msup><msub><mi>X</mi><mi>i</mi></msub><mn>2</mn></msup><mo>+</mo><msup><msub><mi>Y</mi><mi>i</mi></msub><mn>2</mn></msup><mo>)</mo></mrow><munderover><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mi>N</mi></munderover><msub><mi>Y</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths>则A,B,R为:<img file="FSB00000801355900031.GIF" wi="179" he="97" /><img file="FSB00000801355900032.GIF" wi="179" he="109" />R<sup>2</sup>=A<sup>2</sup>+B<sup>2</sup>-c;1.3)利用与步骤1.2同样的方法,依次得到其他各环线的半径r<sub>i</sub>;步骤2、弹孔的确定:利用环线和弹孔的半径大小不同来判别,通过数字形态学图像处理的方法,对上步二值化处理后图像进行分析后,进行反复膨胀腐蚀运算,最后得到只含弹孔图像,通过计算该只含弹孔图像中的弹点内各像素坐标的均值来求得各弹点中心坐标(x<sub>i</sub>,y<sub>i</sub>),具体做法是:2.1)选择半径为2个像素的圆盘结构元素来对二值化处理后图像进行膨胀;2.2)再利用同样的结构元素进行腐蚀操作;2.3)再选择半径为3个像素的圆盘进行腐蚀操作;2.4)利用同样的结构元素再次进行膨胀操作,得到只含弹孔图像;2.5)然后分别找到各弹孔重心坐标,并且分别进行标记;步骤3、弹着点环值判断:将各弹孔的中心坐标(x<sub>i</sub>,y<sub>i</sub>)分别代入各个区域表达式中,检测它所满足的区域的表达式,进而判定该弹点的环数,判靶标准如下:10环区域:10环以内的区域,表达式:d≤r<sub>10</sub>;9环区域:9环线和10环线之间的区域,表达式:r<sub>10</sub><d≤r<sub>9</sub>;8环区域:8环线和9环线之间的区域,表达式为:r<sub>9</sub><d≤d<sub>8</sub>;7环区域:7环线和8环线之间的区域,表达式为:r<sub>8</sub><d≤r<sub>7</sub>;6环区域:6环线和7环线之间的区域,表达式为:r<sub>7</sub><d≤r<sub>6</sub>;5环区域:5环线和6环线之间的区域,表达式为:r<sub>6</sub><d≤r<sub>5</sub>;4环区域:4环线和5环线之间的区域,表达式为:r<sub>5</sub><d≤r<sub>4</sub>;3环区域:3环线和4环线之间的区域,表达式为:r<sub>4</sub><d≤r<sub>3</sub>;2环区域:2环线和3环线之间的区域,表达式为:r<sub>3</sub><d≤r<sub>2</sub>;1环区域:1环线和2环线之间的区域,表达式为:r<sub>2</sub><d≤r<sub>1</sub>,具体判靶步骤是:3.1)计算弹点中心与靶心的距离,<img file="FSB00000801355900041.GIF" wi="527" he="80" />其中(A,B)是靶心坐标,(x<sub>i</sub>,y<sub>i</sub>)是弹点中心坐标;3.2)将该距离d与边界环线半径进行比较,确定弹着点是否在边界环线以内,如果是,进行下一步,否则,说明未击中靶;3.3)再将得到的距离值d与各环线的半径r<sub>i</sub>进行比较,确定在哪两个靶环半径之间,按照设定的判靶标准,判靶得到成绩,完成识靶。
地址 710048 陕西省西安市金花南路5号