发明名称 基于单摄像头的任意颜色球形物体识别方法
摘要 本发明涉及一种基于单摄像头的任意颜色球形物体识别方法。本方法为首先摄取带检测图像的边缘,针对边缘上的每一点,计算可能的球心轨迹,再通过计算这些轨迹的交点,得到球心的位置。本发明能快速有效地识别任意颜色球形物体是否在图像中,并能计算出球相对摄像头的位置,而且识别成功率很高。
申请公布号 CN101504720B 申请公布日期 2011.05.04
申请号 CN200910048180.X 申请日期 2009.03.25
申请人 上海大学 发明人 陈万米;项宗杰;孙佳;项肇宏;程硕远;范海艇;林骁元
分类号 G06K9/00(2006.01)I 主分类号 G06K9/00(2006.01)I
代理机构 上海上大专利事务所(普通合伙) 31205 代理人 何文欣
主权项 一种基于单摄像头的任意颜色球形物体识别方法,其特征在于首先摄取待检测图像的边缘,针对其边缘上的每一个点,计算可能的球心轨迹,再通过计算这些轨迹的交点,得到球心的位置;具体步骤如下:(1)边缘提取:提取出图像边缘的所有的点,这些点所包含的信息是它们图像上的坐标;(2)利用距离函数,计算图像上每一个点在地面上的投影,即这些点映射到地面上的相对摄像头的空间坐标位置;(3)计算所有投影点对应的球心轨迹的交点:将投影区域划分为长宽为step的小方格用来记录被曲线通过的次数,每一个方格包含的信息为此方格对应投影的平面坐标(x,y)和一个计数器counter(x,y);根据椭圆方程 <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msup> <mi>ax</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>bx</mi> <mo>+</mo> <mi>cxy</mi> <mo>+</mo> <mi>dy</mi> <mo>+</mo> <msup> <mi>ey</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>f</mi> <mo>=</mo> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mi>z</mi> <mo>=</mo> <mi>r</mi> </mtd> </mtr> </mtable> </mfenced>式中a,b,c,d,e,f是6个参数; <mrow> <mi>a</mi> <mo>=</mo> <mo>-</mo> <msup> <mi>h</mi> <mn>2</mn> </msup> <mo>-</mo> <msubsup> <mi>y</mi> <mn>0</mn> <mn>2</mn> </msubsup> </mrow>b=2·(h‑r)·h·x0c=2·x0·y0d=2·(h‑r)·h·y0 <mrow> <mi>e</mi> <mo>=</mo> <mo>-</mo> <msup> <mi>h</mi> <mn>2</mn> </msup> <mo>-</mo> <msubsup> <mi>x</mi> <mn>0</mn> <mn>2</mn> </msubsup> </mrow> <mrow> <mi>f</mi> <mo>=</mo> <msup> <mi>r</mi> <mn>2</mn> </msup> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <msubsup> <mi>x</mi> <mn>0</mn> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>y</mi> <mn>0</mn> <mn>2</mn> </msubsup> <mo>+</mo> <msup> <mi>h</mi> <mn>2</mn> </msup> <mo>)</mo> </mrow> <mo>-</mo> <mrow> <mo>(</mo> <msubsup> <mi>x</mi> <mn>0</mn> <mn>2</mn> </msubsup> <mo>+</mo> <msubsup> <mi>y</mi> <mn>0</mn> <mn>2</mn> </msubsup> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mi>r</mi> <mo>-</mo> <mi>h</mi> <mo>)</mo> </mrow> <mo>&CenterDot;</mo> <mrow> <mo>(</mo> <mi>r</mi> <mo>-</mo> <mi>h</mi> <mo>)</mo> </mrow> </mrow>r为球的半径;h为全景镜的光学中心或摄像头的高度h;(xo,yo.)为球边缘上某一点沿摄像头光路在地面上投影的坐标;计算出y的取值范围,取y从最小值ymin到最大值ymax,所述最小值和最大值即是椭圆最上点和最下点的坐标,每次以step为一个步进,即每次循环结束y=y+step;通过 <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msup> <mi>ax</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>bx</mi> <mo>+</mo> <mi>cxy</mi> <mo>+</mo> <mi>dy</mi> <mo>+</mo> <msup> <mi>ey</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>f</mi> <mo>=</mo> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mi>z</mi> <mo>=</mo> <mi>r</mi> </mtd> </mtr> </mtable> </mfenced>解出相应的x值;如果得到两个点(x1,y)和(x2,y):找到包含(x1,y)的方格,此方格对应的计数器counter(x1,y)加1;找到包含(x2,y)的方格,此方格对应的计数器counter(x2,y)加1;否则,如果得到一个点(x,y):找到包含(x,y)的方格,此方格对应的计数器counter(x,y)加1;所述循环为当y取到大于最大值ymax时跳出循环;(4)寻找所有方格计数器的最大值max{counter(xi,yj)},判别识别球的结果:如果这个最大值max{counter(xi,yj)}大于一定的阈值counter_threshold,则识别到球,球心为方格的中心counter_max(x,y);否则区域内不存在球;这里所述阈值counter_threshold不是某一个固定数值,要根据检测的系统、对象以及环境来设定,方法是用一张有球的图像来试验,在前述的方格计数器都计数完毕后,绘制出所有方格的计数数值/对应此数值的计数器个数的直方图,取最高计数值与次高计数值的中间值作为参考阈值。
地址 200444 上海市宝山区上大路99号