基于图像处理的象棋棋盘识别
- 格式:doc
- 大小:493.00 KB
- 文档页数:6
halcon棋盘格标定方法
Halcon棋盘格标定是非常流行的图像标定方法。
原理是检测图像中的棋盘格角点,并估计姿势参数相机内参和外参,从而实现三维空间点和二维图像点之间的映射,识别三维物体的形状和位置。
使用Halcon可以使棋盘格标定过程变得更加容易和便捷。
Halcon的棋盘格标定实现大致可分为以下几步:
1. 确定棋盘格大小:确定棋盘格的大小是棋盘格检测的第一步,使用者需要指定曲面上每一行和每一列的棋盘格的个数,这个参数将在棋盘格检测时使用。
2. 棋盘格检测:使用halcon的函数
find_checkerboard_corners()可以根据棋盘格参数检测棋盘格角点,返回棋盘格角点像素坐标。
3. 姿势估计:使用halcon的函数pose_ransac_single_greed()即可对棋盘格角点和已知实际坐标点进行姿势估计,估计出内参矩阵和外参矩阵。
4. 标定结果验证:使用halcon的函数pose_ms_error()可以根据估计出来的内参外参矩阵来计算实际坐标点和棋盘格像素坐标点的误差和拟合度,来验证标定的结果。
通过Halcon的棋盘格标定方法,可以轻松快捷地估计出相机的内参和外参,从而开启机器视觉的应用。
visionpro calibcheckerboardtool原理VisionProCalibCheckerboardTool是一种常用的视觉测量工具,用于机器人定位和环境建模。
该工具基于计算机视觉原理,通过检测棋盘格(checkerboard)图像的特征点,进行机器人位姿估计和环境建模。
本文将介绍VisionProCalibCheckerboardTool的原理,包括其工作流程、算法实现和关键技术。
一、工作流程1.图像采集:使用高分辨率相机采集棋盘格图像。
相机标定后,可以通过软件提供的标定板进行校准。
2.特征提取:对采集到的棋盘格图像进行处理,提取其中的特征点。
这些特征点通常包括棋盘格上的黑白格子、角点等。
3.匹配与配准:将提取的特征点与已知的棋盘格模板进行匹配,通过配准算法将图像对齐。
4.位姿估计:根据匹配的特征点,利用机器人运动学模型进行位姿估计,得到机器人当前位置和姿态。
5.环境建模:将机器人位姿信息与环境地图进行融合,构建出精确的环境模型。
二、算法实现VisionProCalibCheckerboardTool采用了一种基于特征匹配的算法,通过寻找图像中的特征点,并利用这些特征点之间的相对位置关系,估计机器人位姿。
该算法的实现主要包括以下几个关键步骤:1.特征检测:使用计算机视觉算法检测棋盘格图像中的特征点,如角点等。
2.特征匹配:将检测到的特征点与已知的棋盘格模板进行匹配,生成特征匹配对。
3.位姿估计:利用机器人运动学模型,结合特征匹配对,估计机器人位姿。
该算法通常采用基于光度立体视觉的方法,通过立体视觉获取深度信息,提高位姿估计的精度。
4.环境建模:将机器人位姿信息与环境地图进行融合,构建出精确的环境模型。
通常采用基于栅格的方法,将环境空间划分为栅格单元,并将机器人位姿信息映射到栅格单元中。
三、关键技术VisionProCalibCheckerboardTool涉及到多个关键技术,包括但不限于以下几个方面:1.相机标定与校准:通过标定板对相机进行标定和校准,确保相机成像的准确性。
棋盘格标定原理在计算机视觉领域中,棋盘格标定是一种常见的相机标定方法。
相机标定是指通过计算机视觉技术,将相机的内参和外参参数计算出来,以便于后续的三维重建、目标跟踪、图像处理等应用。
而棋盘格标定是其中一种比较简单的方法,它的原理就是利用了棋盘格在三维坐标系中具有规则的特征。
棋盘格标定的过程分为两个步骤:棋盘格图像提取和相机参数计算。
首先需要准备一张棋盘格的图片,然后通过相机拍摄这张图片,并将其保存下来。
接着,就可以进入到第一个步骤——棋盘格图像提取。
棋盘格图像提取棋盘格图像提取的目的是获取图像中棋盘格的角点坐标。
在这个过程中,需要通过一些图像处理技术来提取角点坐标,包括灰度变换、图像平滑、边缘检测等。
需要将图像转换成灰度图像,这样可以简化后续的图像处理操作。
接着,需要对图像进行平滑处理,以去除图像中的噪声。
常用的平滑方法包括高斯滤波、中值滤波等。
然后,需要对图像进行边缘检测,以便于找到角点坐标。
在这个过程中,可以使用一些经典的边缘检测算法,如Sobel算子、Canny算子等。
当图像中的角点坐标被提取出来后,就可以进入到第二个步骤——相机参数计算。
相机参数计算相机参数计算的目的是通过提取出来的角点坐标,来计算相机的内参和外参参数。
内参参数包括相机的焦距、光心等,而外参参数包括相机的旋转矩阵、平移矩阵等。
在计算相机内参参数时,需要利用棋盘格在三维坐标系中的坐标信息。
通过测量棋盘格的边长和格子数量,可以计算出棋盘格在三维坐标系中的坐标。
然后,利用相机拍摄的图片和提取出来的角点坐标,可以建立像素坐标和三维坐标之间的对应关系,进而求解相机的内参参数。
在计算相机外参参数时,需要利用棋盘格在三维坐标系中的坐标信息和相机拍摄的图片中的角点坐标。
通过求解像素坐标和三维坐标之间的对应关系,可以得到相机的旋转矩阵和平移矩阵,即相机的外参参数。
总结棋盘格标定是一种常用的相机标定方法,它的原理是利用了棋盘格在三维坐标系中具有规则的特征。
象棋机器人棋子定位和身份判定方法赵融;韩燮;郭晓霞【摘要】针对象棋机器人系统中棋子定位过程烦琐、误差大及通过文字识别棋子的算法复杂度高的问题,提出一种基于图像处理的棋子定位和高度测量方法;以及棋子身份判定算法.首先,根据文字的颜色特征分割棋子并对二值图像做线性融合和膨胀运算;通过绘制轮廓外接圆定位棋子.然后,匹配RGB与RGB-D图像结合数学模型,测量棋子高度.其次,用数字编码定义棋子身份并实时判定.最后,结果表明,方法的棋子分割正确率100%,定位误差0.51 mm,平均定位时间0.212 s.高度测量误差1 mm.单流程棋子身份判定算法和系统运行时间分别为9 ms和0.224 s、可见方法的有效性和实用性.【期刊名称】《科学技术与工程》【年(卷),期】2018(018)035【总页数】8页(P50-57)【关键词】图像处理;图像匹配;棋子定位;高度测量;身份判定【作者】赵融;韩燮;郭晓霞【作者单位】中北大学计算机科学与技术学院,太原030051;中北大学计算机科学与技术学院,太原030051;中北大学计算机科学与技术学院,太原030051【正文语种】中文【中图分类】TP242.62随着人工智能技术的迅速发展,人与机器人象棋对弈系统的研究得到了很大的进展,智能化程度不断提高。
人与机器人对弈系统通常由四个模块组成:图像处理模块,定位棋子;模式识别模块,识别棋子身份;人工智能模块,决定走棋策略;控制模块,控制机器人手臂的抓取。
人机对弈系统中,棋子的定位方法分为非视觉和视觉。
非视觉方法是利用特制的电子棋盘[1—3]定位和识别棋子;视觉方法是通过图像处理定位棋子。
Piskorec等[4],Matuszek等[5]运用Harris或SUSAN角点检测等算法检测棋盘的角点,并剔除假角,再应用图像减法,对棋子进行分割和定位;上述方法的优点是对摄像机失真的容忍度高。
但是,在中国象棋中,棋盘角点被棋子遮挡,增加了检测难度。
中国象棋自动打谱方法研究中国象棋是一种源远流长的棋类游戏,在中国乃至国际上享有广泛的普及度和影响力。
随着计算机技术的不断发展,人工智能领域的进步也为象棋的自动打谱提供了更多可能。
本文将探讨中国象棋自动打谱的方法研究。
一、自动打谱的意义自动打谱是指利用计算机等工具自动记录并保存象棋棋局的过程。
传统的打谱方式需要人工记录和保存,但是随着时间的推移,这些打谱往往容易丢失或无法查询。
而自动打谱的方法可以将实际对局的棋谱准确地保存下来,便于后续的复盘与研究。
此外,自动打谱的方法还可以与人工智能相结合,进行象棋棋局的学习与推演,提高象棋水平。
二、自动打谱的技术实现1. 图像识别技术自动打谱需要将实际的棋局图像转化为可供计算机识别和保存的数据。
图像识别技术可以利用计算机视觉的算法,将象棋棋盘和棋子的位置进行准确的识别和标注。
利用图像处理的方法,可以对棋盘上的棋子进行定位和分类,进而实现棋谱的自动生成。
2. 棋力评估算法除了记录棋谱,自动打谱的方法还可以结合棋力评估算法,对棋局进行一系列的分析和推演。
棋力评估算法可以利用机器学习等方法,对不同的棋局进行评分,判断当前局面的优势和劣势,从而指导下一步的走棋策略。
3. 数据库存储自动打谱生成的棋局数据需要进行有效的存储和管理。
可以利用数据库的方法,将棋谱保存为结构化的数据,便于后续的检索和查询。
同时,合理的数据库设计还可以提高查询效率,并提供更多的功能,如开展棋局分析、对弈记录回放等。
三、自动打谱的应用领域1. 象棋教学和普及自动打谱的方法可以应用于象棋教学和普及领域。
通过记录和保存大量的棋谱,可以方便教师和学生进行对局的复盘和分析,提高学生的战术意识和策略水平。
同时,利用自动打谱生成的棋谱数据,可以开展大规模的象棋普及活动,吸引更多人参与到象棋的学习和推广中来。
2. 人工智能研究自动打谱的方法结合人工智能技术,可以进行象棋棋局的学习和推演。
通过大数据的分析和模型的训练,可以提高计算机在象棋对局中的棋力水平,挑战人类棋手的优势。
《基于棋盘格和圆标定物的双目相机标定方法研究》篇一一、引言在三维重建、机器视觉、立体测量等领域中,双目立体视觉技术具有重要地位。
而为了获得高精度的双目视觉系统,准确的相机标定是必不可少的步骤。
本文旨在研究基于棋盘格和圆标定物的双目相机标定方法,通过分析棋盘格和圆标定物的特点,结合双目相机的成像原理,提出一种高效、准确的标定方法。
二、相关技术背景2.1 棋盘格标定法棋盘格标定法是计算机视觉中常用的一种相机标定方法。
该方法通过拍摄包含棋盘格的图像,并检测棋盘格的角点位置来获得相机的内参和外参。
由于棋盘格具有明显的特征点,易于被检测和定位,因此该方法具有较高的精度和稳定性。
2.2 圆标定物法圆标定物法是一种基于圆特征的相机标定方法。
该方法通过拍摄包含圆标定物的图像,并检测出圆心位置来获得相机的参数。
与棋盘格相比,圆标定物具有更好的旋转不变性和尺度不变性,能够更好地适应不同的拍摄环境和角度。
三、基于棋盘格和圆标定物的双目相机标定方法3.1 棋盘格与圆标定物的结合本文将棋盘格和圆标定物相结合,提出一种新的双目相机标定方法。
该方法首先利用棋盘格标定法获取相机的初始参数,然后通过拍摄包含圆标定物的图像,利用圆心位置对相机参数进行进一步优化。
3.2 标定过程(1)准备阶段:制作棋盘格和圆标定物,并将其放置在双目相机的视野范围内。
(2)拍摄阶段:分别拍摄包含棋盘格和圆标定物的图像,并确保图像清晰、无畸变。
(3)角点与圆心检测:利用计算机视觉算法检测棋盘格的角点位置和圆标定物的圆心位置。
(4)参数估计:根据检测到的角点和圆心位置,利用相机成像原理和双目立体视觉技术,估计相机的内外参数。
(5)参数优化:利用非线性优化算法对相机参数进行优化,以提高标定的精度和稳定性。
四、实验与分析为了验证本文提出的基于棋盘格和圆标定物的双目相机标定方法的可行性和有效性,我们进行了大量的实验和分析。
实验结果表明,该方法能够有效地提高双目视觉系统的精度和稳定性,具有较高的实用价值。
军棋自动识别大小机器原理军棋是一种棋类游戏,它模拟了战场上的军队对战情景。
而军棋自动识别大小机器是指利用计算机视觉技术,使计算机能够自动识别军棋中的棋子大小和位置,并进行相应的处理和分析。
本文将介绍军棋自动识别大小机器的原理和实现方法。
一、军棋自动识别大小机器的原理军棋自动识别大小机器的原理主要包括图像采集、图像处理和决策三个步骤。
1. 图像采集:通过摄像头或者其他图像采集设备获取军棋棋盘上的图像。
在采集图像时,需要注意摄像头的位置和角度,以保证图像清晰度和准确性。
2. 图像处理:对采集到的图像进行处理,提取出棋盘和棋子的信息。
首先,需要对图像进行预处理,包括图像去噪、图像增强等操作,以提高图像的质量。
然后,通过图像分割技术将棋盘和棋子分开,并提取出棋子的特征。
最后,利用图像识别算法对棋子进行分类和识别,确定棋子的类型和位置。
3. 决策:根据识别到的棋子信息,计算机可以进行相应的决策。
例如,可以根据棋子的位置和类型,判断是否可以进行移动或攻击,并根据游戏规则进行相应的操作。
同时,计算机也可以根据棋盘上的局势进行分析和推理,帮助玩家制定最优的策略。
二、军棋自动识别大小机器的实现方法军棋自动识别大小机器的实现方法主要包括图像处理算法和机器学习算法两个方面。
1. 图像处理算法:图像处理算法是军棋自动识别大小机器的基础,它能够对图像进行分析和处理,提取出所需的信息。
常用的图像处理算法包括边缘检测、颜色分割、形状匹配等。
通过这些算法,可以有效地提取出棋盘和棋子的信息,为后续的识别和决策提供数据支持。
2. 机器学习算法:机器学习算法可以用于棋子的分类和识别。
通过对大量的棋子图像进行训练,机器可以学习到棋子的特征和模式,并能够根据新的图像进行分类和识别。
常用的机器学习算法包括支持向量机(SVM)、卷积神经网络(CNN)等。
这些算法可以自动地从图像中提取特征,并进行分类和识别,大大提高了军棋自动识别大小机器的准确性和效率。
棋盘格标定板识别算法棋盘格标定板是一种用于计算机视觉领域中相机标定的工具。
相机标定是计算机视觉中的一个重要任务,它用于确定相机的内部参数和外部参数,以便进行准确的图像处理和测量。
棋盘格标定板通常由黑白相间的正方形格子组成,每个格子都有固定的大小。
通过将这个标定板放在相机的视野中,并拍摄多张包含标定板的图像,可以通过分析这些图像来计算相机的内部参数和外部参数。
需要将标定板放置在一个平面上,并确保相机可以完整地看到标定板。
然后,使用相机拍摄多张包含标定板的图像。
这些图像应该涵盖不同的角度和距离,以便在标定过程中获得更准确的结果。
标定板识别算法的主要目标是从图像中提取出标定板的角点位置。
角点是标定板上的黑白相间的交叉点,它们具有明显的特征,可以用于准确地定位标定板。
一旦获得了标定板的角点位置,就可以使用这些位置信息来计算相机的内部参数和外部参数。
标定板识别算法通常包括以下几个步骤:1. 图像预处理:首先,对图像进行预处理以提高后续处理的效果。
这可能包括图像去噪、图像增强等操作。
2. 特征提取:在预处理后的图像中,需要提取出标定板的特征,即角点的位置。
常用的特征提取算法包括Harris角点检测算法、Shi-Tomasi角点检测算法等。
3. 角点匹配:将提取到的角点与标定板的模板进行匹配,以确定角点的准确位置。
匹配算法可以使用最小二乘法或其他优化算法来求解。
4. 参数估计:通过已知的标定板的物理尺寸和角点的像素坐标,可以使用相机模型来估计相机的内部参数和外部参数。
内部参数包括相机的焦距、畸变系数等,外部参数包括相机的位置和姿态等。
5. 参数优化:通过调整参数的值,使得标定板的特征点与图像中提取到的特征点之间的误差最小化。
常用的优化算法包括最小二乘法、Levenberg-Marquardt算法等。
标定板识别算法在计算机视觉领域中具有广泛的应用。
通过准确地计算相机的内部参数和外部参数,可以实现精确的图像处理和测量。
象棋残棋识别方法全文共四篇示例,供读者参考第一篇示例:象棋是一种古老而又深受人们喜爱的棋类游戏,而象棋残棋指的是在一局象棋游戏中,双方棋手已经走完了大部分的棋子,只剩下少数几个棋子或者只剩下几个关键棋子的情况。
在残棋阶段,棋局往往处于胶着状态,每一步棋都可能对胜负产生决定性的影响。
对象棋残局的识别与分析显得尤为重要。
识别象棋残棋,首先要求对残局的关键棋子进行准确识别,这些关键棋子通常指的是士、相、马、车和将等具有重要战略价值的棋子。
在残局中,这些关键棋子的位置和移动方式往往对棋局的胜负起着至关重要的作用。
对这些关键棋子的准确识别是识别象棋残局的基础。
在实际应用中,可以借助计算机视觉技术来实现象棋残局的识别。
计算机视觉技术可以通过对象棋棋盘图像的处理和分析,实现对残局的准确识别。
可以通过图像识别算法对象棋棋盘上的棋子进行识别,通过棋子的形状和颜色等特征进行分类,从而识别出残局中的关键棋子。
还可以通过深度学习等技术,对棋盘局势进行分析和判断,从而帮助玩家制定下一步的落子策略。
除了计算机视觉技术,还可以借助人工智能技术实现象棋残局的识别。
人工智能技术可以通过对象棋残局历史数据的分析和归纳,建立模型预测棋手可能的下一步走法,从而帮助棋手做出更加明智的决策。
通过人工智能技术,还可以实现对残局的深度学习和模拟对弈,从而提高棋手对象棋残局的理解和把握。
象棋残局识别方法的发展仍然面临一些挑战和难点。
在图像识别方面,由于象棋棋子的形状和颜色相似,对棋子进行准确识别存在一定的困难;在人工智能技术方面,由于象棋残局的变化多端,如何建立准确的预测模型也是一个需要不断探索和提高的问题。
未来需要进一步研究和探索象棋残局识别方法,借助最新的技术手段和方法,提高象棋残棋识别的准确性和效率,为象棋爱好者提供更好的下棋体验。
第二篇示例:象棋残棋识别方法是指通过计算机视觉技术对象棋局面进行分析和识别,从而帮助棋手更快地判断双方的布局和下一步的走法。
c++ 棋盘格标定算法
C++ 棋盘格标定算法是用于计算机视觉和图像处理中的一种重要技术,它可以用于校准相机,消除图像畸变,以及确定图像中物体的尺寸和位置。
下面我将从多个角度来回答这个问题。
首先,棋盘格标定算法的基本原理是利用已知尺寸的棋盘格图案,通过相机拍摄得到的图像,计算相机的内参和畸变参数。
这些参数可以用来校正图像,使得图像中的物体能够按真实尺寸进行测量和定位。
在 C++ 中,OpenCV 是一个常用的计算机视觉库,它提供了棋盘格标定的相关函数和类。
通过使用 OpenCV 中的函数,可以实现棋盘格标定算法。
首先需要拍摄包含棋盘格的多张图像,然后利用OpenCV 提供的函数来提取棋盘格的角点,最后通过这些角点来计算相机的内参和畸变参数。
另外,棋盘格标定算法的实现还涉及到一些数学知识,比如相机模型、畸变模型、最小二乘法等。
在编写 C++ 代码时,需要对这些数学知识有一定的了解,以便能够正确地实现棋盘格标定算法。
除了基本原理和实现方式,棋盘格标定算法还涉及到一些注意事项。
比如拍摄图像时需要注意光照和角度的均匀性,以及棋盘格的尺寸和布局等因素。
这些因素都会影响标定的精度和稳定性。
总的来说,C++ 棋盘格标定算法是一个在计算机视觉和图像处理领域非常重要的技术,它可以帮助我们准确地测量和定位图像中的物体。
在实现这个算法时,需要结合计算机视觉库和数学知识,同时也需要注意一些实际的拍摄和处理细节。
希望这些信息能够对你有所帮助。
基于图像处理的象棋棋盘识别摘要:基于图像处理的象棋棋盘识别是象棋机器人软件的重要组成部分,其核心工作是棋盘图像二值化和棋子识别。
针对棋盘全局二值化存在的问题,提出了基于相邻像素灰度差阈值的棋盘图像二值化方法;针对棋子文字方向任意的现象, 运用象棋文字的识别作为颜色识别异常的补充。
实验结果表明,该方法提高了棋盘识别的效率。
Chess- board recognition b ased on Image Processing is a n important part of a chess robot softwart system.It’s key problems arebinarization of chess- board image and character recognition.To save the problem caused by full chess- board binarization way, thebinarization method based on the difference threshold of neighbor pixels’gray- level is given. To treat the random of a character’s direction, The character recognition was taken as the supp lement to excep- tions of color recognition. The p roposed method imp roves the efficiency of the chessboard recognition关键词: 棋盘识别; 颜色识别;文字识别;灰度差阈值; 年轮统计Key words: chessboard recognition; color recognition; character recognition;threshold of gray scales’difference;annual ring statistic;1 引言中国象棋变化多端, 趣味无穷, 是流传了一千多年的优秀游戏, 是中华文化的精粹之一。
随着机器人技术的发展, 机器人的功能越来越丰富, 娱乐机器人的研究已经成为一个重要的方向。
象棋机器人是娱乐机器人的一种, 在CCD 摄像机的监视下, 使人机下棋过程非常类似于人与人之间的对弈, 更具有人性化和亲切感。
本文介绍的系统是象棋机器人的视觉部分, 能识别出当前棋盘的状态, 提供给机器人下棋软件进行进一步推理。
1 .1 棋盘的预处理棋盘识别软件的处理流程是棋盘图像的二值化、棋子检测和棋子文字识别。
其中, 二值化和棋子文字识别是关键。
棋盘图像二值化的目的是将棋盘背景与棋子及网格线分离, 以便进行棋子的检测和识别。
目前图像二值化方法很多, 可划分为全局阈值、局部阈值法、动态阈值法。
全局阈值法实现简单, 速度快, 对于具有明显双峰直方图的图像效果明显, 但对于光照不均匀的图像效果欠佳, 抗噪能力差。
局部阈值法能处理较为复杂的情况, 但往往忽略了图像的边缘特征, 容易出现伪影现象, 且当窗口宽度较大时, 算法的速度将会受到很大影响。
动态阈值法充分考虑了像元的邻域特征, 能够根据图像的不同背景情况自适应地改变阈值, 可较精确地提取出二值图像, 但它过渡地夸大了像元的邻域灰度的变化, 会把不均匀灰度分布的背景分割到目标中去, 带来许多不应出现的假目标。
在象棋机器人系统中装有照明灯, 为图像捕捉提供光源。
即使这样, 由于光照不均匀有时所捕捉的图像仍存在一定的阴影、反光现象, 致使图像灰度层次较多。
若采用全局阈值法的二值化图像, 结果出现某些背景变黑而一些棋子模糊和网格线断线的现象,这直接影响了后续的棋子和异物检测。
在象棋机器人系统中装有照明灯, 为图像捕捉提供光源。
即使这样, 由于光照不均匀有时所捕捉的图像仍存在一定的阴影、反光现象, 致使图像灰度层次较多。
灰度图像如图3(a)所示。
若采用全局阈值法的二值化图像, 结果出现某些背景变黑而一些棋子模糊和网格线断线的现象, 如图3(b)所示。
这直接影响了后续的棋子和异物检测。
2.棋盘定位流程图:棋盘棋子的定位:阈值的选取:im_all = imread('xqplg.jpg'); imc = imcrop(im_all);imr = imc(:,:,1);img = imc(:,:,2);imb = imc(:,:,3);imrr = imr(:);imgg = img(:);imbb = imb(:);c = double([imrr imgg imbb])/256;scatter3(imrr,imgg,imbb,15,c);棋子定位imqz = (imr>180 &img>180 & imb>180); imc = imcrop(imqz, [cs ls 30 30]);qzN = sum(sum(imc));棋子识别——红色像素统计imqr = (imr>150 & img<150 & img>70 & imb<200& imb>110);imcr = imcrop(imqr, [cs ls 30 30]);qzR = sum(sum(imcr));下棋过程中棋子放置方向的任意性给文字识别带来了困难。
基于统计决策论的统计特征可以丢失方向信息, 很适合棋子识别。
统计决策论的要点是提取待识别模式的一组统计特征, 然后按照一定准则把所确定的决策函数进行分类判决。
汉字的统计模式识别就是将字符点阵看作一个整体, 从该整体上经过大量统计所得特征, 用尽可能少的特征模式来描述尽可能多的信息。
所采用的方法有特征统计的方法、整体变换分析法、几何矩特征、笔划密度特征、字符投影特征、外围特征、微结构特征和特征点特征等。
本文针对象棋棋子文字, 提出了3 种基于统计特征的棋子文字识别方法, 很好地解决了文字的方向问题。
3文字识别在开局或者是进行残局的对弈时,需要识别各位置棋子的颜色及文字,以便建立起棋子的状态矩阵。
文字的识别可以根据字符结构,抽取字符特征,然后根据这些特征构造编码器,进行编码识别的方式[ 4 - 6 ] ,但是一旦文字的方向发生变化,这种方式将很难处理。
因此, 使用基于年轮统计的方法[ 1 ] ,该方法的优点是与文字的方向无关,一旦确立了每个象棋文字的特征值,就可以快速地识别文字。
为了加快文字识别的速度,在每个棋子上的圆形凹槽均填充为与棋子相同的颜色。
针对捕获的图像,首先进行颜色的识别,以记录各棋子有效位置的颜色信息,然后,对于存在棋子的有效位置进行分割,分割出来的每一个矩形图片均进行文字识别。
其步骤如下。
1)滤波。
这里采用中值滤波,每个像素点根据其周围的像素点的RGB值进行平均,以抑制随机噪声,并且能够很好地保存边缘信息,原图和滤波后的效果如下。
2)颜色增强。
对于红颜色或者绿颜色分量进行增强,其饱和度增强0. 2左右,使得颜色信息在图像中进一步呈现,以提高根据颜色进行二值化的成功率。
3)二值化。
这里的二值化指的是红色或者绿色保留,其他颜色变为白色,以下说明均以红色为例。
将图1 ( b)按照表1所列的区间进行按照红色的二值化所得到结果如图2 ( a)所示。
由于颜色区间是按照宽范围来选择的,因此将有部分灰色和黄色被保留下来,事实上在RGB颜色空间中,黄色是由红色叠加绿色得来的,而灰颜色的三种颜色分量的值相差不大,因此设定阈值来去除掉黄颜色和灰颜色。
条件为:如果RG < 60,则认为不可能是红色;如果G ≥110,则认为不可能是红色。
根据这个条件进行红颜色的二值化结果如图2 ( b)所示。
4)提高对比度,并进一步剔除掉红色。
在步骤3)中所得到的图片线条边缘还有部分浅红存在,不利于文字识别,通过提高图像的对比度,使得这一部分颜色变为红色,而红色变为黑色,以便于进一步分离,如图3 ( a)所示。
此时将图片中的红色剔除掉,结果如图3 ( b)所示。
5)圆形检测。
圆形的检测方法主要有基于Hough 变换(Hough Transformation , HT) 的累积方法和基于弧线几何特征的检测方法[ 8 ] ,这些方法具有普适性,计算量却很大。
本例中的圆形具有其特殊性,因此考虑计算量更小的方法。
根据步骤4)所得到的图片中圆形可能不是完整的,但不影响确定圆心的位置。
分割得到的图片本身就是一个正方形的结构,将图片数据的0行0列作为坐标原点,如图4所示, h和w分别为图片的高度和宽度,很显然h和w是相等的。
以坐标原点为圆心,以图片宽度的1 /2作为半径画出圆弧,只需要记录圆弧上第一个和最后一个发生颜色突变的点, 就可以确定圆弧与圆的交点,有了交点就可以确定通过圆心和坐标原点的直线。
依此方法再以(0, h) 或( h, h) 或( h, 0) 作为圆心画出圆弧同样也可以确定一条直线,两条直线的交点即为圆心的坐标。
实际中,由于得到的圆形不一定是封闭的,所采集的两个突变点就可能不在圆上,这时确定的圆心可能就是错误的。
因此根据不同的半径增加所画圆弧的个数,得到多组圆上的点,经过比较分析去掉错误点,得到圆心的位置。
由圆心的坐标和前期工作中得到的圆上的点,就可以确定整个圆的位置。
6)过轮数计算。
年轮统计法是根据过轮数特征构造编码器对文字进行识别。
该方法结合了一定的棋子文字结构且与方向无关。
过轮数的详细算法步骤请参考文献[ 1 ]。
根据过轮数的计算,可以得到当前棋子的文字。
一旦确定了棋子的文字,和前期确定的颜色信息,就可以建立起初始的棋子状态矩阵。
从而为后续的人机对弈提供快速的检测方式。
4.总结和展望:本文所提出的基于邻像素差阈值的棋盘图像二值化方法,计算量小、二值化效果好、且能适应较宽的光线条件; 基于统计特征的棋子文字识别方法具有方向无关性, 很好地适应了棋子方向任意的实际情况。
在下棋过程中, 为进一步提高处理速度,可先做相邻棋盘图像的差分, 在二值差分图上检测变化位置,只限定在当前二值图的变化部分进行检测和识别, 可大大缩短处理时间。
在具体应用中由于棋子文字字体的不同, 文中基于文字连通数与孔数的识别方法和基于年轮统计的识别方法中的具体特征值可能不能直接使用, 但方法的思想是可以借鉴的。
在一些字体中, 某种单一的特征可能不能将各文字有效区分, 这时可以融合几种特征, 如有些字体的士、卒、车的连通域数和孔数都是1 和0, 此时可通过增加1/4R 过轮数的特征进行识别。