本发明涉及图像处理技术,具体是一种基于svm分类的魔方色块颜色还原方法。
背景技术:
:现有的魔方颜色识别效率不高且识别不准确存在误差,况且摄像头的色彩处理存在色差,在不同的色温下,图像从采集到显示过程会出现不同程度的颜色变化,图像会在采集过程进行中和数字化转换时会受到周围噪声、光环境等干扰,后续的计算会很敏感且出错,光照环境的改变、色差都会降低颜色识别的成功率。魔方色块颜色的识别很多错误是由于周围环境光的影响,无法避免的,这种类型的误差比较隐蔽不容易察觉,但是实际生活中,这类环境影响导致魔方色块颜色读取错误是非常致命的,这时候如果不去通过程序调控或者对数据运算处理,将会导致在不同环境下,每次读取魔方颜色块都会出错。目前魔方色块颜色的识别主要有:1.阈值限定识别:比较通用的做法是采用固定的rgb或hsv阈值,也就是将每个色块的颜色限定在一个区域的颜色值,这种算法很简单,但对于光照与设备环境的影响基本不可以消除,这种算法容易出现的情况是,在光照充足的地方,可以正常识别、黑暗的地方则完全无法识别;2.机器学习识别:通过采集不同环境的魔方色块颜色,然后使用大量的样本去“预测”当前识别的颜色,这个方案很好地消除了环境的影响,但有一个缺点是该算法很难做到去除阴影与色与橙色,所以只能采用黑色魔方块代替了橙色魔方块,从而避免颜色的误识别。技术实现要素:本发明的目的是针对现有技术的不足,而提供一种基于svm分类的魔方色块颜色还原方法。这种方法能提高颜色识别的准确性和速度。实现本发明目的的技术方案是:一种基于svm分类的魔方色块颜色还原方法,包括如下步骤:1)采集魔方色块信息:由采集设备获取魔方色块六个面的图像;2)图像预处理:采用高斯滤波处理和白平衡处理消除魔方色块图像在数字化过程中受到的噪声、光照干扰;3)图像色域空间转换:采集设备获取的魔方色块数字图像中的每个像素点就是rgb颜色空间的值,rgb是硬件方向常用的颜色模型,从颜色生成的角度上看,rgb空间可以应用三种基本颜色来描述所有颜色,并且在颜色空间里可以用一个立体模型来几何表示图像,在不同亮度下同一个魔方色块的颜色会具有不同的r、g和b值,并且难以根据图像的色调的颜色设立正确的参考阈值,色域转换去除采集设备获取魔方色块图像中的亮度分量和颜色信息之间的关系,通过改变rgb图像的颜色空间来描述hsv颜色,因为在不同的光照影响下,hsv色彩空间模型比rgb色彩空间模型更适合识别魔方的色块颜色,可以更好地反映图像的饱和度和亮度,为接下来的进一步处理做准备,处在不同光照的环境下,不同颜色空间具有不同的色彩信息,通过rgb转换hsv颜色空间,使捕获到的色彩信息不会缺损,hsv色彩空间模型更适合识别魔方的色块颜色,可以更好地反映图像的饱和度和亮度,将魔方色块进行rgb-hsv的色域空间转换,对魔方色块每个面划分成九个50*50像素大小的区域,获取每个区域的rgbhsv六个值,整个魔方色块色域空间的数据则为:6*9*50*50=135000个数据,首先将魔方色块的六种颜色设定为标签,然后采用svm分类训练,将获取的rgbhsv色域空间的数据对应所设定的标签存放,生成xml训练文件;4)一对多分类法识别魔方色块:依据步骤3)生成的xml训练文件,采用一对多的分类法对经过步骤2)预处理的图像进行魔方色块识别,通过svm分类预测出具体每个魔方色块的颜色,所述一对多分类法即oneagainstall是指在训练过程中,将样本重新分类,然后构造六个类别的六向量机,在分类过程中如果遇到未知样本,则将其分类到训练函数中分类值最大的那个类别,当有六个魔方颜色类别时,将这这些训练集每个都分开训练,就可以得到六个不同训练结果文件,用每个训练文件分别测试之后的每一个分量,每个测试都有一个结果,最后通过比较六个结果的最大值就可以得出测试分量属于哪一类的哪一种魔方颜色;5)魔方颜色修补:三阶魔方通常是六面立方体结构,三阶魔方每个面有九个颜色块,总共有五十四个颜色块,居于中心的为中间块,相邻的四个称为棱块,占据边角的称为角块,在魔方的中间有一条向上、向下、向左、向右、向前和向后的轴,从魔方结构角度上看,魔方整体系由二十六个“块”,只有一个颜色六个中心块处于每个面的中间、有三个颜色的八个角块处于魔方边缘角和有两个颜色十二个棱块处于角块和中心块之间,魔方色块立方体是由五十四个颜色块经过数学的排列组合方式构成,结合步骤4)预测的魔方色块颜色、三阶魔方的立方体结构与现行的国际标准着色原则进行中心块判决、角块判决、棱块判决,对无法识别的色块、识别错误的色块进行校验、修补,完成魔方各个色块的准确识别。步骤2)中所述的高斯滤波处理为:用一个模板扫描魔方色块图像中的每一个像素、用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值,所谓权重分配,就是把高斯核的每个系数乘以所有系数的和,高斯滤波核如下表1所示:表1高斯滤波核1474141626164726412674162616414741高斯滤波的核的参数公式为:g(x,y)是由高斯函数计算出来的高斯模板,以模板的中心位置为坐标原点进行取样,x、y为每个位置的坐标轴,σ叫做决定平滑程度的高斯滤波器宽度,σ越大,高斯滤波器的频带就越宽,平滑程度就越好,图像平滑时,调整σ实际是在调整周围像素对当前像素的影响程度,调大σ即提高了远处像素对中心像素的影响程度,滤波结果也就越平滑,标准差σ越大,越接近均值滤波,对魔方色块图像的过滤效果就会越明显,但会丢失一些魔方色块图像的边缘信息,高斯滤波器将中心的权值设置为最高,环境的权值相对较低,不仅考虑到魔方色块图像边缘点的受损情况,而且在魔方色块图像滤波的过程中不会损失中心的强度,是一种适合对整个魔方色块图像边缘处理的预处理滤波器,采集设备进行对魔方色块图像的采集后,因为魔方色块图像会在采集过程进行中和数字化转换时会受到周围噪声、光环境干扰,后续的计算会很敏感且出错,所以需要先进行滤波,魔方色块图像在程序数字化过程中去除噪声的同时,魔方色块图片边界的像素强度必会有所丢失,因此在降噪和保留边缘强度之间,采用高斯滤波对每一个像素点的值经过加权平均后处理。步骤2)中所述的白平衡处理为:对魔方色块色彩校正,白平衡处理过程处理魔方色块较深和较亮的颜色,并指定一个特定的像素值,将受环境光影响的颜色修正为原色,白平衡处理使得在不同的照明条件下,魔方色块图像的颜色与物体的实际颜色保持一致,解决恢复颜色和处理色调问题,白平衡是描述红、绿、蓝三原色混合后的白色精度的一个指标,采集设备usb摄像头的色彩处理存在色差,在不同的色温下,魔方色块图像从采集到显示过程会出现不同程度的颜色变化,这样会对魔方色块的捕获有很大影响,因此需要对魔方色块色彩校正,针对不同色温条件下,对消除光照效果非常好,最后能得到正确的色彩转换。步骤3)中所述的svm分类为:支持向量机算法是一种形式化定义为超其他类的分类器,它可以在样本之间分离出不同的类,即对于多个不同类等级进行训练测试,svm算法将产生最佳的分离水平,假设二维点类型可以线性划分,并且可以找到最佳的分隔线,两类图像切割图中,有方形和圆形两个种类,有无数多可能的线可以分割样本,但是太靠近样本的线是不合适的,因为其对噪音非常敏感,而且泛化性很低,所以目标是找到一条正确的分割线,它离所有二维点都最远,寻找一个能分割各类点且使值最大化的超水平面,在向量支持技术中,找到最好效果的线称为“划分超平面”,最大距离水平定义为一个“间隔”,即最近的样本点到此超平面的距离最大就使训练数据范围最大化,超平面的表达式:f(x)=β0+βtx,β叫做权重向量,β0叫做偏置,最优超平面可以有无数种表达方式,即通过任意的缩放β和β0,采用以下方式来表达最优超平面:|β0+βtx|=1,式中x表示离超平面最近的那些点,这些点被称为支持向量,该超平面也称超平面,通过几何学的知识,知道点x到超平面(β,β0)的距离为:对于超平面,表达式中的分子为1,因此支持向量到超平面的距离是:间隔margin表示为m,它的取值是最近距离的2倍:最大化m转化为在附加限制条件下最小化函数l(β),限制条件隐含超平面将所有训练样本xi正确分类的条件:式中yi表示样本的类别标记,通过拉格朗日乘数法得到最优超平面的权重向量β和偏置β0,最佳“间隔”切割图由两个种类距离中央实线最近的点确定出虚线,两条虚线构成的区域就是“间隔”,要使“间隔”尽量大,因为大“间隔”犯错的几率较小,通过算法得出超平面时,只要一个类的最近点到超平面的距离等于到另一类最近点到超平面的距离,而且两侧类的超平面平行的时候,超平面达到最大,得出的也是最大间隔,svm是机器学习里常用的算法,在颜色识别方案中,相比于用某个色域空间的阈值限定来划分颜色,使用svm方案进行颜色分类后再进行预测显得更加精准、高效,svm算法是用于对样本数据分类且训练数据回归与分析的一种算法,将魔方色块六个颜色的颜色空间类别作训练数据,首先构建一个完整的分类器而后建立一个分类模型,将上述训练数据分配给不同标签,该分类模型成为一个非概率meta线性回归,并划分出最大的“间隔”分开两类,之后的所有的数据点将会映射到对应的类别中,并根据数据在超平面中间隔的哪一侧来预测类别,在使用svm算法识别魔方色块颜色的前提下,由于环境、光线、阴影等因素的变化,仍然存在一些无法识别或识别错误的色块,为了解决这个问题,根据魔方的结构分布、空间位置和颜色特征分布规律进行颜色补齐,在最多缺失一个面的情况下补全魔方,提高了颜色识别的准确性,采用传统的rgb或hsv阈值限定方法使得识别结果易受光照环境改变的影响,鲁棒性较差,并且,mit0.38s还原魔方的团队也是因为使用传统的颜色识别从而无法分辨红色与橙色的原因,所以用黑色魔方块代替了橙色魔方块,从而避免颜色的误识别,采用svm分类训练的方法对魔方的色块颜色进行分类识别,消除了光照强度对颜色识别的影响,魔方的颜色识别基本不会出错,提高了整个系统的工作稳定性。步骤5)中所述的中心块判决为:每个魔方的状态都可以得到魔方六个面对应的唯一展开图,魔方原始状态或还原状态的平面展开图,即从u面开始编号用1、2、3。。。数字来表示组成,最后1到48的数字表示一个完整的魔方,现行国际标准着色原则中心块是相对固定的,6个中心块方块的相对位置永远无法改变,中心块判决采用一个数组存储魔方各个色块的颜色,强制改变中心块的颜色即令[4]=白、[13]=红、[22]=绿、[31]=黄、[40]=橙、[49]=蓝。步骤5)中所述的角块判决为:由于每个魔方的角块实际上都是一个一阶魔方体,因此每个角块的颜色与魔方原配色完全相同,这就是对角块推断的依据,知道角块两边的颜色,就能够推导出角块第三面的颜色,不过角块缺失两个以上的颜色时无法推断出缺失的颜色,魔方角块的规律为:(1)红橙相对;(2)蓝绿相对;(3)黄白相对;(4)上黄下白;(5)逆时针来看色彩排序:红绿橙蓝,八个角块分别为:白橙蓝(0,36,47)、白红蓝(2,11,45)、白绿橙(6,18,38)、白红绿(8,9,20)、绿黄橙(24,27,44)、绿红黄(15,26,29)、黄橙蓝(33,42,53)、红黄蓝(17,35,51),魔方角块的颜色不会因旋转而改变,只要捕捉到角块的两个颜色,就可以“上黄下白,红绿橙蓝”的规律推断出缺少的颜色,过程为:5-1)固定魔方的urfdlb六个面分别对应白红绿黄橙蓝wrgyob;5-2)八个角块对应的数组位置分别为:(0,36,47)-wgr、(2,11,45)-wgo、(6,18,38)-wbr、(8,9,20)-wbo、(24,27,44)-ygr、(15,26,29)-ygo、(33,42,53)-ybr、(17,35,51)-ybo;5-3)设定四个数组,其中三个数组存储角块的24个位置,还有一个corner数组判断哪个角块位置出错:corner[8]={0};a[8]={0,2,6,8,24,15,33,17};b[8]={36,11,18,9,27,26,42,35};c[8]={47,45,38,20,44,29,53,51};5-4)按照角块算法规定,只有两个大类w白色与y黄色,每个大类中有两个中类g绿色与蓝色,每个中类中又有两个小类r红色与o橙色,然后采用8次轮询数组的位置去检测上述位置中角块的三组颜色是否正确;5-5)大类w白色会在0、2、6、8、9、11、18、20、36、38、45、47中的十二个位置随机出现,所以轮询首先判断上述的位置中是否存在大类w白,如果大类为白色,则中类有g绿色与b蓝色两种情况,接下来判断中类是否为g绿色,如果中类为g绿色则有wgr、wgo两种情况,如果小类为r红色则判定(0,36,47)这个位置的角块三种颜色wgr识别成功,标志位数组corner[0]置1,如果小类为o橙色则判定(2,11,45)这个位置的角块三种颜色wgo识别成功,标志位数组corner[1]置1,如果中类不是g绿色而是b蓝色则有wbr、wbo两种情况,判断小类为r红色则判定(6,18,38)这个位置的角块三种颜色wbr识别成功,标志位数组corner[2]置1,如果小类为o橙色则判定(8,9,20)这个位置的角块三种颜色wbo识别成功,标志位数组corner[3]置1;5-6)接下来判断大类y黄色,大类y黄色会在15、17、24、26、27、29、33、35、42、44、51、53中的十二个位置随机出现,在大类y黄色中有两种中类g绿色与b蓝色两种情况,接下来判断中类是否为g绿色,如果中类为g绿色则有ygr、ygo两种情况,如果小类为r红色则判定(24,27,44)这个位置的角块三种颜色ygr识别成功,标志位数组corner[4]置1,如果小类为o橙色则判定(15,26,29)这个位置的角块三种颜色ygo识别成功,标志位数组corner[5]置1,如果中类不是g绿色而是b蓝色则有ybr、ybo两种情况,判断小类为r红色则判定(33,42,53)这个位置的角块三种颜色wbr识别成功,标志位数组corner[6]置1,如果小类为o橙色则判定(17,35,51)这个位置的角块三种颜色ybo识别成功,标志位数组corner[7]置1;5-7)角块算法则根据数组corner中的标志位去判断哪个角块位置是识别错误的,然后去修补该位置缺失的颜色,例如corner[0]=0,算法则检验(0,36,47)位置中的三种颜色,在(0,36,47)中只可能存在w红色、g绿色、r红色三种,如只出现了w红色与g绿色,则可知道识别错误的为r红色,然后强制变化另一个颜色为红色,该修补算法只需通过校验这三个位置,只要有两个成功识别颜色然后去强制修改另一个识别颜色错误,就可完成一个角块的颜色修补。步骤5)中所述的棱块判决过程为:魔方共有12个棱块,分别为白蓝(1,46)、白橙(3,37)、白红(5,10)、白绿(7,19)、黄绿(28,25)、黄橙(30,43)、黄红(32,16)、黄蓝(34,52)、红绿(12,23)、红蓝(14,48)、蓝橙(50,39)、绿橙(21,41),棱块的判决和角块判决类似,但棱块不能直接从一个颜色来推断另一面的颜色,因为同一个颜色的棱块有四个会在不同的面出现,所以棱块的推断必须知道其余三个面的棱块来进行校验色块信息是否准确:a:固定魔方的urfdlb六个面分别对应白红绿黄橙蓝wrgyob;b:十二个角块对应的数组位置分别为:(1,46)-wg、(3,37)-wr、(5,10)-wb、(7,19)-wo(28,25)-yg、(30,43)-yr、(32,16)-yb、(34,52)-yo(12,23)-gr、(14,48)-go、(50,39)-br、(21,41)-bo;c:设定三个数组,其中两个数组存储棱块的24个位置,还有一个edge数组判断哪个棱块位置出错:a[12]={1,3,5,7,28,30,32,34,12,14,50,21};b[12]={46,37,10,19,25,43,16,52,23,48,39,41};edge[12]={0};d:规定分为四个大类w白色、y黄色、g绿色、b蓝色,在大类w白色与y黄色中有存在另外三种颜色的情况,在大类g绿色和b蓝色中有存在r红色与o橙色的情况,采用12次轮询数组的位置去检测上述位置中的棱块;e:首先判断大类w白色,w白色会在1、3、5、7、10、19、37、46中的八个位置随机出现,接下来识别到g绿色则(1,46)位置识别成功,标志位edge[0]置1,识别到r红色则(3,37)位置识别成功,标志位edge[1]置1,识别到b蓝色则(5,10)位置识别成功,标志位edge[2]置1,识别到o橙色则(7,19)位置识别成功,标志位edge[3]置1;f:接下来判断大类y白色,y黄色会在16、25、28、30、32、34、43、52中的八个位置随机出现,然后识别到g绿色则(28,25)位置识别成功,标志位edge[4]置1,识别到r红色则(30,43)位置识别成功,标志位edge[5]置1,识别到b蓝色则(32,16)位置识别成功,标志位edge[6]置1,识别到o橙色则(34,52)位置识别成功,标志位edge[7]置1;g:然后继续判断大类g绿色,g绿色会在12、14、23、48中的四个位置随机出现,然后识别到r红色则(12,23)位置识别成功,标志位edge[8]置1,识别到o橙色则(14,48)位置识别成功,标志位edge[9]置1;h:最后判断大类b蓝色,b蓝色会在21、39、41、50中的四个位置随机出现,然后识别到r红色则(50,39)位置识别成功,标志位edge[10]置1,识别到o橙色则(21,41)位置识别成功,标志位edge[11]置1;i:根据数组edge中的标志位去判断哪个棱块位置是识别错误的,在白色大类识别错误一个颜色,则只能通过校验edge[0]、edge[1]、edge[2]、edge[3]的标志位去还原颜色:i-1)当edge[0]=0、edge[1]=1、edge[2]=1、edge[3]=1时,则知道缺失了g绿色;i-2)当edge[0]=1、edge[1]=0、edge[2]=1、edge[3]=1时,则知道缺失了r红色;i-3)当edge[0]=1、edge[1]=1、edge[2]=0、edge[3]=1时,则知道缺失了b蓝色;i-4)当edge[0]=1、edge[1]=1、edge[2]=1、edge[3]=0时,则知道缺失了o橙色。本技术方案首先采用opencv进行高斯滤波对图像边缘处理,再经过rgvhsv色域转换处理图像,采用svm分类器算法,建立了魔方六种颜色的类别模型来提高魔方颜色的捕获准确度,同时根据魔方的整体结构提出角、棱、中心块修补,将svm类别模型与颜色修补算法相结合,根据分类器预判出的颜色值与魔方色块修补校验从而得出魔方每个色块的颜色。这种方法能提高颜色识别的准确性和速度。附图说明图1a为实施例中高斯滤波处理后色块图像;图1b为实施例中高斯滤波处理前色块图像;图2a为实施例中白平衡处理前色块图像;图2b为实施例中白平衡处理后色块图像;图3为实施例中魔方结构示意图;图4为实施例中魔方着色分类示意图;图5为实施例中角块判决方法流程示意图;图6为实施例中svm分类的魔方色块颜色还原原理示意图;图7为实施例中svm训练流程示意图;图8为实施例中两类图像切割图示意图;图9为实施例中最佳“间隔”切割图示意图;图10为实施例中方法流程示意图;图11为实施例中方9986:14的非均衡样本数据生成图;图12为实施例中样本随机抽取图;图13为实施例中网格搜索优化惩罚系数c寻优结果数据规范示意图;图14为实施例中网格搜索优化svm核函数的参数系数g寻优结果数据规范(3d)示意图;图15为实施例中颜色还原算法测试图。具体实施方式下面结合附图和实施例对本
发明内容作进一步的说明,但不是对本发明的限定。实施例:参照图10,一种基于svm分类的魔方色块颜色还原方法,包括如下步骤:1)采集魔方色块信息:由采集设备本例为usb摄像头获取魔方色块六个面的图像;2)图像预处理:采用高斯滤波处理和白平衡处理消除魔方色块图像在数字化过程中受到的噪声、光照干扰;3)图像色域空间转换:usb摄像头拍摄的魔方色块数字图像中的每个像素点就是rgb颜色空间的值,rgb是硬件方向常用的颜色模型,从颜色生成的角度上看,rgb空间可以应用三种基本颜色来描述所有颜色,并且在颜色空间里可以用一个立体模型来几何表示图像,在不同亮度下同一个魔方色块的颜色会具有不同的r、g和b值,并且难以根据图像的色调的颜色设立正确的参考阈值,所以本例的色域转换去除采集设备usb摄像头读取魔方色块图像中的亮度分量和颜色信息之间的关系,通过改变rgb图像的颜色空间来描述hsv颜色,因为在不同的光照影响下,hsv色彩空间模型比rgb色彩空间模型更适合识别魔方的色块颜色,可以更好地反映图像的饱和度和亮度,为接下来的进一步处理做准备,处在不同光照的环境下,不同颜色空间具有不同的色彩信息,通过rgb转换hsv颜色空间,使捕获到的色彩信息不会缺损,hsv色彩空间模型更适合识别魔方的色块颜色,可以更好地反映图像的饱和度和亮度,将魔方色块进行rgb-hsv的色域空间转换,对魔方色块每个面划分成九个50*50像素大小的区域,获取每个区域的rgbhsv六个值,整个魔方色块色域空间的数据则为:6*9*50*50=135000个数据,首先将魔方色块的六种颜色设定为标签,然后采用svm分类训练,将获取的rgbhsv色域空间的数据对应所设定的标签存放,生成xml训练文件,本例收集200组标签通过svm算法训练模型,得到一个xml文件并保存在项目目录下,后续通过调用该模型便可以识别出颜色;4)一对多分类法识别魔方色块:依据步骤3)生成的xml训练文件,采用一对多的分类法对经过步骤2)预处理的图像进行魔方色块识别,通过svm分类预测出具体每个魔方色块的颜色,所述一对多分类法即oneagainstall是指在训练过程中,将样本重新分类,然后构造六个类别的六向量机,在分类过程中如果遇到未知样本,则将其分类到训练函数中分类值最大的那个类别,当有六个魔方颜色类别时,将这这些训练集每个都分开训练,就可以得到六个不同训练结果文件,用每个训练文件分别测试之后的每一个分量,每个测试都有一个结果,最后通过比较六个结果的最大值就可以得出测试分量属于哪一类的哪一种魔方颜色;5)魔方颜色修补:三阶魔方通常是六面立方体结构,三阶魔方每个面有九个颜色块,总共有五十四个颜色块,居于中心的为中间块,相邻的四个称为棱块,占据边角的称为角块,在魔方的中间有一条向上、向下、向左、向右、向前和向后的轴,从魔方结构角度上看,魔方整体系由二十六个“块”,只有一个颜色六个中心块处于每个面的中间、有三个颜色的八个角块处于魔方边缘角和有两个颜色十二个棱块处于角块和中心块之间,魔方色块立方体是由五十四个颜色块经过数学的排列组合方式构成,魔方的结构如图3所示,结合步骤4)预测的魔方色块颜色、三阶魔方的立方体结构与现行的国际标准着色原则进行中心块判决、角块判决、棱块判决,对无法识别的色块、识别错误的色块进行校验、修补,完成魔方各个色块的准确识别。步骤2)中所述的高斯滤波处理为:用一个模板扫描魔方色块图像中的每一个像素、用模板确定的邻域内像素的加权平均灰度值去替代模板中心像素点的值,所谓权重分配,就是把高斯核的每个系数乘以所有系数的和,高斯滤波核如下表1所示:表1高斯滤波核1474141626164726412674162616414741高斯滤波的核的参数公式为:g(x,y)是由高斯函数计算出来的高斯模板,以模板的中心位置为坐标原点进行取样,x、y为每个位置的坐标轴,σ叫做决定平滑程度的高斯滤波器宽度,σ越大,高斯滤波器的频带就越宽,平滑程度就越好,图像平滑时,调整σ实际是在调整周围像素对当前像素的影响程度,调大σ即提高了远处像素对中心像素的影响程度,滤波结果也就越平滑,标准差σ越大,越接近均值滤波,对魔方色块图像的过滤效果就会越明显,但会丢失一些魔方色块图像的边缘信息,高斯滤波器将中心的权值设置为最高,环境的权值相对较低,不仅考虑到魔方色块图像边缘点的受损情况,而且在魔方色块图像滤波的过程中不会损失中心的强度,是一种适合对整个魔方色块图像边缘处理的预处理滤波器,采集设备usb摄像头进行对魔方色块图像的采集后,因为魔方色块图像会在采集过程进行中和数字化转换时会受到周围噪声、光环境干扰,后续的计算会很敏感且出错,所以需要先进行滤波,魔方色块图像在程序数字化过程中去除噪声的同时,魔方色块图片边界的像素强度必会有所丢失,因此在降噪和保留边缘强度之间,采用高斯滤波对每一个像素点的值经过加权平均后处理,高斯滤波处理前后对比图如图1a、图1b所示。步骤2)中所述的白平衡处理为:对魔方色块色彩校正,白平衡处理过程处理魔方色块较深和较亮的颜色,并指定一个特定的像素值,将受环境光影响的颜色修正为原色,白平衡处理使得在不同的照明条件下,魔方色块图像的颜色与物体的实际颜色保持一致,解决恢复颜色和处理色调问题,白平衡是描述红、绿、蓝三原色混合后的白色精度的一个指标,采集设备usb摄像头的色彩处理存在色差,在不同的色温下,魔方色块图像从采集到显示过程会出现不同程度的颜色变化,这样会对魔方色块的捕获有很大影响,因此需要对魔方色块色彩校正,针对不同色温条件下,对消除光照效果非常好,最后能得到正确的色彩转换,白平衡处理前后对比图如图2a、图2b所示。步骤3)中所述的svm分类为:支持向量机算法是一种形式化定义为超其他类的分类器,它可以在样本之间分离出不同的类,即对于多个不同类等级进行训练测试,svm算法将产生最佳的分离水平,假设二维点类型可以线性划分,并且可以找到最佳的分隔线,如图8所示,在两类图像切割图中,有方形和圆形两个种类,有无数多可能的线可以分割样本,但是太靠近样本的线是不合适的,因为其对噪音非常敏感,而且泛化性很低,所以目标是找到一条正确的分割线,它离所有二维点都最远,寻找一个能分割各类点且使值最大化的超水平面,在向量支持技术中,找到最好效果的线称为“划分超平面”,最大距离水平定义为一个“间隔”,即最近的样本点到此超平面的距离最大就使训练数据范围最大化,超平面的表达式:f(x)=β0+βtx,β叫做权重向量,β0叫做偏置,最优超平面可以有无数种表达方式,即通过任意的缩放β和β0,采用以下方式来表达最优超平面:|β0+βtx|=1,式中x表示离超平面最近的那些点,这些点被称为支持向量,该超平面也称超平面,通过几何学的知识,知道点x到超平面(β,β0)的距离为:对于超平面,表达式中的分子为1,因此支持向量到超平面的距离是:间隔margin表示为m,它的取值是最近距离的2倍:最大化m转化为在附加限制条件下最小化函数l(β),限制条件隐含超平面将所有训练样本xi正确分类的条件:式中yi表示样本的类别标记,通过拉格朗日乘数法得到最优超平面的权重向量β和偏置β0,最佳“间隔”切割图如图9所示,由两个种类距离中央实线最近的点确定出虚线,两条虚线构成的区域就是“间隔”,要使“间隔”尽量大,因为大“间隔”犯错的几率较小,通过算法得出超平面时,只要一个类的最近点到超平面的距离等于到另一类最近点到超平面的距离,而且两侧类的超平面平行的时候,超平面达到最大,得出的也是最大间隔,svm是机器学习里常用的算法,在颜色识别方案中,相比于用某个色域空间的阈值限定来划分颜色,使用svm方案进行颜色分类后再进行预测显得更加精准、高效,svm算法是用于对样本数据分类且训练数据回归与分析的一种算法,将魔方色块六个颜色的颜色空间类别作训练数据,首先构建一个完整的分类器而后建立一个分类模型,将上述训练数据分配给不同标签,该分类模型成为一个非概率meta线性回归,并划分出最大的“间隔”分开两类,之后的所有的数据点将会映射到对应的类别中,并根据数据在超平面中间隔的哪一侧来预测类别,在使用svm算法识别魔方色块颜色的前提下,由于环境、光线、阴影等因素的变化,仍然存在一些无法识别或识别错误的色块,为了解决这个问题,本例根据魔方的结构分布、空间位置和颜色特征分布规律进行颜色补齐,在最多缺失一个面的情况下补全魔方,提高了颜色识别的准确性,如图6所示,采用传统的rgb或hsv阈值限定方法使得识别结果易受光照环境改变的影响,鲁棒性较差,并且,mit0.38s还原魔方的团队也是因为使用传统的颜色识别从而无法分辨红色与橙色的原因,所以用黑色魔方块代替了橙色魔方块,从而避免颜色的误识别,采用svm分类训练的方法对魔方的色块颜色进行分类识别,消除了光照强度对颜色识别的影响,魔方的颜色识别基本不会出错,提高了整个系统的工作稳定性,如图7所示。步骤5)中所述的中心块判决为:每个魔方的状态都可以得到魔方六个面对应的唯一展开图,魔方原始状态或还原状态的平面展开图,即从u面开始编号用1、2、3。。。数字来表示组成,最后1到48的数字表示一个完整的魔方,如图4所示,本例不讨论特殊的魔方着色,即研究现行的国际标准着色原则,中心块是相对固定的,6个中心块方块的相对位置永远无法改变,中心块判决采用一个数组存储魔方各个色块的颜色,强制改变中心块的颜色即令[4]=白、[13]=红、[22]=绿、[31]=黄、[40]=橙、[49]=蓝。步骤5)中所述的角块判决为:由于每个魔方的角块实际上都是一个一阶魔方体,因此每个角块的颜色与魔方原配色完全相同,这就是对角块推断的依据,知道角块两边的颜色,就能够推导出角块第三面的颜色,不过角块缺失两个以上的颜色时无法推断出缺失的颜色,魔方角块的规律为:(1)红橙相对;(2)蓝绿相对;(3)黄白相对;(4)上黄下白;(5)逆时针来看色彩排序:红绿橙蓝,八个角块分别为:白橙蓝(0,36,47)、白红蓝(2,11,45)、白绿橙(6,18,38)、白红绿(8,9,20)、绿黄橙(24,27,44)、绿红黄(15,26,29)、黄橙蓝(33,42,53)、红黄蓝(17,35,51),魔方角块的颜色不会因旋转而改变,只要捕捉到角块的两个颜色,就可以“上黄下白,红绿橙蓝”的规律推断出缺少的颜色,角块判决如图5所示,过程为:5-1)固定魔方的urfdlb六个面分别对应白红绿黄橙蓝wrgyob;5-2)八个角块对应的数组位置分别为:(0,36,47)-wgr、(2,11,45)-wgo、(6,18,38)-wbr、(8,9,20)-wbo、(24,27,44)-ygr、(15,26,29)-ygo、(33,42,53)-ybr、(17,35,51)-ybo;5-3)设定四个数组,其中三个数组存储角块的24个位置,还有一个corner数组判断哪个角块位置出错:corner[8]={0};a[8]={0,2,6,8,24,15,33,17};b[8]={36,11,18,9,27,26,42,35};c[8]={47,45,38,20,44,29,53,51};5-4)按照角块算法规定,只有两个大类w白色与y黄色,每个大类中有两个中类g绿色与蓝色,每个中类中又有两个小类r红色与o橙色,然后采用8次轮询数组的位置去检测上述位置中角块的三组颜色是否正确;5-5)大类w白色会在0、2、6、8、9、11、18、20、36、38、45、47中的十二个位置随机出现,所以轮询首先判断上述的位置中是否存在大类w白,如果大类为白色,则中类有g绿色与b蓝色两种情况,接下来判断中类是否为g绿色,如果中类为g绿色则有wgr、wgo两种情况,如果小类为r红色则判定(0,36,47)这个位置的角块三种颜色wgr识别成功,标志位数组corner[0]置1,如果小类为o橙色则判定(2,11,45)这个位置的角块三种颜色wgo识别成功,标志位数组corner[1]置1,如果中类不是g绿色而是b蓝色则有wbr、wbo两种情况,判断小类为r红色则判定(6,18,38)这个位置的角块三种颜色wbr识别成功,标志位数组corner[2]置1,如果小类为o橙色则判定(8,9,20)这个位置的角块三种颜色wbo识别成功,标志位数组corner[3]置1;5-6)接下来判断大类y黄色,大类y黄色会在15、17、24、26、27、29、33、35、42、44、51、53中的十二个位置随机出现,在大类y黄色中有两种中类g绿色与b蓝色两种情况,接下来判断中类是否为g绿色,如果中类为g绿色则有ygr、ygo两种情况,如果小类为r红色则判定(24,27,44)这个位置的角块三种颜色ygr识别成功,标志位数组corner[4]置1,如果小类为o橙色则判定(15,26,29)这个位置的角块三种颜色ygo识别成功,标志位数组corner[5]置1,如果中类不是g绿色而是b蓝色则有ybr、ybo两种情况,判断小类为r红色则判定(33,42,53)这个位置的角块三种颜色wbr识别成功,标志位数组corner[6]置1,如果小类为o橙色则判定(17,35,51)这个位置的角块三种颜色ybo识别成功,标志位数组corner[7]置1;5-7)角块算法则根据数组corner中的标志位去判断哪个角块位置是识别错误的,然后去修补该位置缺失的颜色,例如corner[0]=0,算法则检验(0,36,47)位置中的三种颜色,在(0,36,47)中只可能存在w红色、g绿色、r红色三种,如只出现了w红色与g绿色,则可知道识别错误的为r红色,然后强制变化另一个颜色为红色,该修补算法只需通过校验这三个位置,只要有两个成功识别颜色然后去强制修改另一个识别颜色错误,就可完成一个角块的颜色修补。步骤5)中所述的棱块判决过程为:如图4着色图所示,魔方共有12个棱块,分别为白蓝(1,46)、白橙(3,37)、白红(5,10)、白绿(7,19)、黄绿(28,25)、黄橙(30,43)、黄红(32,16)、黄蓝(34,52)、红绿(12,23)、红蓝(14,48)、蓝橙(50,39)、绿橙(21,41),棱块的判决和角块判决类似,但棱块不能直接从一个颜色来推断另一面的颜色,因为同一个颜色的棱块有四个会在不同的面出现,所以棱块的推断必须知道其余三个面的棱块来进行校验色块信息是否准确:a:固定魔方的urfdlb六个面分别对应白红绿黄橙蓝wrgyob;b:十二个角块对应的数组位置分别为:(1,46)-wg、(3,37)-wr、(5,10)-wb、(7,19)-wo(28,25)-yg、(30,43)-yr、(32,16)-yb、(34,52)-yo(12,23)-gr、(14,48)-go、(50,39)-br、(21,41)-bo;c:设定三个数组,其中两个数组存储棱块的24个位置,还有一个edge数组判断哪个棱块位置出错:a[12]={1,3,5,7,28,30,32,34,12,14,50,21};b[12]={46,37,10,19,25,43,16,52,23,48,39,41};edge[12]={0};d:规定分为四个大类w白色、y黄色、g绿色、b蓝色,在大类w白色与y黄色中有存在另外三种颜色的情况,在大类g绿色和b蓝色中有存在r红色与o橙色的情况,采用12次轮询数组的位置去检测上述位置中的棱块;e:首先判断大类w白色,w白色会在1、3、5、7、10、19、37、46中的八个位置随机出现,接下来识别到g绿色则(1,46)位置识别成功,标志位edge[0]置1,识别到r红色则(3,37)位置识别成功,标志位edge[1]置1,识别到b蓝色则(5,10)位置识别成功,标志位edge[2]置1,识别到o橙色则(7,19)位置识别成功,标志位edge[3]置1;f:接下来判断大类y白色,y黄色会在16、25、28、30、32、34、43、52中的八个位置随机出现,然后识别到g绿色则(28,25)位置识别成功,标志位edge[4]置1,识别到r红色则(30,43)位置识别成功,标志位edge[5]置1,识别到b蓝色则(32,16)位置识别成功,标志位edge[6]置1,识别到o橙色则(34,52)位置识别成功,标志位edge[7]置1;g:然后继续判断大类g绿色,g绿色会在12、14、23、48中的四个位置随机出现,然后识别到r红色则(12,23)位置识别成功,标志位edge[8]置1,识别到o橙色则(14,48)位置识别成功,标志位edge[9]置1;h:最后判断大类b蓝色,b蓝色会在21、39、41、50中的四个位置随机出现,然后识别到r红色则(50,39)位置识别成功,标志位edge[10]置1,识别到o橙色则(21,41)位置识别成功,标志位edge[11]置1;i:根据数组edge中的标志位去判断哪个棱块位置是识别错误的,在白色大类识别错误一个颜色,则只能通过校验edge[0]、edge[1]、edge[2]、edge[3]的标志位去还原颜色:i-1)当edge[0]=0、edge[1]=1、edge[2]=1、edge[3]=1时,则知道缺失了g绿色;i-2)当edge[0]=1、edge[1]=0、edge[2]=1、edge[3]=1时,则知道缺失了r红色;i-3)当edge[0]=1、edge[1]=1、edge[2]=0、edge[3]=1时,则知道缺失了b蓝色;i-4)当edge[0]=1、edge[1]=1、edge[2]=1、edge[3]=0时,则知道缺失了o橙色。本例首先采用opencv进行高斯滤波对图像边缘处理,再经过rgvhsv色域转换处理图像,采用svm分类器算法,建立了魔方六种颜色的类别模型来提高魔方颜色的捕获准确度,同时根据魔方的整体结构提出角、棱、中心块修补,将svm类别模型与颜色修补算法相结合,根据分类器预判出的颜色值与魔方色块修补校验从而得出魔方每个色块的颜色。实验仿真证明本例方法有效提高了系统识别魔方颜色的速度和精度,精准识别魔方色块的颜色。实验仿真:采用matlab2016a仿真软件对本例方法进行实验,在魔方的色块中,红色与橙色是近似的颜色,所以采取此两种颜色作为测试数据,生成红色:橙色=9986:14的非均衡样本,从这10000个数据中随机抽取200个红色样本和10个橙色样本,将本例方法与传统svm分类器算法进行对比,实验的参数设置如表2所示:表2实验参数设置,数据生成:9986:14的非均衡样本如图11所示,训练样本是从这10000个数据中随机抽取200个正类(红色)样本和10个(橙色),如图12所示,首先对数据进行进行预处理,将数据规范到[-1,1],然后利用网格搜索优化惩罚系数c寻优结果数据规范示意图如图13所示,网格搜索优化svm核函数的参数系数g寻优结果数据规范(3d)示意图如图14所示,惩罚系数c,理解为调节优化方向中两个指标(间隔大小,分类准确度)偏好的权重,即对误差的宽容度,c越高,说明越不能容忍出现误差,容易过拟合,c越小,容易欠拟合,c过大或过小,泛化能力变差,svm核函数的参数系数g,隐含地决定了数据映射到新的特征空间后的分布,g值越大,支持向量越少,g值越小,支持向量越多,支持向量的个数影响训练与预测的速度,再采用svm分类器算法对数据进行训练,通过一对多算法得到的结果为表3:表3算法测试数据实验结果和分析:由于所生产的数据是非均衡、非线性的数据,所以无法根据拟合曲线算法进行检测,只能通过训练数据然后去预测颜色,由表3中可看出,svm分类器算法在大数据样本训练下,识别出的红色样本准确率也是较高,但是对少数的橙色样本估计不准确,对于这两种极端非均衡数据,当svm算法训练完成后,性能测试其实是个比较大的问题,尤其是针对少数类样本的分类准确率的测试,这个时候只能通过大量的样本才能够得到一个较为可信的分类预测准确率,而本例方法在两种极端的数据下,仍有很高的准确度,误差均低于svm算法。因为本例方法根据魔方的结构对所有的中心块、角块、棱块都进行判断与矫正颜色处理,能改善svm算法对少数类样本识别不准的问题。本例颜色修补算法测试:输入一个错误的54个颜色的数组:(goywwgwwowrygrgoobbbgbgowbwrgboyyogryorrorbbgwyyybyyry),经过颜色修补算法后会还原成正确的魔方色块颜色,如图15所示为:(gbywwwwwowrggrgoobbbgbgowwwrgboyyogrrorrorbbgoyyybyyry)。当前第1页12