基于图像处理的实时围棋棋谱识别设计毕业论文
2020-03-28 12:11:26
摘 要
Abstract II
1 绪论 1
1.1 研究背景 1
1.2 目的及意义 1
1.3 国内外研究现状 2
1.3.1 透视变换的国内外研究现状 2
1.3.2 滤波降噪的国内外研究现状 2
1.3.3 围棋棋谱识别的国内外研究现状 2
1.4 基本内容和技术方案 3
2 实现方法概述 3
2.1 项目目标 3
2.2 项目流程图 4
3 数据集的预处理 5
3.1 调整图片像素 5
3.2 图像矫正 5
3.2.1 设计思想 5
3.2.2 总体框架 6
3.2.3 图像矫正原理及使用 7
3.2.4 核心代码及分析 8
4 棋子的定位算法与颜色确定 10
4.1 设计思想 10
4.2 棋子的定位算法 10
4.2.1 棋盘四角棋子定位 11
4.2.2 棋盘边线棋子定位 11
4.2.3 棋盘内部棋子定位 12
4.3 棋子颜色的确定与保存 12
4.3.1 图像降噪 12
4.3.2 基于RGB颜色空间模型检测 13
4.3.3 基于HSV颜色空间模型检测 24
4.3.4 基于灰度颜色空间模型检测 34
4.4 结果分析 42
5 结语 44
5.1工作总结 44
5.2工作展望 45
参考文献 46
致谢 48
摘 要
围棋是中华文化的瑰宝,主要在中日韩三国盛行,从2015年到2017年AlphaGo相继打败数位世界级围棋高手,这不仅引起了人们对人工智能时代的深思,更是掀起了又一波围棋热潮。在过去的围棋比赛中,记谱工作都是由记谱人员手工完成的,任务量大,错误率高,今年3月韩国研究团队Opensoft首次开发出图形识别转换棋谱系统,并与今年4月首次应用到围棋比赛中。基于图像处理的实时围棋棋谱识别与存储是本文研究的重点,本文的主要工作内容如下:
(1)数据集的预处理
本文利用matlab对数据集图片进行缩放,调整合适的分辨率以适应开发。然后利用opencv中的透视变换相关函数,对倾斜的棋谱进行几何校正,使矫正过后的图片为正投影形式,并去除棋谱外部图像部分。
(2)棋子的定位算法
本文对预处理过的数据集图片进行计算,将其均分为18*18的网格,对棋谱四个角点、上下左右四条外边缘线和内部棋盘线进行检测,用不同的图形分别计算棋盘线交点附近区域像素均值,确定当前顶点位置是否有棋子或是黑子还是白子。
(3)棋子颜色的确定与保存
本文用了三种方法进行棋子颜色的判断,分别基于RGB颜色空间模型、HSV颜色空间模型和灰度颜色空间模型,根据黑、白颜色的特征设置不同的阈值范围,检测棋谱上每个点。将放有黑、白棋的位置分别用-1、1存储,没有棋子的地方用0存储,将结果矩阵保存在TXT文件中。并对三种方法的结果进行分析与比较。
通过以上工作,本文得出了以下结论:
(1)当数据集图像受光线噪声影响基本相同时,基于RGB值和基于HSV值检测的准确率高于基于灰度值检测的准确率,尤其是在棋子数目较多的时候。
(2)对两个不同的数据集图像的检测,同一方法拥有的阈值范围是不一样的。
关键词:图像处理;透视变换;棋子定位;RGB颜色空间;HSV颜色空间;灰度颜色空间;二值化;
Abstract
Go is a treasure of Chinese culture and is predominantly popular in China, Japan and South Korea. From 2015 to 2017, AlphaGo successively defeated several world-class Go masters. This not only caused people to think deeply about the age of artificial intelligence, but also set off another wave of Go. upsurge. In the past Go game, notation work was done manually by the scorebook staff. The task volume is large and the error rate is high. In March of this year, the Korean research team Opensoft first developed a pattern recognition switching game system, and this was the first time in April this year. Applied to Go game. The recognition and storage of the real-time chess game spectrum based on image processing is the focus of this study. The main work of this paper is as follows:
(1) Preprocessing of data sets
This article uses matlab to scale the dataset image and adjust the appropriate resolution to suit the development. Then use the perspective transformation correlation function in opencv to geometrically correct the skewed game, so that the corrected picture is in the form of orthographic projection, and remove the external image part of the game.
(2) Chess positioning algorithm
In this paper, the preprocessed dataset images are calculated and divided into 18*18 grids. The four corners of the game, the four upper and lower left and right edge lines and the internal checkerboard lines are detected and calculated with different graphics. The mean value of the pixels in the area near the intersection of the checkerboard lines determines whether the current vertex position has pieces or sunspots or whites.
(3) Determination and preservation of color of pieces
This paper uses three methods to judge the color of the pieces, based on the RGB color space model, the HSV color space model and the gray color space model respectively, set different threshold ranges according to the characteristics of the black and white colors, and detect each point on the game spectrum. Place black and white chess positions with -1 and 1 respectively. Where there are no tiles, store them with 0 and store the
resulting matrix in the TXT file. And analyze and compare the results of the three methods.
Through the above work, this paper has reached the following conclusions:
(1) When the dataset image is substantially the same by light noise, the accuracy based on RGB values and detection based on HSV values is higher than that based on grayscale detection, especially when the number of pieces is large.
(2) For the detection of two different dataset images, the same method has different threshold ranges.
Key Words:image processing; perspective transformation; chess piece positioning; RGB color space; HSV color space; gray color space; binarization;
1 绪论
1.1 研究背景
围棋,作为中国古老的一种游戏手段,体现了东方人的智慈光辉,是中华文化的一颗璀璨明珠。
它具有辉煌灿烂的文化底蕴,不仅仅是一种复杂的有趣的经济活动,更是一种高级的思维活动,如《学习围棋是促进大学生潜能素质开发与培养的重要途径》[1]中所讲,学习围棋,能够促进大学生想象能力、思维能力的提高,培养大学生良好的心理品质和开发大学生的心理潜能素质。又如在《浅析围棋走进大学课堂的功能和意义》[2]中从培养学生耐心、平静、自律的良好品质,加深对文化传承的理解和认识、陶冶情操,提高大学生的创造能力、审美意识、社会交往能力等方面探讨了为大学生开设围棋课程的价值。
在如今的科技领域,AlphaGo[3]相继战胜世界级大师樊麾、李世石、柯洁等人,围棋界公认AlphaGo围棋的棋力已经超过人类职业围棋顶尖水平,在GoRatings网站公布的世界职业围棋排名中,其等级分曾超过排名人类第一的棋手柯洁[4]。
围棋,这块被称为“人类智慧的最后一块高地”以其在文化领域、现代功用方面的独特魅力以及AlphaGo围棋的“惊现”在全世界掀起了一股围棋热潮。
虽有越来越多的人开始关注博大精深的围棋,而当下围棋教育中面临一个问题就是选手缺乏合适的与之相匹配的对手来进行更好的训练,如果设计出一种精确的围棋识别技术,将其与围棋对弈程序相结合应用到围棋机器人上,则可很好的解决这个问题。在目前的围棋比赛中,计时和记谱主要靠人工完成,工作量大,误差大,亦容易出错。基于以上背景及问题,本文设计出一种基于图像处理的实时的将围棋选手对弈的棋谱转换为标准格式的棋谱存储算法。
1.2 目的及意义
截至2017年,棋界公认的世界围棋大赛有11项[5],世界各地每年举办的大、小围棋比赛不计其数,而比赛的记谱工作存在以下问题:
(1)在现有的围棋比赛中,记谱工作都是靠人手工进行的,工作量大,误差大,容易出错。
(2)记谱工作没有实现机器自动识别,已有的围棋棋盘识别没有与较新的技术相结合,使用限制多效率低,急需改进。
同时,在当下围棋教育中选手缺乏合适的与之相匹配的对手来进行更好的训练,而实时围棋识别技术可以与围棋对弈程序相结合应用到围棋机器人上,有效的解决这个问题。
因此本文设计出一种实时的将围棋选手对弈的棋谱转换为标准格式的棋谱存储算法,尽可能的促决以上几点问题的解决。
1.3 国内外研究现状
1.3.1 透视变换的国内外研究现状
透视变换即为几何变换中最复杂的一种。透视投影即是我们在日常生活中观察世界的方式[6]。关于透视变换算法的实现以软件编程居多,使用DSP或CPU进行计算,只有少数使用 FPGA 进行硬件实现的实例[7]。
金美玉[8]使用 DSP 进行透视变换计算,由于实时性问题不能得到整张完整透视变换的图像。介炫惠[9]使用开源图像库openCV进行透视变换,根据摄像机参数由程序计算得到变换矩阵。李建华[10]在处理二维条码运算时,其 VLSI 实现中包括有透视变换的功能,存储机制使用的是片外 sram,在片上使用 sram 控制器进行访问。J.D.Evemy[11]等设计的透视变换架构着重于使用流水线结构完成透视变换坐标的计算,对于图像缓存部分没有提及。杨世旺[12]等使用 XilinxFPGA 实现透视投影算法,主要优化了其中的浮点运算单元。Yuan Xu[13]等人使用 FPGA 中的 blockRAM 作为图像缓存,资源消耗较大。
1.3.2 滤波降噪的国内外研究现状
在Opencv图像处理中,滤波降噪分为线性滤波和非线性滤波[14]。线性滤波主要有方框滤波、均值滤波和高斯滤波,非线性滤波主要有中值滤波和双边滤波。其中中值滤波将图像的每个像素用邻域像素的中值代替,对椒盐噪声、去除跳变点最有效,双边滤波可以保证滤波器平滑图像去燥的同时使边缘也保持清晰[15]。
1.3.3 围棋棋谱识别的研究现状
2018年3月,韩国研究团队Opensoft(CEO:许京石(音译))[16]开发出了一款图像识别转换棋谱系统,两位对局者在棋盘上行棋,即便是双方快速拨动的局面,该项系统也没有发生错误,这是历史上首次在实际比赛中利用图像分析技术,将视频内容转换成棋谱。该系统在最重要的准确度上面,经过调查错误率低于0.01%,正确率几乎是100%。但如果在强光下,该项技术将会无法识别。那样的话,黑棋将会被认为是白棋,然后进入到分析系统中,如此下去就很难生成正确的棋谱。图像识别转换棋谱系统,预计会在今年4月开幕的韩国围棋联赛中进行使用。
1.4 基本内容和技术方案
本文最终目的是识别数据集中的每张棋谱,将黑白棋子分别用-1和1存储起来,空白地方用0存储,总的来说研究的内容包含以下三个方面:
- 对数据集的预处理,对倾斜的棋谱进行几何校正,使矫正过后的图片为正投影形式,并且不包含棋谱外部图像部分。
- 棋子的定位算法,对预处理过的数据集图片进行计算,用不同的图形分别计算棋盘线交点附近区域像素均值,确定当前顶点位置是否有棋子或是黑子还是白子。
- 棋子颜色的检测与保存,分别基于RGB颜色空间模型、HSV颜色空间模型和灰度颜色空间模型,利用黑子、白子和棋盘背景颜色的不同设置不同的阈值范围,根据每个交点的检测结果,识别棋子的颜色,进行保存,并对三种方法的结果进行比较与分析。
采用的技术方案及措施方法如下:
- 使用opencv现有的函数对数据集图片进行透视变换。
- 使用双边滤波对图像进行降噪。
- 使用设计的定位算法计算棋盘线交点附近区域的像素均值。
- 使用RGB值、HSV空间值、二值化处理方法进行棋子颜色的鉴定,并将结果存储在TXT文件中。
2 实现方法概述
2.1 项目目标
该项目包括三个部分:对数据集的预处理、棋子的检测、棋谱结果的保存。
- 对数据集的预处理
第一步由于图片分辨率过大,故需在matlab中检测数据集,进行缩放,使大小适合进行透视变换时的操作。第二步在Visual Studio中利用opencv函数库中的函数进行透视变换,即变换之后的图片是一张只包含内部棋盘的正投影矩形。
- 棋子的检测
对预处理过的数据集图片进行检测,将其均分为18*18的网格,检测每个网格顶点附近区域像素值,确定当前顶点位置是否有棋子或是黑子还是白子。
- 棋谱结果的保存
根据每个顶点的检测结果,将黑、白棋分别用-1、1存储,没有棋子的地方用0存储,将结果矩阵打印在TXT文件中。
2.2 项目流程图
项目的流程图如图一所示:
3 数据集的预处理
3.1 调整图片像素
本文所使用的数据集中每张图片的分辨率为3024*4032,高清,当在VS中做图像矫正时,由于图片过大,无法显示完整,为方便后续功能实现,故先对图片进行缩放处理。采用的工具为matlab,将其调整为375*340的分辨率。每张图片的名称为:IMG_1219.jpg......IMG_1482.jpg,共264张,根据每张图片在计算机中的的存储路径进行遍历,核心代码如下:
|
3.2 图像矫正
本文使用了一种基于透视变换的矫正算法对数据集图片进行倾斜矫正,本节将对其做简略介绍。
3.2.1 设计思想
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法[17]。
在图像的倾斜矫正这步中,将调用opencv中的zeros(),getPerspectiveTransform()和warpPerspective()等函数,将一张倾斜的图片变换为正投影的形式,并只保留棋盘内部的信息,以便后续的棋子定位计算。
3.2.2 总体框架
在opencv中已经实现了图像的透视变换功能,所以本文要做的主要操作为:确定变换前的四个角点坐标,将其带入函数。
以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。
相关图片展示: