CN113688827A - 一种基于图像处理的围棋棋谱精准识别方法 - Google Patents
一种基于图像处理的围棋棋谱精准识别方法 Download PDFInfo
- Publication number
- CN113688827A CN113688827A CN202110787300.9A CN202110787300A CN113688827A CN 113688827 A CN113688827 A CN 113688827A CN 202110787300 A CN202110787300 A CN 202110787300A CN 113688827 A CN113688827 A CN 113688827A
- Authority
- CN
- China
- Prior art keywords
- template
- point
- points
- chess
- corner
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Image Analysis (AREA)
Abstract
本发明提供了一种基于图像处理的围棋棋谱精准识别方法,它通过对围棋图像进行分析,找出一路角点或者用棋子模板法得到四条一路信息,进而确定棋盘区域。此后,对所有交叉点进行棋子有无及颜色识别,并标记出因反光、有阴影、棋子被放歪导致的有可能出错的位置,从而得到相对精准的棋盘识别结果,以便于实现智能数子操作及生成棋盘电子图像等。本发明基于围棋图像的围棋棋谱识别方法具有方便快捷、可靠性高、普适性强的特点,在有光线不均、拍照畸变情况下仍能保证较高的识谱准确率。
Description
技术领域
本发明涉及图像识别领域,更具体地,涉及一种基于图像处理的围棋棋谱精准识别方法。
背景技术
近些年来,图像处理和精准识别技术是非常热门的研究方向,这些技术在现实生活中也已经有了非常广泛的应用并日趋成熟。在围棋赛事中,许多棋院仍采用人工记谱的方式,该方式既花费大量时间,记谱准确率也未能得到保证。对于棋盘图像的识别,人们大多采用当前极为热门的深度学习的方法,该方法至少有如下两个致命缺点:1.需要人工花费大量时间与精力对数据进行标记;2.若输入的棋盘图片类型为训练数据集中未收录的类型,则预测效果会比较差。而现有使用传统方法进行棋盘识别的模式则往往只能适用于其中一个步骤,即需要假设许多前提条件下,该方法才能运行甚至有较高的准确率。在实际的运用场景下,拍摄的角度不正、一路棋盘线全被棋子覆盖遮挡、棋子没被精准放置在棋盘交叉点上、光线太强导致棋盘和棋子反光、在棋盘周围放有杂物导致有大片阴影,都属于常见的情况,现有的许多方法对这些非理想场景大多识别效果较差,甚至无法识别。
发明内容
为了克服上述现有技术的不足,本发明提出一种基于图像处理的围棋棋谱精准识别方法,本方法是用图像识别技术代替人对围棋棋盘中的棋子及位置信息进行识别和记录,以便于更好地保存棋谱和更快捷地进行数子操作。
一种基于图像处理的围棋棋谱精准识别方法,识别过程为:
S1、图片预处理:将围棋棋谱原图转换为灰度图、B值图、二值图;
S2、一路角点检测:在灰度图中用Harris角点检测法对图中所有的角点进行探测;得到一路角点;
S3、一路角点分类与校正:对上一步骤检测到的角点进行分类,分“上一路”、“下一路”、“左一路”和“右一路”四类,并校正角点所在位置;
S4、判断一路棋子是否覆盖角点严重:统计每条一路棋子中识别到的角点数量,若数量未达到设定阈值TH1要求,则大部分边线角点被棋子覆盖,即认定为覆盖角点严重,通过棋子模板法识别棋子来得到此条一路位置信息;
S5、确定棋盘四个最边角顶点位置:结合棋子模板法与一路角点检测得到的四条一路直线信息,则能计算得棋盘四个最边角顶点位置;在对旋转变形的棋盘进行畸变几何校正;得到正畸棋盘图中361个棋盘交叉点的位置信息;
S6、判断对应位置有无棋子及棋子颜色,得到最终结果矩阵。
优选的,S2中一路角点检测的具体过程为:
在灰度图中用Harris角点检测法得到围棋棋盘图中所有角点,记为Corner,并在二值图中对Corner使用多重三峰检测法,具体如下:
峰值定义为在一串0-1字符串中,若出现连续“1”的子字符串,则该子字符串则为一个峰值;
对每一个Corner点集中的点取不同半径的方形邻域,在每个邻域***一周检测是否有且只有三个峰值,若是,则在新建零数组a'的对应位置更新为1,最后统计a'中1的数量,若该数量大于等于预设值,则此点为需要的一路角点,并加入新点集Corner1。
优选的,所述S2步骤后还包括排除部分内部角点,具体是:
分别对Corner1点集的点在半径为r1的方形邻域中峰值的对应位置点两两连线,将会得到三条线段;
设若其中存在一条线段使得该线段所包含像素中取值为1的像素点总数与该线段所包含像素点总数的比值大于设定值,则该点为需要的一路角点,加入新点集Corner2。
优选的,S3的一路角点分类与校正的具体过程为:
使用设计好的40个不同角度的T形模板,在二值图中分别对点集Corner2中每个点的半径r2的正方形邻域B矩阵中每个点bij进行模板得分计算;
对以bij为中心,半径为4的方形邻域与各个模板进行卷积,记录得分最高的模板编号cij与得分dij;在对B矩阵中每个点都做一次此操作后,将得到完整的模板编号矩阵C与得分矩阵D;
找出D矩阵中最大得分的位置与在二值图中的坐标,并找出该点在C矩阵中的对应模板编号,将此角点进行上下左右归类;记为:下角点(xx1,yy1),上角点(xx2,yy2),左角点(xx3,yy3),右角点(xx4,yy4);
对每一类中的点进行再一次筛选:对同类中的所有点进行两两斜率计算,得到斜率矩阵,计算所有斜率的方差var,若var大于设定的阈值TH2,则建立新零向量数组a,对斜率矩阵的每一列进行以下操作:使用kmeans聚类法,将斜率分成两类,统计每一类元素的个数,将个数少的那一类中的元素对应的下标在数组a中相应位置的值进行加1操作。所有列进行完该操作后,删除数组a中数值最大的元素下标所对应的点;
重新计算剩余点两两之间的斜率,得到新的斜率矩阵与现有斜率的方差,重复此操作,直至斜率方差小于设定阈值TH2为止;
对得到的四类点集分别并进行直线拟合,进而得到角点的分类结果。
优选的,所述T形模板具体为:
在上下左右四个方向各设置了不同角度的10个模板,所有的模板均为9乘9的矩阵,矩阵中的元素为100,0,-10,-50,-100,-200值;在模板中取100的位置所构成的形状为不同方向不同角度的T字形,与三出度角点出发的三条棋盘线形状相对应,模板中的负值用于惩罚,以便于确认模板所在位置是否与三出度角点对应上,
“上一路”、“下一路”、“左一路”和“右一路”四类角点中任一类的T形模板设置方式如下:
在模板中,取值为100的位置对应的形状为T字形,在T字形中对应的横线记作a,竖线记为b,
第一类模板是a与b呈90度的直角模板,即为正T形模板;将该正T形模板逆时针旋转45度成为第二个模板,此类共有两个模板;
第二类模板是a与b呈60度的模板,将该模板逆时针旋转45度,即成另一个模板,再将这两个模板沿镜面对称,即获得新的两个模板,此类共有四个模板,
第三类模板为a与b呈45度的模板,与第二类模板相似,通过旋转和镜面反射可获得此类的四个模板,
设置方式1:定义像素点到T形区域的距离为竖直或水平方向T形区域中离这个像素点最近的点与这个像素点相隔的像素点个数。将上面得到的三类模板中T形区域的模版元素设置为100,在模板中,与T形区域距离为1的元素设置为0,与T形区域距离为2的元素设置为-10,与T形区域距离为3的元素设置为-50。此外,在线段a分隔开来的两侧中与线段b指向相反的一侧中与T形区域距离为2的元素设置为-100。
设置方式2:针对第三类模版,我们先将a与b夹角为45度区域内与T形区域距离为2的元素设置为-200,除此之外,其余部分的元素依照设置方式1进行设置。
优选的,S4中所述棋子模板法具体为:
对B值图进行自适应分割,并与二值图做一次叠加操作,得到所有棋子的信息,记为B5;采用不同半径圆形模板分别对B5中的每个点进行模板得分计算,即对每个点取与模板半径相同的邻域,和该模板进行卷积操作。记录下每个点在不同半径模板的最高得分,得到最高得分矩阵E,
在E矩阵中找到得分大于0的点,进行点集聚类,并得到同类中的中心点坐标,视为棋子的圆心,记为圆心点集F。
优选的,S6判断对应位置有无棋子及棋子颜色,得到最终结果矩阵具体过程为:
(1)白棋识别:
a.将正畸图分成4×4张子图,在每张子图中自适应设定阈值TH白棋进行图像分割。
b.通过统计交叉点附近的白色成分并结合子图灰度直方图来判断交叉点上是否为白子以及是否有出现反光现象,若有反光,则进行标记;
c.标记交叉点上放偏的棋子;
d.对反光交叉点进行进一步判断,确定是否为白子,置信度较高的取消原有标记;
(2)黑棋识别:
a.将正畸后的图分成4×4张子图,在每个子图中自适应设定阈值TH黑棋对图像进行分割。
b.通过统计交叉点附近的黑色成分判断交叉点上是否为黑子。
c.标记交叉点上放偏的棋子
d.判断黑子是否有反光
e.对被标记为反光棋子的交叉点进一步判断;
(3)结合白棋与黑棋的结果得到最终的结果矩阵A(19×19),其中:黑棋:-1,无棋:0,白棋:1。
与现有技术相比,本发明的有益效果是:
与单一的传统方法相比,本方法不仅能克服棋盘拍摄角度不正程度较大,一路棋盘线全被棋子覆盖遮挡等非正常情况,还能在识别之余,同时对反光、阴影及棋子放偏等特殊情况做出判断,若图片中存在上述现象,本方法能够对这些不同的情景设置不同的针对性识别方案,并在对应位置精准识别判断后对仍具有较高出错概率的位置进行标记。该方法具有适用性强,大大降低非理想情景(如棋盘倾斜角度太大、有大片阴影遮挡、有大片反光区域、棋子被放置歪斜)识别出错率。
附图说明
图1为围棋图像精准识谱算法实现流程图。
图2为围棋棋谱调试原图。
图3为围棋棋谱调试原图预处理图;3(a)为二值图、3(b)为B值图、3(c)为灰度图。
图4为使用棋子模板法效果图。
图5为得到四条一路信息及四个位置信息效果图。
图6为围棋棋谱识别效果比对图。
图7为拍照时有阴影时围棋棋谱效果比对图。
图8为光线昏暗时围棋棋谱效果比对图。
图9为棋盘反光并且拍摄角度时围棋棋谱不正效果图。
图10为棋盘底色不均时围棋棋谱效果图。
图11为棋盘底色与背景相似时围棋棋谱效果图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步描述。
为了克服人工记谱效率低、深度学习带来的高人工标记成本、传统方法对质量不高的棋盘图片识别出错率高等不足,本发明提供一种利用图像处理技术对围棋图像进行精准识别的方法,该方法能根据输入的棋盘图像得到对应的棋子位置信息,从而进行智能数子操作。
一种基于图像处理的围棋棋谱精准识别方法,包含以下步骤:
第1步:图片预处理:将原图转换为灰度图、B值图、二值图。
图像预处理具体过程为:
(2)在图片的***加一圈像素值为100的无用信息,防止拍摄的围棋棋盘太接近图片边缘而检测不到该一路角点。
(3)将以上两步操作后的图片记为I0,并将I0转化为二值图I、灰度图I2、B值图I5。其中在转换为灰度图时,首先用了高通滤波的方法:该方法有效地过滤了低频成分如阴影与反光的内部,留下了需要的棋盘线、棋子边缘等有效信息,得到一张过滤后的灰度图。接着对这张灰度图进行二值化分割:观察到在选取的阈值从低到高时,对应的结果图的小噪点会越来越多。于是在本实施例中对每个阈值对应的图片进行小连通域的数量统计,选取相邻阈值对应数量变化最大的那个阈值作为切割点,得到二值图。
第2步:一路角点检测:在灰度图中用Harris角点检测法对图中所有的角点进行探测。使用多重三峰法对初筛得到的角点进行检测,得到一路角点(可能含一些内部干扰角点)。
在灰度图中用Harris角点检测法得到图中所有角点,记为Corner。并在二值图中对Corner使用多重三峰检测法,具体如下:
首先,先定义峰值的概念。峰值定义为在一串0-1字符串中若出现连续的1子字符串,则该子字符串则为一个峰值。
如:对每一个Corner点集中的点分别取半径为r={4,5,6,7,8,9}共6个的方形邻域,在每个邻域***一周检测是否有且只有三个峰值,若是,则在新建的1×6零数组a的对应位置更新为1。最后统计a中1的数量,若该数量大于等于5,则此点为本实施例要的一路角点,加入新点集Corner1。
第3步:排除部分内部角点:使用直线检测法剔除个别棋盘内部满足多重三峰检测条件的伪角点。
第4步:排除部分内部角点:在Corner1点集中可能会存在因棋子有阴影导致在二值图中对应位置的三峰不是棋盘线造成的三峰,从而造成了一些伪角点。故采用本步骤消除这类伪角点。
分别对Corner1点集的点在半径为8的方形邻域中峰值的对应位置点两两连线,将会得到三条线段,由于棋子为圆弧形,因此得到的三条线段不会与二值图中线段部分有大面积重叠;而若为一路角点,设若其中存在一条线段使得该线段所包含像素中取值为1的像素点总数与该线段所包含像素点总数的比值大于0.7,则该点为需要的一路角点,加入新点集Corner2。一路角点分类与校正:使用T形模板法对上一步骤检测到的角点进行分类(分上一路、下一路、左一路和右一路四类),并校正角点所在位置。
第5步:一路角点分类与校正:此步骤使用设计好的40个不同角度的T形模板,在二值图中分别对点集Corner2中每个点的半径为4的正方形邻域(记为B矩阵)中每个点(记为bij)进行模板得分计算,即对以bij为中心,半径为4的方形邻域与各个模板进行卷积,记录下得分最高的模板编号cij与得分dij。在对B矩阵中每个点都做一次此操作后,将得到完整的模板编号矩阵C与得分矩阵D。找出D矩阵中最大得分的位置与在二值图中的坐标,并找出该点在C矩阵中的对应模板编号,将此角点进行上下左右归类。记为:下角点(xx1,yy1),上角点(xx2,yy2),左角点(xx3,yy3),右角点(xx4,yy4)。并且对每一类中的点进行再一次筛选:对类中的所有点进行两两斜率计算,得到斜率矩阵,计算斜率总方差var,若var大于一个很小的阈值,则建立新零向量数组a,记录斜率矩阵中每列斜率最大的对应下标位置k,在ak的位置加一。遍历斜率矩阵的所有列后删除a中最大的对应点,重新计算斜率矩阵与总斜率方差,重复此操作,直至斜率总方差小于阈值。
最后,对得到的四类点集分别并进行直线拟合。
本发明设计了40个模板用于对三出度角点进行分类及位置校准,其中上下左右四个方向各设置了不同角度的10个模板,所有的模板均为9乘9的矩阵,矩阵中的元素为100,0,-10,-50,-100等值。而在模板中取100的位置所构成的形状为不同方向不同角度的T字形,与三出度角点出发的三条棋盘线形状相对应,模板中的负值用于惩罚,以便于确认模板所在位置是否与三出度角点对应上。
以“上一路”的T形模板为例:
在模板中,取值为100的位置对应的形状为T字形,在T字形中对应的横线记作a,竖线记为b,
第一类模板是a与b呈90度的直角模板,即为正T形模板;将该正T形模板逆时针旋转45度成为第二个模板,此类共有两个模板;
第二类模板是a与b呈60度的模板,将该模板逆时针旋转45度,即成另一个模板,再将这两个模板沿镜面对称,即获得新的两个模板,此类共有四个模板,
第三类模板为a与b呈45度的模板,与第二类模板相似,通过旋转和镜面反射可获得此类的四个模板,
设置方案1:
定义像素点到T形区域的距离为竖直或水平方向T形区域中离这个像素点最近的点与这个像素点相隔的像素点个数。将上面得到的三类模板中T形区域的模版元素设置为100,在模板中,与T形区域距离为1的元素设置为0,与T形区域距离为2的元素设置为-10,与T形区域距离为3的元素设置为-50。此外,在线段a分隔开来的两侧中与线段b指向相反的一侧中与T形区域距离为2的元素设置为-100。
设置方案2:针对第三类模版,本发明先将a与b夹角为45度区域内与T形区域距离为2的元素设置为-200,除此之外,其余部分的元素依照设置方案1进行设置。
判断一路棋子是否覆盖角点严重:统计每条一路中识别到的角点数量,若数量未达到设定阈值3要求(即数量小于等于3),则视为大部分边线角点被棋子覆盖,此时需通过棋子模板法识别棋子来得到此条一路位置信息。
棋子模板法:
(1)首先对B值图进行自适应分割,并与二值图做一次叠加操作,得到所有棋子的信息,记为B5。
(2)设置半径r∈{1,2,...,15}的圆形模板:以圆形模板半径为k举例,以(x,y)为圆心,在半径为k的圆形内部得分为1;以(x,y)为圆心,在半径为(k,1.5*k)的圆形内部得分为-10,此时该模板是长度为的方形矩阵;在得到的模板基础上向外扩充6周,并设置得分为-100,得到半径为k的最终模板,此时该模板是长度为 的方形矩阵。
(3)对B5中的每个点进行不同半径的模板得分计算,记录下每个点在不同半径模板的最高得分,得到最高得分矩阵E。
(4)在E矩阵中找到得分大于0的点,进行点集聚类,即把聚在一起的点归成一类并得到同类中的中心点坐标,视为棋子的圆心,记为点集F。具体实现过程如下:
从所有点(记为点集S)中随机选择一个点,记为x0。
然后把x0从S中删除,计算x0与S中所有点的距离,记为距离矩阵D1,若出现距离小于阈值d的点则将对应的所有点记作点集S′,将S′中所有点从S中删除,此时对S′中剩下的所有点进行上述操作:从S′中任意选择一个点,记作x1;将x1添加到一个新类X1中,并从S′中删去,计算x1与S中所有点的距离,记为距离矩阵D2,若出现距离小于阈值d的点则将S中对应的所有点加入点集S′中,将S′中所有点从S中删除…继续执行上述操作,直至S′为空集。当S′为空集时,此时得到的X1:{x1,x2,...,xm}即为一类,计算此类的中心点坐标,并再次对当前的S进行上述操作,直至S为空集,得到X1、X2、X3......Xn。
(5)设置不同斜率与截距的直线,若在某一斜率k与截距b时该直线经过点集F中点的数量n大于等于3个,判断是否在这条直线之外(如左一路为直线往左的区域)存在F中的点,若有,则检测下一个斜率或者截距,若无,则将k、b、n存起来。直至遍历所有的斜率与截距,取n最大时对应的斜率与截距,即为我们所要的直线信息。
(6)对步骤5、步骤6中得到的直线信息进行整合,得到四条一路的信息,从而得到四个棋盘顶点,并用此信息进行几何校正,得到校正后的二值图I7、B值图B1、灰度图I22,以及对应的361个交叉点位置信息,同时可大致估算棋子的半径R。
第6步:确定四个棋盘最边角顶点位置:结合棋子模板法与一路角点检测得到的四条一路直线信息,可马上计算得棋盘四个最边角顶点位置。然后可对旋转变形的棋盘进行畸变几何校正。从而得到正畸棋盘图中361个棋盘交叉点的位置信息。
第7步:判断对应位置有无棋子及棋子颜色:
(1)白棋识别:
(1.1)基于B值图做判断
a.将B1进行分区域(此处分了4×4共16个子图)自适应阈值分割(分割阈值设置方案如下表):在每个子图中计算像素平均值M0,设定阈值M并对对应子图进行分割,整合所有子图得到二值图I8,并根据各个子图的灰度直方图判断此区域是否有出现反光现象并标记对应区域;进行几何校正之后,即可定位到棋盘内部,因此所得到的灰度直方图在无特殊情况(如反光、有阴影等)下只有左(黑棋子)中(棋盘)右(白棋子)三个峰,并且除了出现高峰的位置一般数值比较低,甚至为零。因此,可认为,当中间的高峰与右边高峰之间有超过80%的位置有较高的数值,则可视为有反光区域。
M<sub>0</sub> | (0,50] | (50,60] | (60,70] | (70,80] | (80,90] | (90,100] | (100,110] | (110,120] | (120,130] | (130,140] |
M | 30 | 40 | 50 | 60 | 65 | 70 | 75 | 80 | 100 | 110 |
M<sub>0</sub> | (140,150] | (150,160] | (160,170] | (170,180] | (180,190] | (190,200] | (200,210] | (210,220] | (220,255] | |
M | 120 | 130 | 140 | 150 | 160 | 170 | 180 | 195 | 200 |
b.在二值图I8中对交叉点位置取半径为的方形邻域统计各个邻域中像素点为1的点数量M,若超过阈值M1=(r×2+1)2×0.5,则为白棋子,若M2=(r×2+1)2×0.2<M<M1,则视为有可能是棋子放歪了,在矩阵C对应位置做标记。将有棋子的位置标记为1,无棋子标记为0,得到矩阵A1。
c.对标记的放歪棋子进行再次判断:
首先判断矩阵C中是否存在两个位置相连的标记点,若有,则选择这两个点的邻域中棋子面积较大的点,在矩阵A1中做标记,并在矩阵C中取消这两个点的标记。
接着对剩下的点在B1中取以标记点为中心,半径的方形邻域,若计算出的邻域像素平均值G>220,则视为有白棋子,在矩阵A1对应位置记为1,在C中取消标记;若170<G<220,则大概率为有棋子,不在C中取消标记;若170>G,则大概率为无棋子,在矩阵A1对应位置记为0,不取消标记。
d.对标记反光的区域进行初步判断:若在B1中对应交叉点邻域的平均像素值M0<150,则视为无棋子,在矩阵A1对应位置记为0,不在B中标记;若平均像素值较高,在矩阵B中对应位置作出标记,有待下一步精准判断。
e.对被标记为反光棋子的交叉点进行进一步判断:调高阈值M,再次分割,得到新的二值图I9,在I9中取以标记点为中心,半径的方形邻域,统计邻域中像素值为1的数量,若数量大于3,则视为无棋子,在矩阵A1对应位置记为0,反之视为有棋子,在矩阵A1对应位置记为1,在B中标记不变。
(1.2)基于二值图做判断
对(1.1)、(1.2)中的结果取交集,即若A1和A2的对应位置同时为1,则在矩阵A中标记为1,否则标记为0。
(1.3)黑棋识别:
a.将I22进行分区域(此处分了4×4共16个子图)自适应阈值分割(分割阈值设置方案如下表),在每个子图中计算像素平均值M0,设定阈值M并对对应子
M<sub>0</sub> | (0,50] | (50,60] | (60,70] | (70,80] | (80,90] | (90,100] | (100,110] | (110,120] | (120,130] |
M | 60 | 70 | 80 | 90 | 95 | 100 | 105 | 110 | 115 |
M<sub>0</sub> | (130,140] | (140,150] | (150,160] | (160,170] | (170,180] | (180,190] | (190,200] | (200,210] | (210,255] |
M | 120 | 125 | 130 | 135 | 140 | 145 | 150 | 155 | 160 |
图进行分割,整合所有子图得到二值图I10。
b.在二值图I10中对交叉点位置取半径为的方形邻域统计各个邻域中像素点为1的点数量M,若超过阈值M1=(r×2+1)2×0.5,则为黑棋子,若M2=(r×2+1)2×0.2<M1<M,则视为有可能是棋子放歪了,在矩阵C对应位置做标记。将有棋子的位置标记为-1,无棋子标记为0,得到矩阵A1
c.对标记的放歪棋子进行再次判断:
首先判断矩阵C中是否存在两个位置相连的标记点,若有,则选择这两个点的邻域中棋子面积较大的点,在矩阵A1中做标记,并在矩阵C中取消这两个点的标记。
接着对剩下的点在B1中取以标记点为中心,半径的方形邻域,若计算出的邻域像素平均值G<50,则视为有黑棋子,在矩阵A1对应位置记为1,取消在C中的标记;若50<G<80,则大概率为有棋子,在矩阵A1对应位置记为1,不取消在C中的标记;若80>G,则大概率为无棋子,在矩阵A1对应位置记为0,不取消在C中的标记。
d.在I7中做一次腐蚀膨胀操作,对每个交叉点位置取半径为的方形邻域,统计邻域中像素值为1的数量,若数量大于100,则视为有棋子,反之视为无棋子,将有棋子的位置标记为-1,无棋子标记为0,得到矩阵A2。
e.对比A1与A2,若在对应位置结果不一样,则视为是黑棋有反光,在矩阵B中对应位置做标记;反之在矩阵A中标记为-1。
f.对被标记为反光棋子的交叉点进行进一步判断:
第8步:得到最终结果矩阵:
(1)结合白棋与黑棋的结果得到最终的结果矩阵A(19×19),其中:
黑棋:-1
无棋:0
白棋:1
(2)因反光、阴影导致可能出错的标记矩阵B;
(3)因棋子放歪导致可能出错的标记矩阵C。
本发明的方法适用于多种场景如拍照角度歪斜、有棋子或棋盘的反光与阴影现象等;并且只需输入一张图片,无需人工进行进一步的标记,即能得出结果;对大概率出错的位置进行了标记,方便人们对照标记检查,提高了效率。
参见附图法,是采用本发明方法对多幅围棋图像进行识谱。图7--图11分别为在不同场景下的识谱效果图。
综上可以看到,本发明的方法不仅可以识别一般场景,而且可以对日常生活中常见的对结果造成影响的情况也有较好的识别效果。
以上所述的本发明的实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神原则之内所作出的修改、等同替换和改进等,均应包含在本发明的权利要求保护范围之内。
Claims (7)
1.一种基于图像处理的围棋棋谱精准识别方法,其特征在于,识别过程为:
S1、图片预处理:将围棋棋谱原图转换为灰度图、B值图、二值图;
S2、一路角点检测:在灰度图中用Harris角点检测法对图中所有的角点进行探测;得到一路角点;
S3、一路角点分类与校正:对上一步骤检测到的角点进行分类,分“上一路”、“下一路”、“左一路”和“右一路”四类,并校正角点所在位置;
S4、判断一路棋子是否覆盖角点严重:统计每条一路棋子中识别到的角点数量,若数量未达到设定阈值TH1要求,则大部分边线角点被棋子覆盖,即认定为覆盖角点严重,通过棋子模板法识别棋子来得到此条一路位置信息;
S5、确定棋盘四个最边角顶点位置:结合棋子模板法与一路角点检测得到的四条一路直线信息,则能计算得棋盘四个最边角顶点位置;在对旋转变形的棋盘进行畸变几何校正;得到正畸棋盘图中361个棋盘交叉点的位置信息;
S6、判断对应位置有无棋子及棋子颜色,得到最终结果矩阵。
2.根据权利要求1所述的基于图像处理的围棋棋谱精准识别方法,其特征在于,S2中一路角点检测的具体过程为:
在灰度图中用Harris角点检测法得到围棋棋盘图中所有角点,记为Corner,并在二值图中对Corner使用多重三峰检测法,具体如下:
峰值定义为在一串0-1字符串中,若出现连续“1”的子字符串,则该子字符串则为一个峰值;
对每一个Corner点集中的点取不同半径的方形邻域,在每个邻域***一周检测是否有且只有三个峰值,若是,则在新建零数组a′的对应位置更新为1,最后统计a′中1的数量,若该数量大于等于预设值,则此点为需要的一路角点,并加入新点集Corner1。
3.根据权利要求2所述的基于图像处理的围棋棋谱精准识别方法,其特征在于,所述S2步骤后还包括排除部分内部角点,具体是:
分别对Corner1点集的点在半径为r1的方形邻域中峰值的对应位置点两两连线,将会得到三条线段;
设若其中存在一条线段使得该线段所包含像素中取值为1的像素点总数与该线段所包含像素点总数的比值大于设定值,则该点为需要的一路角点,加入新点集Corner2。
4.根据权利要求3所述的基于图像处理的围棋棋谱精准识别方法,其特征在于,S3的一路角点分类与校正的具体过程为:
使用设计好的40个不同角度的T形模板,在二值图中分别对点集Corner2中每个点的半径r2的正方形邻域B矩阵中每个点bij进行模板得分计算;
对以bij为中心,半径为r2的方形邻域与各个模板进行卷积,记录得分最高的模板编号cij与得分dij;在对B矩阵中每个点都做一次此操作后,将得到完整的模板编号矩阵C与得分矩阵D;
找出D矩阵中最大得分的位置及其在二值图中相应的坐标,并找出该点在C矩阵中的对应模板编号,将此角点进行上下左右归类;记为:下角点(xx1,yy1),上角点(xx2,yy2),左角点(xx3,yy3),右角点(xx4,yy4);
对每一类中的点进行再一次筛选:对同类中的所有点进行两两斜率计算,得到斜率矩阵,计算所有斜率的方差var,若var大于设定的阈值TH2,则建立新零向量数组a,对斜率矩阵的每一列进行以下操作:使用kmeans聚类法,将斜率分成两类,统计每一类元素的个数,将个数少的那一类中的元素对应的下标在数组a中相应位置的值进行加1操作;所有列进行完该操作后,删除数组a中数值最大的元素下标所对应的点;
重新计算剩余点两两之间的斜率,得到新的斜率矩阵与现有斜率的方差,重复此操作,直至斜率方差小于设定阈值TH2为止;
对得到的四类点集分别进行直线拟合,进而得到角点的分类结果。
5.根据权利要求4所述的基于图像处理的围棋棋谱精准识别方法,其特征在于,所述T形模板具体为:
在上下左右四个方向各设置了不同角度的10个模板,所有的模板均为9乘9的矩阵,矩阵中的元素为100,0,-10,-50,-100,-200值;在模板中取100的位置所构成的形状为不同方向不同角度的T字型,与三出度角点出发的三条棋盘线形状相对应,模板中的负值用于惩罚,以便于确认模板所在位置是否与三出度角点对应上,
“上一路”、“下一路”、“左一路”和“右一路”四类角点中任一类的T形模板设置方式如下:
在模板中,取值为100的位置对应的形状为T字形,在T字形中对应的横线记作a,竖线记为b,
第一类模板是a与b呈90度的直角模板,即为正T形模板;将该正T形模板逆时针旋转45度成为第二个模板,此类共有两个模板;
第二类模板是a与b呈60度的模板,将该模板逆时针旋转45度,即成另一个模板,再将这两个模板沿镜面对称,即获得新的两个模板,此类共有四个模板,
第三类模板为a与b呈45度的模板,与第二类模板相似,通过旋转和镜面反射可获得此类的四个模板,
设置方式1:定义像素点到T形区域的距离为竖直或水平方向T形区域中离这个像素点最近的点与这个像素点相隔的像素点个数;将上面得到的三类模板中T形区域的模版元素设置为100,在模板中,与T形区域距离为1的元素设置为0,与T形区域距离为2的元素设置为-10,与T形区域距离为3的元素设置为-50;此外,在线段a分隔开来的两侧中与线段b指向相反的一侧中与T形区域距离为2的元素设置为-100;
设置方式2:针对第三类模版,先将a与b夹角为45度区域内与T形区域距离为2的元素设置为-200,除此之外,其余部分的元素依照设置方式1进行设置。
6.根据权利要求5所述的基于图像处理的围棋棋谱精准识别方法,其特征在于,S4中所述棋子模板法具体为:
对B值图进行自适应分割,并与二值图做一次叠加操作,得到所有棋子的信息,记为B5;采用不同半径圆形模板分别对B5中的每个点进行模板得分计算,即对每个点取与模板半径相同的邻域,和该模板进行卷积操作;记录下每个点在不同半径模板的最高得分,得到最高得分矩阵E,
在E矩阵中找到得分大于0的点,进行点集聚类,并得到同类中的中心点坐标,视为棋子的圆心,记为圆心点集F。
7.根据权利要求6所述的基于图像处理的围棋棋谱精准识别方法,其特征在于,S6判断对应位置有无棋子及棋子颜色,得到最终结果矩阵具体过程为:
(1)白棋识别:
a.将正畸图分成4×4张子图,在每张子图中自适应设定阈值TH白棋进行图像分割;
b.通过统计交叉点附近的白色成分并结合子图灰度直方图来判断交叉点上是否为白子以及是否有出现反光现象,若有反光,则进行标记;
c.标记交叉点上放偏的棋子;
d.对反光交叉点进行进一步判断,确定是否为白子,置信度较高的取消原有标记;
(2)黑棋识别:
a.将正畸后的图分成4×4张子图,在每个子图中自适应设定阈值TH黑棋对图像进行分割;
b.通过统计交叉点附近的黑色成分判断交叉点上是否为黑子;
c.标记交叉点上放偏的棋子
d.判断黑子是否有反光
e.对被标记为反光棋子的交叉点进一步判断;
(3)结合白棋与黑棋的结果得到最终的结果矩阵A(19×19),其中:黑棋:-1,无棋:0,白棋:1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110787300.9A CN113688827B (zh) | 2021-07-13 | 2021-07-13 | 一种基于图像处理的围棋棋谱精准识别方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110787300.9A CN113688827B (zh) | 2021-07-13 | 2021-07-13 | 一种基于图像处理的围棋棋谱精准识别方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113688827A true CN113688827A (zh) | 2021-11-23 |
CN113688827B CN113688827B (zh) | 2023-05-26 |
Family
ID=78576976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110787300.9A Active CN113688827B (zh) | 2021-07-13 | 2021-07-13 | 一种基于图像处理的围棋棋谱精准识别方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688827B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506701A (zh) * | 2017-08-08 | 2017-12-22 | 大连万和海拓文化体育产业有限公司 | 一种基于视频识别技术的围棋自动记谱方法 |
CN107730522A (zh) * | 2017-10-12 | 2018-02-23 | 中科视拓(北京)科技有限公司 | 一种基于图像的围棋棋谱识别方法 |
CN110399888A (zh) * | 2019-07-25 | 2019-11-01 | 西南民族大学 | 一种基于mlp神经网络和计算机视觉的围棋裁判*** |
CN110472625A (zh) * | 2019-08-05 | 2019-11-19 | 浙江大学 | 一种基于傅里叶描述子的象棋棋子视觉识别方法 |
CN111369614A (zh) * | 2020-02-26 | 2020-07-03 | 辽宁中新自动控制集团股份有限公司 | 一种自动寻迹记录围棋棋谱智能小车及方法 |
-
2021
- 2021-07-13 CN CN202110787300.9A patent/CN113688827B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107506701A (zh) * | 2017-08-08 | 2017-12-22 | 大连万和海拓文化体育产业有限公司 | 一种基于视频识别技术的围棋自动记谱方法 |
CN107730522A (zh) * | 2017-10-12 | 2018-02-23 | 中科视拓(北京)科技有限公司 | 一种基于图像的围棋棋谱识别方法 |
CN110399888A (zh) * | 2019-07-25 | 2019-11-01 | 西南民族大学 | 一种基于mlp神经网络和计算机视觉的围棋裁判*** |
CN110472625A (zh) * | 2019-08-05 | 2019-11-19 | 浙江大学 | 一种基于傅里叶描述子的象棋棋子视觉识别方法 |
CN111369614A (zh) * | 2020-02-26 | 2020-07-03 | 辽宁中新自动控制集团股份有限公司 | 一种自动寻迹记录围棋棋谱智能小车及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113688827B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109784344B (zh) | 一种用于地平面标识识别的图像非目标滤除方法 | |
CN107066933B (zh) | 一种道路标牌识别方法及*** | |
CN109271937B (zh) | 基于图像处理的运动场地标志物识别方法及*** | |
CN113298810B (zh) | 结合图像增强和深度卷积神经网络的道线检测方法 | |
CN110197153B (zh) | 一种户型图中墙体自动识别方法 | |
CN109948393B (zh) | 一种一维条码的定位方法及装置 | |
JP2009086926A (ja) | 画像認識方法および装置 | |
CN110472625B (zh) | 一种基于傅里叶描述子的象棋棋子视觉识别方法 | |
CN110414308B (zh) | 一种针对输电线路上动态异物的目标识别方法 | |
CN110210428B (zh) | 一种基于mser的远距离复杂环境下的烟雾根节点检测方法 | |
CN107423735B (zh) | 一种利用水平梯度和饱和度的车牌定位方法 | |
CN106503704A (zh) | 一种自然场景中圆形交通标志定位方法 | |
CN110298835B (zh) | 一种皮革表面破损检测方法、***及相关装置 | |
CN110335322B (zh) | 基于图像的道路识别方法及道路识别装置 | |
CN110288619B (zh) | 基于视觉的太阳花模组表面螺钉孔位置检测方法 | |
CN114119437A (zh) | 一种基于gms的用于改善运动物体畸变的图像拼接方法 | |
WO2022021687A1 (zh) | 快速响应码区域定位方法、电子设备及存储介质 | |
CN117788501A (zh) | 一种用于视觉测量的编码标记点识别方法 | |
CN110440792B (zh) | 基于小天体不规则度的导航信息提取方法 | |
CN115880683B (zh) | 一种基于深度学习的城市内涝积水智能水位检测方法 | |
CN113688827B (zh) | 一种基于图像处理的围棋棋谱精准识别方法 | |
CN111178111A (zh) | 二维码检测方法、电子设备、存储介质及*** | |
CN116110069A (zh) | 基于编码标志点的答题卡识别方法、装置及其相关介质 | |
CN115376131A (zh) | 一种点状编码标志的设计与识别方法 | |
CN111199163A (zh) | 一种环形码的边缘检测与定位识别方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |