一种针对三阶魔方的自动填色及抽象化方法与流程

文档序号:21412624发布日期:2020-07-07 14:49阅读:1132来源:国知局
一种针对三阶魔方的自动填色及抽象化方法与流程

本发明涉及一种针对三阶魔方的自动填色及抽象化模型建立方法,具体涉及魔方色块的单目视觉识别及魔方色块的抽象化表示方法。



背景技术:

魔方是生活中常见的一种益智玩具,而三阶魔方由于上手容易,特别适合对初学者进行教学和训练,也常常作为魔方自动复原装置的操作对象。自动装置还原魔方的第一步即需识别魔方各个面上颜色块,现有的技术往往采用多颜色传感器或摄像头分别对单一面或单一区块进行颜色识别,因此装置成本较高,不适合推广应用,并且在魔方色块的抽象化表示中往往采用展开图数字标记的方法,需要在计算机中储存大量规则,尤其对于高阶魔方,抽象化模型建立过程相对复杂。



技术实现要素:

本发明旨在提供一种针对三阶魔方的填色及抽象化模型建立方法,在保证识别效率变化不大的情况下解决了颜色识别成本过高的问题,并且提出的魔方抽象化模型可以简化魔方的表达,更适合高阶魔方的算法编程。

本发明包含三个部分:分别为魔方的抽象化表达模型即魔方状态模型、基于单目视觉的魔方色块识别以及基于上述两者的三阶魔方自动填色方法。

本发明定义魔方的状态模型用于描述魔方每次旋转后各个色块的移动规律,通过魔方的状态模型可以将魔方的每次操作、每种状态抽象化。通过构建以魔方中心o为坐标系原点的右手系空间直角坐标系xyz,坐标轴通过各个面的中心块,各个面上的各个色块均可由该空间内的点{(x,y,z)|x,y,z∈{-3,-2,0,2,3}}唯一确定,并且色块的颜色即f(x,y,z)。

在本发明定义的魔方状态模型中,对魔方只需要12种基本操作方法,即各个面的顺时针90°旋转以及各个面的逆时针90°旋转。并且所有的基本操作都可以转换成色块坐标的空间变换,设魔方旋转前色块坐标为(x,y,z),基本操作后色块坐标经过空间变换为(x′,y′,z′),新位置下色块颜色g(x′,y′,z′)=f(x,y,z),最终形成的即为旋转前后的魔方状态变化关系。

本发明提出的基于单目视觉识别的魔方色块提取可细化为图像去噪、轮廓识别、网格划分、色彩比对这四步。

图像去噪步骤包含对图像进行的两次滤波过程。首先使用双边滤波对摄像头获取到的魔方照片进行处理。双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果,使用该滤波器可以在降噪的同时保存魔方的边缘,为后面的边缘检测、网格划分提供便利。在双边滤波结束后,继续对图片进行非局部平均降噪。该降噪与前面的双边滤波不同的是,该算法利用整幅图像来进行降噪,在图像中以块为单位寻找相似区域,然后对相似区域的颜色求平均值。经过图像去噪步骤后干扰魔方识别的背景噪点会被精准的过滤掉。

边缘识别步骤包含梯度计算、梯度二值化、边界点定位三个过程。图像边缘的像素点梯度值会趋于一个较大的数值,因此可以通过求取图像各像素点的梯度来判断图像的边缘。为了提高色块提取效率,本发明摄像头安装于魔方对角侧,可以同时获取魔方三个面的图像,通过la、lb、lc、ld、le、lf六条直线逼近轮廓边缘定位魔方六个边界点的位置,从而便于对其进行网格划分。具体实现过程,本算法提供两种搜索方式,分别为多边形逼近搜索和水平扫描搜索,根据搜索效率选用原则如下:设为多边形逼近重复搜索面积,sabcdef为多边形逼近未搜索面积,如果则选用多边形逼近搜索,否则选用水平扫描搜索。

网格划分步骤包含基向量计算、色块中心点定位、图像取样三个过程。魔方各色块的位置均可由边界点构成的魔方空间的基向量线性导出,六个边界点,可以确定两组重复的基向量,利用这个特点可以矫正边界点定位误差。根据中心点坐标(xi,yj)截取中心矩形区域,即完成对色块的取样。

色彩对比步骤包含色彩校正、色彩空间二值化、可能性计算三个过程。由于魔方色块颜色识别的准确率直接影响魔方的求解,通过色彩校正可以极大提高颜色识别的准确率,在摄像头固定位置放置比色卡,比色卡包含标准魔方所需的六种颜色,每次拍摄时比色卡与魔方处于相同的光照环境,因此可以直接从比色卡相应区域提取色彩空间二值化的高阈值th及低阈值tl。色彩空间二值化即每个像素点(x,y)判断其hsv值是否位于高低阈值内,如果位于高低阈值内,则此点像素值g(x,y)=255,否则此点像素值g(x,y)=0。对六种颜色分别进行色彩空间二值化得到图像矩阵mi(i=0,1,2,3,4,5),每种颜色的可能性则可由矩阵的和si=sum(mi)表示,使得矩阵和si最大的那种颜色即为可能性最大的颜色,作为色块颜色识别的最终结果。

利用本发明提出的魔方色块单目视觉识别以及魔方状态模型,可以对三阶魔方进行自动填色。本发明提出12步操作方法,对魔方进行4次取样即可完整获取魔方的初始状态,以下是具体的实现方法:

摄像头位于魔方的对角线上,可以一次拍摄魔方的三个面,由上文提出的色块提取方法,可以一次性获取三个面上所有色块的颜色。将魔方初始状态记为状态(1),第一次拍摄取样可以获取色块{(x,y,z)|(x=3)or(y=3)or(z=3)}上的颜色。第一、二步操作同时对面z=±3连续两次顺时针旋转90°得到状态(2),此时进行第二次拍摄取样,可以获取色块{(x′,y′,z′)|x′=3,z′=±2}以及{(x′,y′,z′)|y′=3,z′=±2}上的颜色;第三、四步操作继续对面z=±3连续两次顺时针旋转90°回到状态(1);第五、六步操作对x=±3连续两次顺时针旋转90°得到状态(3),此时进行第三次拍摄取样,可以获取色块{(x′,y′,z′)|z′=3,x′=±2}以及{(x′,y′,z′)|y′=3,x′=±2}上的颜色;第七、八步操作继续对面x=±3连续两次顺时针旋转90°回到状态(1);第九、十步操作对y=±3连续两次顺时针旋转90°得到状态(4),此时进行第四次拍摄取样,可以获取色块{(x′,y′,z′)|z′=3,y′=±2}以及{(x′,y′,z′)|x′=3,y′=±2}上的颜色;第十一、十二步操作继续对面x=±3连续两次顺时针旋转90°回到状态(1)。根据上文所述的状态模型对所有的旋转后色块(x′,y′,z′)逆向转换即可得到旋转前即状态(1)中色块(x,y,z)的颜色f(x,y,z)。至此,魔方54个色块已经获取51个色块的颜色,剩余3个无法获取的色块颜色为三个面的中心块颜色,根据魔方复原原理,魔方只需要获得所有角块、棱块的颜色即可,因此本方法满足魔方复原的要求。

附图说明

图1为本发明的魔方状态模型示意图

图2为本发明的魔方边界点提取算法示意图

图3为本发明的魔方空间网格划分算法示意图

图4为本发明的三阶魔方自动填色方法流程图

图5为本发明的三阶魔方自动填色方法示意图

具体实施方式

以下,结合附图以及具体实施方法,对本发明做进一步阐述。

本发明定义魔方的状态模型用于描述魔方每次旋转后各个色块的移动规律,通过魔方的状态模型可以将魔方的每次操作、每种状态抽象化,具体的实现方法如下:

如说明书附图1所示,魔方具有每一个中心块与每一个面的绝对位置关系唯一确定的特性,该特性是分析魔方并确定魔方打乱状态后的棱块、角块位置的重要参考标准。根据这一特性,构建以魔方中心o为坐标系原点的右手系空间直角坐标系xyz,坐标轴通过各个面的中心块,各个面上的各个色块均可由该空间内的点{(x,y,z)|x,y,z∈{-3,-2,0,2,3}}唯一确定,并且色块的颜色即f(x,y,z)。

六个面可分别用x,y,z标号,即x=±3,y=±3,z=±3,若定义目标面标号为a,则相对面标号为-a,相邻面为非目标面、非相对面。魔方三类色块的坐标也满足一定特点:中心块坐标满足(x,0,0)or(0,y,0)or(0,0,z),角块坐标满足{(x,y,z)or(x,y,z)or(x,y,z)||x|=2,|y|=2,|z|=2},棱块则为非中心块、角块的色块。

在本发明定义的魔方状态模型中,对魔方只需要12种基本操作方法,即各个面的顺时针90°旋转以及各个面的逆时针90°旋转。由于色块即为空间中的点,因此对魔方的旋转可以转化为空间中点的旋转,也就得到魔方旋转与魔方状态的映射关系:

设魔方旋转前色块坐标为(x,y,z),顺时针90°旋转后色块坐标为(x′,y′,z′),逆时针90°旋转后色块坐标为(x″,y″,z″),需要计算的色块坐标集合为p

对面x=±3旋转:p={(x,y,z)|x=±3,±2}

对面y=±3旋转:p={(x,y,z)|y=±3,±2}

对面z=±3旋转:p={(x,y,z)|z=±3,±2}

旋转后

g(x′,y′,z′)=f(x,y,z),g(x″,y″,z″)=f(x,y,z)(4)

最终形成的即为旋转前后的魔方状态变化关系。

魔方的状态即魔方各个面中所有色块的分布,此分布具有一个重要性质:魔方一旦建立,不论如何打乱各面的颜色,魔方复原后各面色块的分布是相同的。由此产生推论,魔方建立后的任何状态都可以唯一确定这个魔方。为节约商业成本,本发明仅采用单一摄像头,单次拍摄可以获取3个面的色块信息,通过对魔方进行12次旋转、4次拍摄获取魔方各个面的色块分布,即魔方的状态。如说明书附图4所示,魔方状态的获取过程可以划分为两个步骤,步骤一是基于单目视觉识别的魔方色块提取,步骤二是基于状态模型的魔方色块合成。其中,步骤一可细化为图像去噪、轮廓识别、网格划分、色彩比对这四步;步骤二可细化为魔方执行规定动作、摄像头取样、色块提取、合成状态模型这四步。

图像去噪步骤包含对图像进行的两次滤波过程。首先使用双边滤波对摄像头获取到的魔方照片进行处理。双边滤波是一种非线性滤波器,它可以达到保持边缘、降噪平滑的效果,使用该滤波器可以在降噪的同时保存魔方的边缘,为后面的边缘检测、网格划分提供便利。在双边滤波结束后,继续对图片进行非局部平均降噪。该降噪与前面的双边滤波不同的是,该算法利用整幅图像来进行降噪,在图像中以块为单位寻找相似区域,然后对相似区域的颜色求平均值。经过图像去噪步骤后干扰魔方识别的背景噪点会被精准的过滤掉。

双边滤波具体算法如下:

设(i,j)为摄像头采集到的魔方图像中的某个像素点坐标,s则为(i,j)的相邻像素区域,其中(k,l)∈s。经过双边滤波器后,(i,j)点输出的像素值g(i,j)可以表达为

其中

对图像中的每一个像素点(i,j)求取g(i,j)即完成双边滤波过程。

在本算法的实现过程,需要设定三个参数的取值,分别为决定像素邻域s大小的邻域直径d,本发明中设定为9较为合适;决定坐标空间范围的σd,该参数数值越大,意味着越远的像素会相互影响,从而使更大的区域足够相似的颜色获取相同的颜色,本发明中设定为300较为合适;决定颜色空间范围的σr,该参数的值越大,就表明该像素邻域内有更宽广的颜色会被混合到一起,产生较大的半相等颜色区域,本发明中设定为300较为合适。

非局部平均降噪具体算法如下:

设经过双边滤波后的魔方图像中以x为中心的某个像素块为搜索窗口i,以y为中心的某个像素块为邻域窗口v。本算法基本过程是邻域窗口在搜索窗口中滑动,通过计算两个邻域窗口间的相似程度为y赋以权值ω(x,y),具体计算方法如下:

其中

设邻域窗的像素值为v(y),去噪后图像的像素值为g(x),则:

对图像中的每一个像素点x求取g(x)即完成非局部平均降噪过程。

在本算法的实现过程,需要设定三个参数的取值,分别为平滑参数h,该参数控制高斯函数的衰减程度,越大高斯函数变化越平缓,去噪水平越高,但同时也会导致图像越模糊,越小,边缘细节成分保持得越多,但会残留过多的噪声点,本发明中的具体取值为10较为合适;邻域窗口v的大小,本发明中设定为7较为合适;搜索窗口i的大小,本发明中设定为21较为合适。

边缘识别步骤包含梯度计算、梯度二值化、边界点定位三个过程。

图像边缘的像素点梯度值会趋于一个较大的数值,因此可以通过求取图像各像素点的梯度来判断图像的边缘。

梯度计算公式如下:

其中gx为沿x方向导数的模,gy为沿y方向导数的模,g为梯度的模,θ为梯度方向。

但考虑设备上微型电脑的算力,本发明采用简化梯度模的计算公式:

g=|gx|+|gy|(12)

同样考虑设备算力,本发明采用sobel算子,即:

则像素点(x,y)的梯度的模gp可计算为:

gp=|sx*a|+|sy*a|(14)

其中a为以像素点(x,y)为中心的像素块。

将梯度映射至边缘可称为梯度二值化。设像素点x的梯度的模为gp,梯度方向为θ,是边缘的梯度必须同时满足以下三个条件:

(1)如果沿θ方向的相邻像素点梯度为gp1,沿π-θ方向的相邻像素点梯度为gp2,满足gp≥gp1且gp≥gp2则为轮廓边缘,否则抛弃该梯度值。

(2)设置高阈值th及低阈值tl,如果gp≥th则gp为强边缘,如果tl≤gp≤th则gp为弱边缘,如果gp≤tl则抛弃该梯度值。

(3)如果gp属于弱边缘,则检测其周围是否存在强边缘,如果存在则gp为强边缘,否则抛弃该梯度值。

如果像素点x满足上述条件,则为边缘,此点像素值g(x,y)=255,否则此点像素值g(x,y)=0。

在本算法的实现过程,需要设定两个参数即高阈值th和低阈值tl的取值,该参数共同决定了像素点成为边缘的难易程度,如果tl和th均较大,则只会有很少的像素点成为边缘,反之则会有较多的像素点成为边缘。本发明中tl设定为50,th设定为100较为合适。

为了提高色块提取效率,本发明摄像头安装于魔方对角侧,可以同时获取魔方三个面的图像,通过边界点提取算法,定位魔方六个边界点的位置,从而便于对其进行网格划分。为了提高算法的普适性,本发明假定魔方可能位于摄像头取景框内任何位置,如说明书附图2所示,所需提取的边界点按逆时针顺序依次为a、b、c、d、e、f。

边界点提取算法通过la、lb、lc、ld、le、lf六条直线逼近轮廓边缘,各边界点满足以下数学条件:

设u={(x,y)|g(x,y)=255}则

a={(x,y)|y=min(y1,...,yj),(i,j)∈u}

b={(x,y)|y-kbx=min(y1-kbx1,...,yj-kbxi),(i,j)∈u}

c={(x,y)|y-kcx=max(y1-kcx1,...,yj-kcxi),(i,j)∈u}

d={(x,y)|y=max(y1,...,yj),(i,j)∈u}

e={(x,y)|y-kex=max(y1-kex1,...,yj-kexi),(i,j)∈u}

f={(x,y)|y-kfx=min(y1-kfx1,...,yj-kfxi),(i,j)∈u}

其中kb、kc、ke、kf为逼近线lb、lc、le、lf的斜率,需满足条件:kb,ke<0,kc,kf>0,一般取值为kb,ke=-2,kc,kf=2,此斜率取值与魔方的摆放姿态相关。

具体实现过程,本算法提供两种搜索方式,分别为多边形逼近搜索和水平扫描搜索,根据搜索效率选用原则如下:

为多边形逼近重复搜索面积,sabcdef为多边形逼近未搜索面积,如果则选用多边形逼近搜索,否则选用水平扫描搜索。

多边形逼近搜索的具体实现如下:

逼近直线la、lb、lc、ld、le、lf的解析式分别为:

la:f(x)=b

lb:f(x)=kbx+b

lc:f(x)=kcx+h-b

ld:f(x)=h-b

le:f(x)=ke(w-x)+(h-kew-b)

lf:f(x)=kf(w-x)+(-kew+b)

其中w为图像的宽度,h为图像的高度,b控制搜索范围,一般b>max(w,h)即可满足搜索要求。

伪代码如下

水平扫描搜索的具体实现伪代码如下:

网格划分步骤包含基向量计算、色块中心点定位、图像取样三个过程。

如说明书附图3所示,魔方各色块的位置均可由线性导出,即为魔方空间的基向量。六个边界点,可以确定两组重复的基向量,利用这个特点可以矫正边界点定位误差,具体算法如下:

abgf面各色块中心点计算公式:

bcdg面各色块中心点计算公式:

gdef面各色块中心点计算公式:

其中p为i方向上的坐标偏移值,q为j方向上的坐标偏移值,标准魔方p=0.5,q=0.5,如果网格划分有错位,可以微调p和q的数值修正网格划分。

根据中心点坐标(xi,yj)截取中心矩形区域,即完成对色块的取样。

色彩对比步骤包含色彩校正、色彩空间二值化、可能性计算三个过程。

由于魔方色块颜色识别的准确率直接影响魔方的求解,通过色彩校正可以极大提高颜色识别的准确率,具体方法如下:

在摄像头固定位置放置比色卡,比色卡包含标准魔方所需的六种颜色,每次拍摄时比色卡与魔方处于相同的光照环境,因此可以直接从比色卡相应区域提取色彩均值tm,则色彩空间二值化的高阈值th及低阈值tl可以表达为:

th=tm+r(19)

tl=tm-r(20)

其中r为阈值半径,半径越小色彩识别的容差就越小,本发明hsv色彩空间中色相h的阈值半径设置为2,饱和度s和明度v的阈值半径设置为50。

色彩空间二值化即每个像素点(x,y)判断其hsv值是否位于高低阈值内,如果位于高低阈值内,则此点像素值g(x,y)=255,否则此点像素值g(x,y)=0,具体表达如下:

对六种颜色分别进行色彩空间二值化得到图像矩阵mi(i=0,1,2,3,4,5),每种颜色的可能性则可由矩阵的和si=sum(mi)表示,使得矩阵和si最大的那种颜色即为可能性最大的颜色,作为色块颜色识别的最终结果。

根据魔方的状态模型,对魔方进行的任何一种基本操作都可以根据操作前魔方的状态得到操作后魔方的状态,因此获取魔方最初的状态就成为复原魔方的关键。如说明书附图5所示,本发明提出12步操作方法,对魔方进行4次取样即可完整获取魔方的初始状态,以下是具体的实现方法:

摄像头位于魔方的对角线上,可以一次拍摄魔方的三个面,由上文提出的色块提取方法,可以一次性获取三个面上所有色块的颜色。魔方初始状态如附图中状态(1)所示,第一次拍摄取样可以获取色块{(x,y,z)|(x=3)or(y=3)or(z=3)}上的颜色。第一、二步操作同时对面z=±3连续两次顺时针旋转90°得到状态(2),此时进行第二次拍摄取样,可以获取色块{(x′,y′,z′)|x′=3,z′=±2}以及{(x′,y′,z′)|y′=3,z′=±2}上的颜色;第三、四步操作继续对面z=±3连续两次顺时针旋转90°回到状态(1);第五、六步操作对x=±3连续两次顺时针旋转90°得到状态(3),此时进行第三次拍摄取样,可以获取色块{(x′,y′,z′)|z′=3,x′=±2}以及{(x′,y′,z′)|y′=3,x′=±2}上的颜色;第七、八步操作继续对面x=±3连续两次顺时针旋转90°回到状态(1);第九、十步操作对y=±3连续两次顺时针旋转90°得到状态(4),此时进行第四次拍摄取样,可以获取色块{(x′,y′,z′)|z′=3,y′=±2}以及{(x′,y′,z′)|x′=3,y′=±2}上的颜色;第十一、十二步操作继续对面x=±3连续两次顺时针旋转90°回到状态(1)。根据上文所述的状态模型对所有的旋转后色块(x′,y′,z′)逆向转换即可得到旋转前即状态(1)中色块(x,y,z)的颜色f(x,y,z)。至此,魔方54个色块已经获取51个色块的颜色,剩余3个无法获取的色块颜色为三个面的中心块颜色,根据魔方复原原理,魔方只需要获得所有角块、棱块的颜色即可,因此本方法满足魔方复原的要求。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1