一种用于围棋机器人的视觉识别方法
- 国知局
- 2024-12-26 14:48:31
本发明涉及图像处理领域,尤其涉及在光线不均、强烈反射或深色阴影等复杂光照环境下的围棋机器人视觉识别方法。
背景技术:
1、随着人工智能和机器人技术的发展,围棋机器人逐渐成为一个重要的研究方向。在实际应用中,围棋机器人需要能够识别棋盘上的黑白棋子并实时做出响应,这对视觉识别技术提出了严峻的挑战。
2、当前大多数围棋机器人依赖于传统的视觉识别技术,这些技术通常在光照条件相对稳定的环境中表现良好。然而,在实际应用中,光照条件经常变化,如自然光的变化、阴影、反光等,使得视觉识别的准确性和鲁棒性大大降低。复杂的光照环境对围棋机器人的视觉识别提出了更高的要求,这种环境包括不同亮度、光线方向、反射和遮挡等情况,使得对棋盘和棋子的准确识别变得困难重重。
技术实现思路
1、鉴于以上所述,本发明提供了一种用于围棋机器人的视觉识别算法。特别注重在复杂光照环境下的适用性。该算法通过引入多边形拟合算法与霍夫圆检测算法,能够在不同光照条件下稳定、准确地识别棋盘和棋子。
2、本发明方法不仅在稳定光照条件下表现出色,更在复杂光照环境下展现出极高的鲁棒性和适应性。它的引入为围棋机器人的视觉识别带来了新的突破,使其能够在各种复杂环境中准确、快速地识别棋盘和棋子,提升了围棋机器人的智能化水平和实用性。
3、本发明用于围棋机器人的视觉识别方法,包括以下步骤:
4、s1使用摄像头对围棋棋盘进行空棋盘图像采集,通过计算空棋盘图像的灰度直方图、不同区域的局部方差以及识别图像中的边缘区域,对空棋盘图像进行自适应高斯模糊处理。
5、s2使用高斯加权平均自适应阈值二值化,处理自适应高斯模糊处理后的图像,得到二值化图像,并通过边界跟随算法从二值化图像中提取轮廓。
6、s3将提取到的轮廓进行基于douglas-pucker(道格拉斯-普克)算法的多边形拟合,找到满足约束条件的一个多边形,并将这个多边形以一组包含四个顶点坐标的二维数组保存。
7、s4对得到的二维数组四个顶点坐标进行排序,应用排序后的二维数组通过透视变换获得标准化的棋盘图像,建立全零矩阵代表棋盘上棋子全为空的初始状态。
8、s5进行棋子识别。对棋盘图像,通过均匀分割获取棋盘网格点。对每个网格点区域进行改进的霍夫圆检测,确定棋子圆心位置,以定位的圆心位置为中心对霍夫圆区域进行三值化分割,得到霍夫圆区域三值化分割后的图像,基于三值化区域三种元素的数量大小建立自适应排错机制:判定黑白棋子的颜色,同时将误识别的格点区域判定为空。
9、s6根据排错机制判定的结果,保存识别结果,通过全零矩阵接收棋盘上棋子的信息变化,将判定为黑子格点位置矩阵值变为1,判定为白子位置矩阵值变为2,完成识别。
10、进一步的,步骤s1进一步包括:
11、s11通过将空棋盘图片从rgb空间转换到灰度空间中,得到空棋盘灰度图像,其中灰度空间中灰度值的计算公式为y=0.299·r+0.587·g+0.114·β。其中r、g、b分别表示红、绿、蓝三个通道的像素值,y为转换后的灰度值,通过公式得到棋盘灰度图像。
12、s12计算空棋盘灰度图像的灰度直方图,用于分析图像的亮度和对比度。灰度直方图的计算公式为:其中i(x,y)是像素(x,y)的值,g是狄拉克函数,用于在某一特定值时输出1,其余情况下输出0,w和h分别是空棋盘灰度图像的宽度和高度。灰度直方图的结果用于后续步骤中对不同区域进行自适应处理。
13、s13基于灰度直方图对棋盘灰度图像进行canny边缘检测,首先使用高斯滤波器平滑灰度直方图,高斯滤波器标准差根据灰度直方图的亮度分布进行调整,以增强对比度或保留细节。再使用sobel算子计算平滑后的灰度直方图的梯度幅值g(x,y)和梯度方向θ(x,y),得到梯度幅值图像:其中gx和gy分别表示梯度幅值图像在水平方向和垂直方向上的梯度。最后,基于梯度幅值,沿梯度方向抑制非极大值,并使用两个阈值对梯度幅值图像进行双阈值边缘连接处理,得到边缘区域。
14、s14基于检测到的边缘区域,计算空棋盘灰度图像中不同区域的局部方差。
15、局部方差的计算公式如下其中,ui,j是像素(i,j)周围区域的平均值,是像素(i,j)周围区域局部方差,n=2k+1是窗口大小,u是水平方向相对于像素(i,j)的偏移量,v是垂直方向相对于像素(i,j)的偏移量。
16、s15根据边缘区域和局部方,动态调整高斯滤波参数δi,j。定义三个标准差值:基础标准差δ0,边缘区域标准差δedge,高方差区域标准差δhigh-variance;对每个像素(i,j):其中e(i,j)是边缘检测结果,mean(r2)是局部方差的平均值。
17、s16对于每个像素(i,j),使用s15中动态调整的δi,j应用高斯滤波:在窗口大小li,j*li,j内,对窗口区域进行高斯模糊处理:最终得到自适应高斯模糊处理后的灰度图像。
18、进一步的,步骤s2进一步包括:
19、s21对自适应高斯模糊处理后的灰度图像进行二值化处理,使用高斯加权平均自适应阈值二值化的方法,根据二值化处理后灰度图像每个局部区域的光照条件自动调整阈值;假设给定输入图像为i(x,y),通过自适应阈值二值化得到二值化图像其中t(h,f)是在点(h,f)处的局部阈值,其中,n(h,f)是以点(h,f)为中心的邻域区域,ω(i,j)是根据高斯分布计算的权重,权重的计算依赖于邻域内像素(i,j)相对于中心(h,f)的距离。具体地,权重可以表示为高斯函数:其中,σ是高斯函数的标准差。
20、s22对于步骤s21中得到的二值化图像,将非零像素视为对象,零像素视为背景;通过边界跟随算法识别二值化图像中的轮廓,算法沿着背景像素的边界进行扫描,找到所有连续的边界点,将边界点连接,形成轮廓线条,表示对象的边缘;最终返回一组包含所有轮廓的集合p。
21、进一步的,步骤s3进一步包括:
22、s31对于步骤s2中得到的轮廓集合p,使用基于douglas-pucker(道格拉斯-普克)算法的多边形拟合方法,将每一个轮廓集合p中的元素简化为一个多边形;假定容差阈值ε,该阈值用于控制多边形简化的精度。较大的ε会产生更加简化的多边形,而较小ε的则保持更多的原始细节。对于轮廓集合p中的每一条曲线,从曲线的起点和终点开始,计算所有其他点到连接起点和终点的直线的距离。假设曲线的起点为pj,终点为pk,某中间点为pm,则计算点pm到线段的垂直距离dk,计算公式为:其中,(xj,yj)和(xk,yk)分别为起点和终点的坐标,(xm,ym)为中间点的坐标。通过递归分割:找到曲线上距线段最远的点pmax,计算其距离dmax。如果dmax≥ε,则将曲线在pmax处分割为两段,并对每段递归应用同样的算法,直到所有点到相应线段的距离都小于ε;如果dmax<ε,则将当前的起点和终点直接连接,忽略中间的点。集合p里所有元素通过递归分割后形成一个新的多边形集合p1。每一个元素都是由原始轮廓经过简化后的版本,保留了主要的几何特征。
23、s32依次遍历多边形集合p1,判定每个元素的边数,为四边形则保留,不为四边形丢弃,最终得到一组四边形集合p2。
24、s33计算棋盘实际面积。本发明所使用的围棋机器人摄像头安装在固定高度的支架上,通过不可调节的刚性结构保证摄像头在整个操作过程中的高度不会发生变化。该设计确保摄像头捕捉的棋盘图像保持一致的像素面积,避免因高度变化导致的图像偏差。使用opencv的鼠标事件选择棋盘的四个顶点坐标,设四个顶点按顺时针方向坐标为:(x1,y1),(x2,y2),(x3,y3),(x4,y4)。使用向量法公式计算四边形的面积:得到area为棋盘实际面积。
25、s34依次遍历四边形集合p2,计算每个四边形的面积,将每个四边形面积依次与棋盘实际面积area作差,返回差值绝对值最小的四边形,结果以一组包含四个顶点坐标的二维数组形式保存。
26、进一步的,步骤s4中,对得到的二维数组四个元素进行排序,按x坐标将顶点分为左右两组,按y坐标排序得到上下两个点,按顺时针顺序输出顶点,应用排序后的二维数组通过透视变换获得标准化的800×800空棋盘图像。建立19×19的全零矩阵代表棋盘上棋子全为空的初始状态。
27、进一步的,步骤s5进一步包括:
28、s51棋盘上开始落子,进行棋子识别。棋盘由19条水平线和19条垂直线构成,每两条相邻线之间形成一个方格,所以将棋盘图像的长(水平方向)和宽(垂直方向)分别均匀分割为20份。此时,在水平和垂直方向上各有19条分割线,两两相交,最终得到19×19个网格点。对于(i1,j1)(1≤i1≤19,1≤j1≤19)位置网格点,其水平位置为像素,其垂直位置为像素,其中i为该网格点在水平方向上的序号,j为该网格点在垂直方向上的序号。
29、s52对于步骤s51得到的19×19个网格点位置,划分为19×19个像素区域,依次对每一个像素区域进行霍夫圆检测。
30、s53由于图像噪声与棋子拖影的影响,以及霍夫圆的最小和最大半径、累加器阈值参数设置不精确,所以在空格点像素区域可能会出现误识别的霍夫圆,且每个像素区域里可能检测到多个霍夫圆,将一个像素区域检测到霍夫圆面积集合定义为s1={t1,t2,…tn}。
31、s54计算棋子实际面积,由于摄像头高度固定,棋子大小固定,所以棋子面积相对固定。在光照均匀环境下的空棋盘图片格点位置上,放一颗白色棋子,取以该格点为中心包含白色棋子的矩形区域,将这个矩形区域转换到hsv空间,定义白色的hsv阈值范围为[0,0,200]~[180,50,255],根据这个hsv阈值范围生成只包含白色区域的掩膜,计算掩膜中非零像素的数量,即为白色棋子的像素面积s,黑子像素面积与白子相同,均为s。
32、s55取集合s1中与s差值绝对值最小元素t与差值绝对值第二小的元素y。
33、s56定义每个霍夫圆区域中t,y两圆圆心距为m,根据两圆圆心(x11,y11)与(x21,y21)坐标求出圆心距定义圆心距阈值为th,存在霍夫圆的格点区域数为n,定义圆心距阈值计算公式为:对于圆心距小于等于阈值th的霍夫圆区域,返回t霍夫圆;对于圆心距大于阈值th的区域,根据识别的t霍夫圆周围灰度值的分布情况,确定阴影朝向,将靠近阴影一侧偏离实际圆心位置的霍夫圆剔除,得到每个像素区域内棋子的圆心位置。
34、s57根据棋子图片里得到的棋子准确圆心位置,在空棋盘灰度空间里的对应圆心区域获取每个圆心区域灰度值的最小值th1与最大值th2;在棋子图片灰度空间里根据对应圆心区域的最小值th1与最大值th2进行三值化分割,圆心区域灰度化后每一个灰度点f在三值化过程中变为其中a,b,c为三值化后棋子区域在灰度图的三种值,得到棋子三值化图像。
35、s58根据步骤s57中获取到的棋子三值化图像,假设求和函数为sum(x),x表示某个三值化图像里的某个灰度值,通过求和函数统计每个三值化区域内的sum(a),sum(b),sum(c),建立自适应排错机制判定棋子:
36、(1)若sum(a)≥sum(c)且sum(a)≥sum(b),判定为黑子。
37、(2)若sum(a)<sum(c)且sum(c)≥sum(b),判定为白子。
38、(3)其余情况均判定为空。
39、通过自适应排错机制第(1)(2)条,判定棋子黑白颜色,同时第(3)条将可能出现在空格点位置霍夫圆,即误识别的霍夫圆判定为空,保证棋子识别的准确性。
40、进一步的,步骤s6中,保存识别结果。保存s4中排序后的二维数组作为棋盘定位结果;根据排错机制判定的结果作为棋子识别结果,通过19×19全零矩阵接收棋盘上棋子的信息变化,将判定为黑子格点位置矩阵值变为1,判定为白子位置矩阵值变为2。
41、本发明相比于现有技术,具有以下有益效果:
42、引入自适应高斯模糊处理与高斯加权平均自适应阈值二值化的方法,根据图像每个局部区域的光照条件自动调整高斯滤波器的标准差与自适应阈值,有效克服由于光线不均、强烈反射或深色阴影等复杂光照环境带来的干扰;并将高斯加权平均自适应阈值二值化与基于douglas-pucker(道格拉斯-普克)算法的多边形拟合方法结合,将轮廓检测后的非封闭几何图形后处理为封闭几何图形,有效提高在强光与强阴影干扰下棋盘定位的准确性。
43、将改进的霍夫圆检测算法用于棋盘上棋子的定位,有效克服在复杂光照环境下棋子漏识别与棋子定位不准的问题;并通过三值化算法,根据每一次对局所定位的空棋盘图像,对定位到霍夫圆的圆心区域进行三值化分割,根据三值化的结果建立自适应排错机制,有效克服在复杂光照环境下棋子误识别的问题。
44、所提算法应用在围棋机器人视觉系统,有效提高围棋机器人在复杂光照环境下进行围棋对弈的稳定性。
本文地址:https://www.jishuxx.com/zhuanli/20241226/343503.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。
下一篇
返回列表