发明名称 一种九球的计算机辅助检测识别方法
摘要 本发明是一种九球的计算机辅助检测识别方法,属于数字图像处理领域。本发明要解决的技术问题是根据视频数据,实时进行球台上多目标定位与识别的问题。首先利用背景颜色高斯概率建模进行粗略的目标检测,滤除部分干扰;然后,基于边缘检测,对滤除的目标进行三个算法的边缘检测,其中每个算法涉及两层阈值;利用边缘检测结果进行Hough变换检测圆心,依次确定每个目标的球心。最后,利用颜色欧式距离计算检测出的目标与颜色中心的差距,得到每个目标的颜色,达到目标的识别。本发明可以在九球环境中实时的进行多目标的识别与定位,减少了裁判对复杂情况下球的位置的误判,提高了对九球定位判断的准确性和公正性。
申请公布号 CN103955693A 申请公布日期 2014.07.30
申请号 CN201310168073.7 申请日期 2013.05.06
申请人 北京瑞盖科技有限公司 发明人 王红;刘铮;毋立芳;冯泽猛;颜凤辉
分类号 G06K9/60(2006.01)I 主分类号 G06K9/60(2006.01)I
代理机构 北京思海天达知识产权代理有限公司 11203 代理人 刘萍
主权项 一种九球的计算机辅助检测识别方法,其特征在于,步骤如下:A、背景建模A1.为了平均噪声,本发明采集多帧九球球台的背景图像,对背景图像进行颜色的高斯建模;A2.根据每一个像素的RGB值计算相应地HIS颜色模型空间的色调H的值;公式如下:<maths num="0001" id="cmaths0001"><math><![CDATA[<mrow><mi>H</mi><mo>=</mo><mfenced open='{' close=''><mtable><mtr><mtd><mi>&theta;</mi><mo>,</mo><mi>G</mi><mo>&GreaterEqual;</mo><mi>R</mi></mtd></mtr><mtr><mtd><mn>2</mn><mi>&pi;</mi><mo>-</mo><mi>&theta;</mi><mo>,</mo><mi>G</mi><mo>&lt;</mo><mi>R</mi></mtd></mtr></mtable></mfenced><mo>,</mo></mrow>]]></math><img file="FDA00003146369900011.GIF" wi="358" he="118" /></maths><maths num="0002" id="cmaths0002"><math><![CDATA[<mrow><mi>&theta;</mi><mo>=</mo><msup><mi>cos</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><mfrac><mrow><mrow><mo>(</mo><mi>R</mi><mo>-</mo><mi>G</mi><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mi>R</mi><mo>-</mo><mi>B</mi><mo>)</mo></mrow></mrow><mrow><mn>2</mn><msqrt><msup><mrow><mo>(</mo><mi>R</mi><mo>-</mo><mi>G</mi><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><mrow><mo>(</mo><mi>R</mi><mo>-</mo><mi>B</mi><mo>)</mo></mrow><mrow><mo>(</mo><mi>G</mi><mo>-</mo><mi>B</mi><mo>)</mo></mrow></msqrt></mrow></mfrac><mo>)</mo></mrow></mrow>]]></math><img file="FDA00003146369900012.GIF" wi="785" he="176" /></maths>     公式1A3.计算每一点像素在上述多帧图像中的R、G、B、H期望和方差值,将每一个像素点的期望和方差值输出到“期望方差.dat”文件中;B、高斯公式简化根据高斯公式<img file="FDA00003146369900013.GIF" wi="529" he="176" />本方法将公式进行简化:<maths num="0003" id="cmaths0003"><math><![CDATA[<mrow><mi>f</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><msup><mi>e</mi><mrow><mo>-</mo><msup><mrow><mo>(</mo><mfrac><mrow><mi>x</mi><mo>-</mo><mi>&mu;</mi></mrow><mrow><msqrt><mn>2</mn></msqrt><mi>&sigma;</mi></mrow></mfrac><mo>)</mo></mrow><mn>2</mn></msup></mrow></msup></mrow>]]></math><img file="FDA00003146369900014.GIF" wi="359" he="130" /></maths>          公式2设<maths num="0004" id="cmaths0004"><math><![CDATA[<mrow><mi>g</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mo>-</mo><mfrac><mrow><mi>x</mi><mo>-</mo><mi>&mu;</mi></mrow><msqrt><mn>2</mn><mi>&sigma;</mi></msqrt></mfrac></mrow>]]></math><img file="FDA00003146369900015.GIF" wi="312" he="132" /></maths>          公式3其中μ是指期望,σ指方差;g(x)在[0,5]区间内以间隔是0.01进行取值,将计算结果expVal存储在文件“gaussian.dat”中;C、初始目标检测C1.采集一张目标图像I,读取图像信息,分别得到图像中每一点的R,G,B,H值,根据公式3计算g(x)的函数值,x分别指当前像素点的R,G,B,H值;C2.用查表法,在C1步得到的函数值在gussian.dat文件中进行查找;f(x)=expVal[g(x)*100]          公式4每一个像素点会有4个f(x)值,分别记为fR(i,j)、fG(i,j)、fB(i,j)、fH(i,j);将四个值的乘积归一化到[0‑255]区间并且向下取整,作为当前像素点的灰度值,即R=G=B,其中<img file="FDA00003146369900016.GIF" wi="931" he="68" />;目标区域被粗略的检测出来;此时显示出来的灰度图像就是目标检测结果后的图像;D、灰度图像预处理便于后续的图像处理,首先对灰度图像进行预处理;D1.将C步骤中得到的灰度图像采取平滑技术中已有的均值滤波的方法进行平滑处理;D2.将上一步骤中得到的结果进行二值化处理,本方法采用图像I的亮度的平均值的2倍作为二值化的阈值;D3.图像进行膨胀的形态学处理;E、粗检聚类E1.进行聚类操作,得到每一个聚类区域的坐标范围;聚类是将数据对象按照对象间的相似性进行分组或分类的过程,本方法中的聚类方法对上一步处理后图像中的白色的点求连通域,再进行聚类操作,统计白色点的区域面积、坐标范围,区域中心;E2.筛选,将聚类结果进行简单的条件筛选,排除包括聚类区域是一条线的情况;F、生成独立目标图像从目标图像I中,将聚类结果的坐标范围“挖取”出来,生成小图像,每个小图像就是一个筛选目标,后续算法只在独立的目标小图像中进行处理;G、多阈值多层次检测——第一层G1.在小的目标区域中进行已经存在的经典边缘检测算子‑‑‑Robert算子进行边缘检测;Robert算子的输入是独立的目标图像的每个像素的RGB值,输出是值作为相应像素的灰度值,保存检测结果;G2.对独立的目标区域进行’HRobert’算子边缘检测,保存检测结果;‘HRober’算子是本方法提出的针对九球环境的目标检测算法,即将像素RGB转换成色调H值;将H值映射到[0,255]的范围后输入到Robert算子中,进行H值的边缘检测;G3.对独立的目标区域进行’UnHRobert’算子计算,并保存计算结果;‘UnHRobert’算子的实际操作是,先对独立的目标图像像素的RGB值进行取反操作,取反后的像素信息求相应地色调H值,将H值得范围映射的[0,255]区域后进行Robert边缘检测;G4.Hough变换对进行‘UnHRobert’算子计算后的小区域内进行Hough变换圆检测;G5.多阈值多层次检测——第一阈值G51.将Hough变换之后的累加点数大于阈值th1的点,进行聚类,得到聚类中心;其中th1是经验值,本方法中取的是90;G52.此聚类中心就是圆心,将以此聚类中心为中心,以目标球的半径为半径的区域进行检测标记,以免重复检测;G6.多阈值多层次检测——第二阈值对G5聚类后没有被标记的点中,Hough变换之后的累加点数大于阈值th2的点,进行聚类,得到聚类中心;其中th2是经验值,本方法中取的是60;将以此聚类中心为中心,以目标球的半径为半径的区域进行检测标记;H、多阈值多层次检测——第二层H1.对F中生成的独立目标区域进行Prewitt算子边缘检测,保存检测结果;H2.对F中生成的独立目标区域进行‘MaxOf3’算子边缘检测MaxOf算子即是取Prewitt算子检测后的结果,Robert算子后的结果,HRobert算子后的结果,三者的最大值作为当前像素的灰度值;H3.Hough变换对边缘检测结果进行Hough变换圆检测;H4.多阈值多层次检测——第三阈值对步骤G后没有被标记的点中,Hough变换之后的累加点数大于阈值th3的点,进行聚类,得到聚类中心;其中th3是经验值,本方法中取的是80;将以此聚类中心为中心,以目标球的半径为半径的区域进行检测标记;H5.多阈值多层次检测——第四阈值对H4步骤后没有被标记的点中,Hough变换之后的累加点数大于阈值th4的点,进行聚类,得到聚类中心;其中th4是经验值,本方法中取的是55;将以此聚类中心为中心,以目标球的半径为半径的区域进行检测标记;I、多阈值多层次检测——第三层I1.H1步骤中Prewitt算子边缘检测进行Hough变换圆检测;I2.多阈值多层次检测‑‑‑第五阈值对H步骤后没有被标记的点中,Hough变换之后的累加点数大于阈值th5的点,进行聚类,得到聚类中心;其中th5是经验值,本方法中取的是30;将以此聚类中心为中心,以目标球的半径为半径的区域进行检测标记;I3.多阈值多层次检测——第六阈值对I2步骤后没有被标记的点中,Hough变换之后的累加点数大于阈值th6的点,进行聚类,得到聚类中心;其中th6是经验值,本方法中取的是20;将以此聚类中心为中心,以目标球的半径为半径的区域进行检测标记;J、颜色判断J1.得到初始各球的颜色中心J11.获取多张目标图像,球分别在亮区和暗区;台面为1392个像素长,816个像素宽,摄像头在台面正上方,所以在台面中心位置以及台面四周会有一些亮度上的误差;我们设置中心位置为亮区,靠近案边的位置为暗区;球在这两个区域的亮度不相同;对每个球色取亮暗两个颜色中心;J12.手工得到每个球的坐标范围;J13.手工得到坐标范围内的相应球号颜色的像素RGB值,分别求在亮区暗区的球的颜色均值,作为亮区和暗区的颜色中心;J2.根据颜色判断球号在比赛过程中,九球的状态各不相同,有时候球号会朝下,这种情况下就不能通过识别球上的标号达到识别的目的;由于每个球的颜色各不相同,本方法通过识别颜色进行球号的确定;J21.在G、H、I步骤中已经得到了目标的坐标;读取图像I中,目标坐标范围内的每个像素的RGB值;J22.每一点像素的RGB值与J1中的20组颜色中心计算欧式距离;<maths num="0005" id="cmaths0005"><math><![CDATA[<mrow><mi>d</mi><mo>=</mo><msqrt><msup><mrow><mo>(</mo><mi>R</mi><mo>-</mo><msub><mi>R</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><mi>G</mi><mo>-</mo><msub><mi>G</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>2</mn></msup><mo>+</mo><msup><mrow><mo>(</mo><mi>B</mi><mo>-</mo><msub><mi>B</mi><mn>0</mn></msub><mo>)</mo></mrow><mn>2</mn></msup></msqrt></mrow>]]></math><img file="FDA00003146369900051.GIF" wi="788" he="96" /></maths>J23.距离最小的为当前像素的颜色;对于像素(i,j)的20个距离,距离最小的为像素(i,j)的颜色;J24.一个球中像素颜色最多的一组就是当前球的颜色;例如,对于某个球而言,如果在球的区域范围内,红的像素是最多的,那么这个球就被识别为红球;J3.根据颜色确定球号1号球是黄色,2号球是蓝色,3号球是红色,4号球粉色,5号球橙色,6号球是绿色,7号球是棕色,8号球是黑色,9号球是黄色,母球是白色;根据J2步骤中的颜色可以确定球号,但是九球中的1号球和9号球都是黄色;需要进一步判断;J4.确定1号球与9号球1号球与9号球花色不一样,9号球是半球,白色区域较多,1号球黄色区域较多;根据这一特点,判断标记为黄色的两个球,属于黄色的点较多的为1号球,否则为9号球。
地址 100061 北京市东城区体育馆路甲2号