象棋机器人视觉算法与智能控制软件的研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
工学硕士学位论文
象棋机器人视觉算法与智能控制
软件的研究
许丰磊
哈尔滨工业大学
2006年6月
国内图书分类号:TP242.6
国际图书分类号:621.865.8
工学硕士学位论文
象棋机器人视觉算法与智能控制
软件的研究
硕士研究生:许丰磊
导师:高云峰副教授
申 请 学 位:工学硕士
学科、专业:机械电子工程
所在单位:机电工程学院
答辩日期:2006年6月
授予学位单位:哈尔滨工业大学
Classified Index: TP242.6
U.D.C: 621.865.8
A Dissertation for the Degree of M. Eng.
THE RESEARCH OF THE VISION
ALGORITHM AND INTELLIGENT
CONTROL SOFTWARE FOR CHESS
ROBOT
Candidate:Xu Fenglei
Supervisor:Associate Prof. Gao Yunfeng Academic Degree Applied for:Master of Engineering Specialty:Mechatronics Engineering Affiliation:School of Mechatronics Engineering Date of Defence:June, 2006
Degree-Conferring-Institution:Harbin Institute of Technology
哈尔滨工业大学工学硕士学位论文
摘要
机器人技术综合了人工智能、模式识别、机构学和仿生学等多个学科。
随着机器人技术的发展,机器人的功能越来越丰富,娱乐机器人的研究已经成为一个重要的方向。
象棋机器人是娱乐机器人的一种。
本文基于图像处理技术、人工智能和计算机技术,设计并实现了象棋机器人的视觉和智能控制软件。
机器人视觉是一个图像处理分析过程,本文利用当前常用图像预处理方法,对彩色图像进行了灰度转换、阈值分割,实现其二值化。
对二值化图像进行细线化,去除无关信息和减少后期参与运算的图像数据。
然后使用交叉点检测、坐标修正、轮廓提取、最大面积法等方法,对二值图像进行分析,得出棋子位置。
最后对棋子身份进行了逻辑判别。
在机器人棋步产生部分的设计中,根据一般博弈程序的构成部分,设计实现了棋盘数据格式、走法规则、走法产生算法、估值算法、搜索算法,其中搜索算法部分重点介绍了负极大值、Alpha-Beta搜索算法的原理与实现。
设计了机器人的控制软件结构,包括主界面显示、参数设置、摄像头调整、搜索引擎添加管理等功能,同时将视觉部分与棋步产生部分有机的融合到软件中。
设计了搜索引擎的开发接口与协议,使软件具有良好的开放性。
最后本文利用相关硬件设备,进行了视觉部分、棋步产生部分和整个系统的试验,验证了算法的有效性和可靠性。
关键词象棋机器人;机器人视觉;图像分析;搜索算法
- I -
哈尔滨工业大学工学硕士学位论文
Abstract
The technology of robot integrates artificial intelligence, pattern recognition, mechanics, bionics and so on. With the development of robot, its functions are more and more rich. The study of entertaining robot already becomes a very important direction. Chess robot is one of the entertaining robots. This paper based on image processing, artificial intelligence and computer technology, designs and realizes the vision and knowledgeware of chess robot.
The robot vision is an image processing and analysis process. This paper using the common method of image fore processing currently, transforms the colorized image to gray and makes it only tow values by a critical point threshold. The method of thinning is applied to this worked image in order to remove unnecessary information and reduce the image data that could be computed later. Then by the methods that detecting the crossings, modifying the coordinates, making contour, searching for the largest area and so on, the worked image is analysed and the chessman's coordinates are gained. The chessman's identities are distinguished using logistic method.
In the design of creating chessman's moves, the format of chessboard data, the rules of move, the algorithm of creating move , the evaluation algorithm and the search algorithm are designed based on the structure of chess game. The searches of negative max algorithm and Alpha-Beta algorithm are introduced detailedly and realized.
Designing the structure of knowledgeware for robot. It includes the main interface, the functions of parameter setting, vidicon administration and adding and administering searches. The vision and the part of creating chessman's moves are also integrated into this knowledgeware organically. Designing the interface keywords and agreements for developping the search that makes the knowledgeware have opening quality.
Finally, this paper does experiments about the part of vision, creating chessman's moves and the whole systerm, validates validity and reliability of the algorithm.
Keywords Chess robot,robot vision,image analysis,search algorithm
- II -
哈尔滨工业大学工学硕士学位论文
目录
摘要 (I)
Abstract (II)
第1章绪论 (1)
1.1 课题来源及研究的目的和意义 (1)
1.2 国内外相关课题综述 (1)
1.2.1 象棋机器人的研究现状综述 (1)
1.2.2 机器人视觉 (3)
1.2.3 象棋软件现状综述 (4)
1.3 课题研究的内容 (4)
第2章机器人视觉算法研究 (6)
2.1 图像处理基础 (6)
2.1.1 RGB颜色模型 (6)
2.1.2 灰度图 (7)
2.2 图像预处理 (7)
2.2.1 阈值分割 (7)
2.2.2 细化处理 (8)
2.2.3 图像预处理实验 (9)
2.3 目标的检测 (9)
2.3.1 基本原理 (9)
2.3.2 基于投影法的交叉点检测 (10)
2.4 目标的识别与分析 (12)
2.4.1 轮廓跟踪 (12)
2.4.2 基于轮廓跟踪的有无棋子判别 (13)
2.4.3 最大区域面积法 (14)
2.4.4 获得棋子数据 (16)
2.4.5 获得棋盘布局 (17)
2.5 系统性能优化 (19)
2.5.1 细化算法改进 (19)
2.5.2 坐标修正 (19)
- III -
哈尔滨工业大学工学硕士学位论文
2.6 机器人视觉模块实现 (22)
2.6.1 学习模式 (22)
2.6.2 工作模式 (23)
2.7 本章小结 (25)
第3章象棋机器人棋步算法设计 (26)
3.1 引言 (26)
3.2 棋步产生算法设计 (26)
3.2.1 棋盘表示 (26)
3.2.2 棋步规则 (28)
3.2.3 走法产生器 (29)
3.2.4 估值器 (31)
3.2.5 搜索引擎 (34)
3.2.6 算法实现 (37)
3.3 本章小结 (38)
第4章象棋机器人智能软件设计及试验 (40)
4.1 象棋机器人智能软件原理 (40)
4.2 系统硬件和软件构成 (41)
4.2.1 硬件 (41)
4.2.2 软件构成 (41)
4.3 系统试验 (44)
4.3.1 视觉部分试验 (44)
4.3.2 棋步产生部分试验 (45)
4.3.3 控制软件试验 (46)
4.4 本章小结 (47)
结论 (48)
参考文献 (49)
附录1部分源代码 (52)
附录2搜索引擎开发接口说明 (55)
哈尔滨工业大学硕士学位论文原创性声明 (59)
哈尔滨工业大学硕士学位论文使用授权书 (59)
哈尔滨工业大学硕士学位涉密论文管理 (59)
致谢 (60)
- IV -
哈尔滨工业大学工学硕士学位论文
第1章绪论
1.1课题来源及研究的目的和意义
本课题来源于展览馆的展品项目。
机器人技术是综合了计算机、控制论、机构学、信息和传感技术、人工智能、仿生学等多学科而形成的高新技术,是当代研究十分活跃,应用日益广泛的领域。
机器人的广泛应用,可减轻工人的劳动强度;提高劳动生产率和产品质量;降低生产成本;并可用于危险和恶劣环境下的特殊作业,因而世界上许多国家都将其列入高新技术发展计划。
未来的数字家庭中,机器人将是主宰者。
分析人士指出,随着技术进步以及市场空间的扩大,机器人的价格也将像PC产业一样迅速下降[1]。
将来,一台像C-3PO 一样的智能机器人的普及价格将控制在2 万到3 万美元之间。
未来,机器人也将出现功能上的细化,根据不同的功用,未来机器人可以分为如下几种类型:娱乐机器人、应用机器人、不动机器人、移动助理机器人、类人机器人等。
其中娱乐机器人可以为你解除精神上的疲劳。
本课题所研究的象棋机器人是娱乐机器人的一种,它不仅可以给人们带来快乐,而且可以向观众展示高科技的魅力,使人们对机器人不再陌生。
1.2国内外相关课题综述
1.2.1象棋机器人的研究现状综述
1997 年,IBM 公司的超级计算机“深蓝”与当时的国际象棋世界冠军卡斯帕罗夫进行了一场大肆渲染的比赛。
这次被卡斯帕罗夫称作“终于来临的一天”的比赛以卡氏的失败而告终。
IBM 公司将“深蓝”的获胜称作是人工智能领域的一个里程碑。
并且这场比赛取得的宣传效果好得出奇,大概没有多少人不知道“深蓝”了;而卡斯帕罗夫虽败尤荣,无数对国际象棋一无所知的人们因此知道了卡氏的大名。
- 1 -
哈尔滨工业大学工学硕士学位论文
- 2 -
图1-1 计算机“深蓝”
Fig.1-1 Computer ‘Deep blue’
在国内,很多公司也开展象棋机器人的研究工作,如在2003年9月12日第六届中国北京国际科博会上,首钢集团展出了自己的一台象棋机器人。
中国的博弈机器人“猜想”出自长沙雅礼中学四名初中生之手,在与人进行五子棋对弈时能够自动完成看棋,算棋,取子下棋的全过程。
这四名学生在老师的带领下分别负责机械,总控,视觉,算法部分的实现,使用Visual Basic 6.0为统一的编程语言。
图1-2 首钢集团的象棋机器人
Fig.1-2 The chess robot of Shougang Group
哈尔滨工业大学工学硕士学位论文
1.2.2机器人视觉
机器视觉自起步发展到现在,已有15年的发展历史。
应该说机器视觉作为一种应用系统,其功能特点是随着工业自动化的发展而逐渐完善和发展的。
在国外,机器视觉的应用普及主要体现在半导体及电子行业,其中大概40%~50%都集中在半导体行业。
具体如PCB印刷电路:各类生产印刷电路板组装技术、设备;单、双面、多层线路板,覆铜板及所需的材料及辅料;辅助设施以及耗材、油墨、药水药剂、配件;电子封装技术与设备;丝网印刷设备及丝网周边材料等。
而在中国,以上行业本身就属于新兴的领域,再加之机器视觉产品技术的普及不够,导致以上各行业的应用几乎空白,即便是有,也只是低端方面的应用。
目前在我国随着配套基础建设的完善、技术、资金的积累,各行各业对采用图像和机器视觉技术的工业自动化、智能需求开始广泛出现,国内有关大专院校、研究所和企业近两年在图像和机器视觉技术领域进行了积极思索和大胆的尝试,逐步开始了工业现场的应用[2]。
机器视觉系统是指通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。
图1-3[3]是一个完整的图像处理与分析识别过程,从中我们可以看到视觉是多学科领域,它集数学、计算机、人工智能、神经网络、模糊理论等于一身,综合各个学科知识,实现机器人与环境的交互。
图1-3 图像工程整体框架
Fig.1-3 The holistic framework of image engineering
- 3 -
哈尔滨工业大学工学硕士学位论文
1.2.3象棋软件现状综述
本机器人的控制软件核心部分是象棋棋步的产生算法。
经过近二十年人工智能专家们的不断努力,象棋这一古老的国粹得到了蓬勃发展。
特别是近几年,这一领域的产品不仅成为娱乐的工具,也步入了与人类一争高下的水平。
目前,象棋软件大部分都是基于搜索算法(极大极小值算法[4]、Alpha-Beta搜索[5,6]、SSS" /DUAL"算法[7]、深度优先搜索[8,44]、置换表[9]等)来完成下棋过程的,随着研究的深入和计算机运算速度的加快,以及开局库、中局库和残局库相应的融入到软件中,使得软件的棋力已经大大加强,比如象棋奇兵、楚汉棋缘、中国象棋大师、棋隐等等都是很优秀的象棋软件,其中楚汉棋缘最为出名,具有很强的智力,有入门、初、中和高级选择,通过段位赛取得和高级别对手对战的权利!
图1-4 楚汉棋缘
Fig.1-4 The rivalry between Chu and Han
1.3课题研究的内容
本课题的主要内容是开发象棋机器人的视觉处理和智能化控制软件,实现机器人对棋盘棋子坐标的标定和身份识别,并将其送到智能软件,通过智能软件智能化分析,给出下一步走法、然后将坐标信息送到机械控制装置。
机器人的工作流程如图1-5所示。
- 4 -
哈尔滨工业大学工学硕士学位论文
- 5 -
图1-5 机器人工作流程
Fig.1-5 The work flow of the robot
本系统是在Windows XP 操作系统下用VC++6.0开发。
在开发过程中,需要完成的任务如下:
1) 机器人视觉实现
机器人获取当前棋盘局面离不开机器人视觉,因此视觉是本课题的关键部分之一。
本机器人对准确性要求很高,因此需要考虑多方面因素,提高识别的准确率。
2) 机器人棋步产生算法设计
机器人的智化水平决定了它的下棋水平,因此具有一个优秀的棋步产生算法就像一个拥有聪明大脑的人。
本算法运用当前流行的人工智能算法,初步实现下棋功能。
3) 机器人显示与控制软件设计
机器人的好与坏不仅仅取决于它完成某一任务的快速性、准确性和稳定性,还取决于它是否便于操作和是否有一个友善的界面。
作为一个象棋机器人,它将要面向的对象是普通的观众,需要通俗化的界面,同时需要良好的开放性,便于使用者的二次开发,因此我们有必要设计一个友好的人机界面,同时兼有控制和协调其他模块的功能。
哈尔滨工业大学工学硕士学位论文
- 6 -
第2章 机器人视觉算法研究
2.1 图像处理基础
数字图像处理[10]的英文名称是“Digital Image Processing ”。
通常所说的数字图像处理是指用计算机进行的处理,因此也称为计算机图像处理(Computer Image Processing)。
总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、模式识别等[11]。
2.1.1 RGB 颜色模型
我们知道,可见光的波长分布在380nm 到780nm 之间,人的颜色感觉是不同波长的可见光刺激人的视觉器官的结果。
在可见光的波段内,随着波长的增长,使人产生紫、蓝、青、绿、黄、橙、红等颜色的感觉。
为了解释视觉对颜色的感知能力,美国物理学家T .Young 1801年提出三色假说,后来由Helmholtz 加以发展,形成著名的Young-Helmholtz 三色学说。
三色假说的中心内容是:假设有三种视觉(锥体)感受器,分别对红、绿、蓝三种颜色敏感;当光线同时作用在这三种感受器上时,三个感受器产生的兴奋程度不同;不同兴奋程度的组合将产生不同的颜色感觉,三种感受器处于等强度兴奋时,便产生白色的感觉[12]。
现代技术的发展充分证实了三色假说的合理性。
实践证明,光谱上的大多数颜色都可以用红(Red)、绿(Green)、蓝(Blue)三种单色加权混合产生,基于RGB 三基色的颜色表示称为RGB 颜色模型(图 2-1)。
图 2-1 RGB 颜色模型立方体
Fig. 2-1 RGB Color Model Cube
哈尔滨工业大学工学硕士学位论文
- 7 -
RGB 颜色模型在工业中得到了广泛的应用,如视频监视器显示用的是RGB 颜色模型,彩色摄象机输出用的是RGB 彩色模型。
2.1.2 灰度图
灰度图是指只含亮度信息,不含色彩信息的图像,就像我们平时看到的黑白照片,亮度变化是连续的。
因此,要表示灰度图,就要把亮度值进行量化,通常划分成0~255共256个级别,0最暗(全黑),255最亮(全白)[11]。
工程应用中经常要遇到需要把彩色图像到灰度图像的变换的问题,采集卡过来的图像为彩色图像,为加快处理速度,要把彩色图像转换为黑白图象。
一般情况下彩色图像每个像素用三个字节表示,每个字节对应着R 、G 、B 分量的亮度(红、绿、蓝),转换后的黑白图像的一个像素用一个字节表示该点的灰度值,它的值在0~255之间,数值越大,该点越白,既越亮,越小则越黑。
转换公式为
),(3.0),(59.0),(11.0),(j i B j i G j i R j i Gray ∗+∗+∗= (2-1)
式中 ),(j i Gray —— 转换后的黑白图像在),(j i 点处的灰度值
2.2 图像预处理
图像处理是主要为了满足对图像进行各种加工以改善图像的视觉效果并为自动识别打下基础,或对图像进行压缩编码以减少所需要的存储空间和传输 时间、传输通路的要求。
图像分析则主要是对图像中感兴趣的目标进行检测和测量,以获得它们的客观信息从而建立对图像的描述。
如果说图像处理是一个从图像到图像的过程,则图像分析是一个从图像到数据的过程[13]。
2.2.1 阈值分割
在介绍此方法之前,我们先来了解二值化的含义。
二值化处理是一种灰度处理。
设定某一阈值T ,用T 将图像数据分成两大部分:大于T 的像素群和小于T 的像素群[14]。
程序将灰度大于给定阈值T 的点变成白点(255),另外的点变为黑点(0)。
图像经处理后变为一位的只有黑白二色的二值图像。
二值化操作将使某些信息丢失,但是却是处理的不可缺少的步骤。
255{=f(x) T x T x <≥ (2-2)
哈尔滨工业大学工学硕士学位论文
- 8 - 阈值分割[15]的目的就是找出最佳分割阈值T ,将图像二值化,以获得我们所需要的信息。
这一算法的步骤如下:
1) 求出图像中的最小和最大灰度值1Z 和k Z ,令阈值初值为
2
10k Z Z T += (2-3) 2) 根据阈值k T 将图像分割成目标和背景两部分,求出两部分的平均灰度值
o Z 和B Z :
∑∑<<×=k k T j i z T j i z o j i N j i N j i z Z ),(),()
,()
,(),( (2-4) ∑∑>>×=k
k T j i z T j i z B j i N j i N j i z Z ),(),(),(),(),( (2-5)
式中 ),(j i Z ——图像上),(j i 点的灰度值;
),(j i N ——),(j i 点的权重系数,一般0.1),(=j i N
3) 求出新阈值:
2
1B o K Z Z T +=+ (2-6) 4) 如果1+=K K T T ,则结束,否则1+←K K ,转步2) 。
2.2.2 细化处理
细化是对图像抽取骨架的过程,一个图像的“骨架”,是指图像中央的骨貉部分[11]。
在文字识别、地质构造识别、工业零件形状识别或图像理解中,先对被处理的图像进行细化有助于突出形状特点和减少冗余的信息量。
经典迭代算法是由Hilditch [16]提出的,主要思想是循环扫描图像上的每个像素删除满足一定条件的像素(置值为0)直到没有像素删除为止。
一幅图像中的一个33×区域,对各点标记名称1P ,2P ,...8P ,其中1P 位于中心。
如果1P =1(即黑点),下向四个条件如果同时满足,则删除1P (1P =0)。
(2-7) (2-8) (2-9) (2-10)
对图像中的每一个点重复这一步骤,直到所有点都不可删除为止。
6
)(21≤≤P NZ 1
)(01=P Z 1
)(Z00**4642≠=P P P P 或者1
)(Z00**2842≠=P P P P 或者
哈尔滨工业大学工学硕士学位论文
- 9 -
2.2.3 图像预处理实验
对于一副由采集设备采集的图像,经过灰度转换,每一个像素就是一个0~255的数值,数据量也比真彩色减少了三分之二。
采用阈值分割算法,获得如下图像,可以看出,处理后的图像有效的保存了棋子与棋盘线的信息,达到处理的要求。
由于在后续处理中直接对图像进行点运算,所以需要减少干扰和运算量,对于棋子和棋盘线,对其细线化,抽取其骨架,从而减少数据量和噪声干扰,处理后如图2-2所示。
从图2-2中明显可以看出,在图像信息没有丢失的情况下,有效地减少了需要处理的数据量,从而提高了后续处理的速度。
a) 原始彩色图像 b) 灰度转换 c) 阈值分割 d) 细化处理
图2-2 图像处理实验
Fig.2-2 Image processing experiment 2.3 目标的检测
对于预处理过的图像,只包含棋子和棋盘线,目标检测的意义在于寻找到棋盘线交叉点,并标定其坐标。
2.3.1 基本原理
经过对细线化后的图像的分析,我们可以发现它是由直线、圆和文字区组成,根据这些特点,我们设计的第一种方法是采用Hough [17]变换的方式找出其中的的全部直线[18],然后设计相关算法找到109×个相交点,但是经过实践检验,Hough 变换容易受到文字区域的影响,从而出现噪声直线,而且计算速度也不令人满意,所以这种方法不适合。
在二值图像的目标检测中,最快的检测算法就是投影法[19]。
投影法的原理
哈尔滨工业大学工学硕士学位论文
- 10 -
比较简单,将图像在水平方向上投影,只需从上至下逐行(象素)扫描图像,记录每一行的黑点数量即可[20]。
应用投影法对图2-2 d)进行水平投影可以得到如下分布,图2-3 中的黑线代表每一行上的黑点数量,图中的高峰部分就是我们要找的水平棋盘线的位置,所以只要找出高峰部分的位置,那棋盘的纵坐标就可以标定出来。
图2-3 水平投影法
Fig.2-3 The method of horizontal projection 2.3.2 基于投影法的交叉点检测
根据上面所述的投影法为基础,设计出纵坐标的产生策略,具体方法如下:
1) 定义记录坐标点的数组dis[10];定义记录水平上每一行的黑点数量和
其坐标的数组ptempdata[2][height](ptempdata[0][height]记录坐标点,ptempdata[1][height]记录黑点数量);
2) 扫描每一行,计算黑点数量,保存在ptempdata 中,并记录相应坐标,
为了减少后面的计算量,设定一阈值,小于此值的数舍弃,记录数据数量count ;
3) 对count 个数冒泡排序(从大到小);
4) 获得第一个坐标dis[0]=ptempdata[0][0](即得到黑点最多的行坐标),
以这个坐标为基准,第二数据ptempdata[0][1]与其比较,满足大于(height/15)则视为合格坐标,否则继续比较第三数据ptempdata[0][2],直至找到第二个坐标dis[1],之后所有数据与前面已找到坐标进行比较,全部满足(height/15)则记录在dis 中,寻找到10个点后结束;
5) 对dis 冒泡排序,为后续处理准备。
哈尔滨工业大学工学硕士学位论文
- 11 -
经过上述计算,我们可以获得棋盘的10个纵坐标,处理过程中经过多幅图像的实验,我们遇到不能找到10个合格坐标的问题,对此我们在舍弃无用点时采用动态阈值的方式解决了这个问题。
在获得纵坐标的基础上,根据同样原理设计出了获得横坐标的方法。
但是由于视角的原因,图像发生形状变化,对整幅图像进行垂直投影后如图2-4 a)所示,图象噪声很大,而且因为每一行的横坐标是不一样的,所以只能分块进行图像垂直投影,分割点选在两个纵坐标的中间,投影后如图2-4 b)所示。
a) 整体投影 b)部分投影
图2-4 垂直投影法
Fig.2-4 The method of vertical projection
图2-5 坐标示意图
Fig.2-5 The sketch map of coordinates
哈尔滨工业大学工学硕士学位论文
- 12 -
综合上述两种方法,棋盘线交叉点的坐标检测策略如下:
1) 对图像水平投影,产生水平纵坐标,保存于hlinedis [10];
2) 根据水平纵坐标,对图像自下而上分割成高度为
2/])[]1[(j hlinedis j hlinedis −+的块;
3) 对每一块进行垂直投影,并获得横坐标,保存于vlinedis [9]。
运用上面方法,对图2-3进行检测,结果如图2-5所示,可以看出上面方法基本上识别出所有的坐标点。
2.4 目标的识别与分析
目标的识别是根据目标的某些特征,从图像中获得其大小、位置等信息的过程。
在本课题中,通过目标检测,可以获得棋盘交叉点的坐标,在这个基础上,可以进一步检测坐标点上是否有棋子。
2.4.1 轮廓跟踪
轮廓跟踪的基本方法是:先根据某些严格的“探测准则”找出目标物体轮廓上的像素,再根据这些像素的某些特征用一定的“跟踪准则”找出目标物体上的其它像素[21]。
首先按照从左到右,从下到上的顺序搜索,找到的第一个黑点,它—定是最左下方的边界点,以这个边界点起始,假设已经沿顺时针方向环绕整个图像一圈找到了所有的边界点。
由于边界是连续的,所以每一个边界点都可以用这个边界点对前一个边界点所张的角度来表示。
因此可以使用下面的跟踪准则:从第—个边界点开始(如图2-6所示),定义初始的搜索方向沿左上方;如果
图2-6 轮廓提取示意图
Fig.2-6 The sketch map of making contour
哈尔滨工业大学工学硕士学位论文
- 13 - 左上方的点是黑点,则为边界点,否则搜索方向顺时针旋转45度。
这样一直到找到第一个黑点为止。
然后把这个黑点作为新的边界点,在当前搜索方向的基础上逆时针旋转90度,继续用同样的方法继续搜索下一个黑点,直到返回最初的边界点为止[22]。
2.4.2 基于轮廓跟踪的有无棋子判别
对于坐标点已经被标记好的棋盘图像,按照坐标点分割图像是非常容易的,如图2-7所示,图象被分割成90个小区域。
图2-7 棋盘图像分割
Fig.2-7 The segmentation of chessboard image
对于每一个小区域,运用轮廓跟踪获得棋子外圆,如果能够成功获得外圆,则说明有棋子,此方法运算速度较快,缺点是只能寻找封闭曲线,不能跟踪其他曲线,而且容易受干扰,得出错误结论。
图2-8是圆轮廓提取示意图。
虽然轮廓跟踪基本上满足处理要求,但在实际处理中,出现了一些问题,
哈尔滨工业大学工学硕士学位论文
- 14 -
因此针对本课题,对其进行了优化:
边界处理——对于轮廓数据区是图像数据区的边界,此时会出现越界现象,通过对边界进行判断,解决了越界问题。
孤立点处理——由于轮廓跟踪是循环扫描,从起始点出发,直到回到起始点为止,因此孤立点会被误判为轮廓。
图2-8 轮廓提取
Fig.2-8 Trace contour
2.4.3 最大区域面积法
由于二值化的局限性,不可能每一次阈值的选取都能达要求。
如果出现圆轮廓不连续的情况,我们就无法采用轮廓提取得方式来确定此点是否有棋子,只能采用其他的方法。
经过观察,发现棋子存在的区域的黑点密度明显高于其他区域,故可以采用寻找最大区域面积的方式来判断有无棋子,如图2-9所示,程序流程如图2-10所示。
图2-9 寻找最大面积
Fig.2-9 Searching for the largest area。