一种电视遥控方法及用该方法遥控操作电视机的系统 【技术领域】
本发明涉及一种电视遥控技术,具体涉及一种电视的遥控方法及用该方法实现遥控操作电视机的系统。
背景技术
随着数字电视的逐渐普及,广大消费者更多地希望能与电视进行互动,既可以收看广播电视节目,又可以在不中断正在播放的电视节目的时同时,查看其他服务信息,如电子节目指南、股票行情、时事新闻、娱乐信息等;或者通过数字电视来与数字电视运营商提供的其他服务项目互动,如游戏、浏览网页、照片的播放、收发电子邮件、视频点播等只有在计算机上才能进行的娱乐活动,此时,应用于电视上的控制装置,尤其是遥控器就显得格外重要。然而,传统的利用红外线的遥控器已经越来越不适应数字电视的操作要求
目前,也可以通过计算机外围设备,如鼠标、键盘等来实现上述交互目的,而计算机外围设备虽然可以进行完善的人机交互,但该类设备需要借助于茶几或桌面的操作平台。此外,该类设备的便携性较差,也不符合消费者用遥控操作习惯。
另一方面,借助遥控器或其它外设输入装置,可以解决操作距离的问题,但无任使用哪种类型的操作设备都存在丢失、寻找不便的麻烦。
因此,提供一种利用手势进行遥控操作电视的方法及用该方法实现的遥控系统将是非常必要的。
【发明内容】
本发明要解决的技术问题是,提供一种利用手势进行遥控操作电视的方法。
利用手势进行遥控操作电视的方法包括以下步骤:
操作者对摄像头给出特定手势动作;
摄像头获取的特定手势传输到电视内的三维运动识别模块,进行三维运动及动作识别;
模块获得特定手势的三维运动坐标,输出控制信号;
判断手势的位置坐标是否与相应操作界面的菜单位置区域相对应,如是,进入下一个步骤;
电视机内的执行装置根据控制信号执行相对应的程序。
其中摄像头采集特定手势图像的参数包括手的肤色特征,或手的边缘方向特征,或手的纹理特征,或手的形状特征。
其中的三维运动及动作识别过程,包括以下的步骤:
1)在三维运动识别模块中以二维的坐标数据为基础建立物体姿态模板;
2)物体识别单元根据姿态模板对被识别物体进行姿态识别;
3)聚焦控制检测电路对被识别物体进行聚焦,获得被识别物体在成像空间上的图像二维坐标和焦距;
4)将该成像空间上的二维坐标和焦距参数进行转换,输出物体的三维空间坐标数据;
5)以三维坐标空间数据为基础构造得出物体三维运动及动作特征。
其中上述的步骤4)可以替换为:建立参数初始化模板,将成像空间上的二维坐标和焦距与参数初始化模板内数据进行比较和参数转换,输出物体的三维空间坐标数据。
上述步骤3)和4)可以替换为:建立参数初始化模板,将被识别物体在成像空间上的象素坐标和大小与参数初始化模板内数据进行比较和参数转换,输出物体的三维空间坐标数据。
所述的电视遥控方法采用一个或两个摄像头。
本发明要解决的另一个技术问题是提供一种利用手势遥控操作电视机的系统。
一种应用上述电视遥控方法实现遥控操作电视机的系统,其特征在于包括:
一个或一个以上用于获取操作者特定手势动作的摄像头;
一个接收摄像头获取的特定手势信息并进行三维运动及动作识别的三维运动识别模块;
一个将三维运动识别模块所获得的三维运动坐标转换成控制信号的转换器;
一个将手势的位置坐标与相应操作界面的菜单位置区域相比较、并输出控制信号的比较器;
一个根据控制信号来执行相对应的程序的执行装置。
所述三维运动识别模块包括:
一个以二维的坐标数据为基础建立的物体姿态模板;
一个根据姿态模板对被识别物体进行姿态识别的物体识别单元;
一个对被识别物体进行聚焦,获得被识别物体在成像空间上的图像二维坐标和焦距地聚焦控制检测电路;
一个将二维坐标和焦距参数进行转换,输出物体三维运动坐标数据的空间坐标输出模块。
本发明利用一种新的三维运动识别方法,从图像中检测运动目标并识别其三维运动和特定动作,首先通过对图像进行必要的预处理,从图像中提取出图像特征,根据特征的对应关系估计图像的二维运动特性,进行特征匹配;然后根据刚体运动方程和投影关系建立一组方程,求解物体的运动参数和结构。通过对该方法的利用,用手势来进行电视的遥控操作,并且借助于特定的遥控操作系统,使得电视的遥控操作变得更为简单和人性化。特别是可以借此最为平台,在电视上扩展原本只有在计算机上才能进行的娱乐功能,而且还不需要配置鼠标、键盘等计算机外围设备。
【附图说明】
图1为单个摄像头的二维识别图像处理单元的结构框图;
图2为手的二维坐标示意图;
图3为方法1中单个摄像头三维识别图像处理单元的结构框图;
图4为单个摄像头所形成的三维空间示意图;
图5为被识别物体的空间位置与成像坐标关系示意图;
图6为方法2中单个摄像头三维识别图像处理单元的结构框图;
图7为特定被识别物体的成像关系示意图;
图8为原始物体的空间位置与成像坐标关系示意图;
图9为方法3中两个摄像头三维识别图像处理单元的结构框图;
图10为两个摄像头所形成的三维坐标示意图;
图11为两个摄像头所形成的三维空间分区示意图;
图12为被识别物体在X轴上的成像关系示意图;
图13为被识别物体在Y轴和Z轴组成的平面上图像位置和实物的关系。
【具体实施方式】
图1表示目前摄像头识别特定物体二维运动时候的框架,例如要识别的特定物体是一个手,那么将手的姿势先存入到图1中的姿态模板中,然后启动摄像头对外部空间进行拍摄,如果不能发现姿态模板中具有相同外形的物体,则不进行后面动作的输出,如果发现有类似外形物体出现,则进行后面动作的输出。图2表述手的坐标,可以只选取其手指上一点,把这个图像的左下角的位置定义为坐标(0,0),因为这个图像的外形尺寸是已知的,那么很容易知道手指上那一点的对应在图像空间上的坐标(x,y)了。这样通过不断的识别手的形状在成像空间上的位置,就可以不断的输出其真实所在的位置,于是就可以识别物体的二维运动了。
利用手势遥控操作电视的一个前提是电视如何对手势的运动进行三维识别,而手势识别包括对手图像的识别及动作的识别两个部分,也就是说先要识别出什么是手,然后需要计算手的位置信息,最后才能根据位置信息执行手的动作所代表的指令要求,下面先对如何识别手的图像进行说明。
人手的检测与跟踪技术可采用如下个特征:1.人手的肤色特征;2.人手图像的边缘方向特征;3.人手的纹理特征;4.人手的形状特征。其中第1种利用艳色信息,后3种利用人手图像的形状信息。下面分别对其中的两个方法进行阐述。
人手的肤色特征提取方法如下,对于RGB格式的彩色图像,首先将其变换为HSV彩色空间,然后只采用色调成份(hue),作为人手检测与跟踪的特征,由RGB色彩计算色调H的方法如下:
θ=arccos{0.5[(R-G)+(R-B)](R-G)2+(R-B)(G-B)}]]>
人手图像的边缘方向特征提取方法采用两个核:
与分别对输入图像I(x,y)进行滤波,得到边缘强度图像Gx(x,y)与Gy(x,y),
Gx(x,y)=Kx*I(x,y)
Gy(x,y)=Ky*I(x,y)
这样可以计算得到绝对值图像S(x,y)与方向信息图像Φ(x,y):
S(x,y)=Gx2(x,y)+Gy2(x,y)]]>
Φ(x,y)=arctan(Gy(x,y)Gx(x,y))+π2]]>
结合上面的两个量可以得到边缘信息向量:V(x,y)=S(x,y)ejΦ(x,y),这样就取得人手的图像信息。
下面结合附图在识别出手的图像的基础上对如何判断手的位置信息进行说明,共有三个方法,以便能更好的理解本发明利用手势遥控操作电视的方法及系统。
方法一:
请参阅图3,通过一个摄像头来识别物体三维运动特征的结构框图,摄像头有可控制聚焦的功能,‘被识别物体’的模板先存入到姿态模板中,这样就可以开始后面的识别动作的运行。
摄像头先对外部图像进行拍摄,成像结果经过‘物体识别’单元和‘姿态模板’的模板进行比对来判定是否在拍摄区域内出现事先被设定的‘被识别物体’,如果没有则没有后续的动作。如果发现‘被识别物体’,那么就启动‘聚焦控制检测电路’来对‘被识别物体’进行聚焦,聚焦完成后,我们就可以得到‘被识别物体’在成像空间上的XY坐标和焦距了,这三个参数经过转换得到实际的空间坐标XYZ。具体过程如下:
如附图4所示,根据摄像头确定了一个三维空间,Z轴方向就是摄像头拍摄方向的中轴线,XY则是一个与Z轴垂直的二维平面坐标,空间中一点A1的坐标是(x1,y1,z1),拍摄后形成的图像如左边的小图描述的那样,坐标是(X2,Y2),但是(X2,Y2)和(x1,y1,z1)的单位是不同的。假设(X2,Y2)是像素(pixel)数目为单位,(x1,y1,z1)以实际的距离mm为单位,而焦距假定为Z2,焦距的单位假设为T,其实成像面跟物体面以及XYZ三维空间坐标可以简化为附图5所示。这样就得出了(x1,y1,z1)同(X2,Y2,Z2)的关系了:
|Z2/Z1|=K1 |X2/X1|=|Y2/Y1|=K1*K2 公式1
公式1中的K1和K2都是常数,所以只要知道了K1和K2,又知道‘被识别物体’的像素坐标和焦距,就可以知道‘被识别物体’在图4中摄像头所描述的三维空间中的具体位置了。
K1和K2的获得可以通过以下方式:按图4的方式放置‘被识别物体’于拍摄空间中,当然该物体不能在Z轴上,通过实际测量得到了A1的实际物理坐标(x1,y1,z1),同时根据正确图像识别系统形成的图像坐标(X2,Y2,Z2),将两个坐标带入到(公式1)就可以得到两个参数K1和K2。这样图3中的‘空间XYZ坐标输出’模块在获得了‘被识别物体’的图像坐标和焦距参数(X2,Y2,Z2)之后,就可以通过K1和K2系数计算得到正确的x1y1z1坐标了。
如果被识别物体的空间关系与成像后的坐标关系不能如同图5所描述的那样,如果焦距和实际的距离比例关系不是常数K1,那就可以在距离摄像头不同的位置进行测量,即采用近似的方式来处理,那么只需要在摄像空间内设置多个测试点(距离摄像头远近不同的位置),获得其真实的空间坐标(x,y,z)和图像坐标以及焦距(X,Y,Z),这样就可以得到多组的K1和K2的系数,把这些系数放入到‘参数初始化’模块中。在实际的处理的时候,我们对空间中一个物体进行处理得到其像素坐标和焦距(xxyy,zz),只需要对查询‘参数初始化’模块中与该(xxyy,zz)那一组数据,得到其K1和K2并在‘空间XYZ坐标输出’对(xxyy,zz)和K1和K2进行处理就可以得到了该‘被识别物体’的空间近似坐标,如果想得到更精细的坐标,那么就在摄像空间内选取更多的点就可以了。
方法二:
请参阅图6与图7,其与方法一的区别在于,摄像头不具有可控制聚焦功能。不具有可控聚焦功能的摄像头进行三维识别的结构框图如图6所示,虽然摄像头没有可以控制聚焦功能,但是一个物体离摄像头的远近所成像是不同的,物体离摄像头近的时候图像上的物体就大一点,远的时候就小一点。那么如果要识别是一个特定的物体,还是很容易得到其空间坐标的。根据图7所示的成像关系,可以得到:
d/D=P/PP⇒d=P*D/PP⇒D=d*PP/P=K1/P]]>公式2
通过对特定‘被识别物体’的空间位置进行测量,以及对成像经过进行处理就可以得到公式2中的P、D、PP这三个数据,从而就可以知道了d,这样在后面如果知道P的时候,就可以得出距离D了。
同时根据图8所示,还可以得到一个原始物体的XY坐标和成像的关系,结合‘被识别物体’的大小和PP是已知的这个关系可以得到:
|PP/P|=|x1/X2|=|y2/Y2|=K2 公式3
那么当我们得到‘被识别物体’在成像空间上的像素坐标和大小的时候,就可以通过公式2和公式3得到其真实的空间坐标了。
如果成像关系不遵循图中的几何线性关系,那么就需要采用方法1中那样的方式,设置大批的已知位置的空间点,然后得到其成像后的坐标和成像大小,得到一批公式2和公式3所描述的K1和K2,这些数据存入到图6中的‘参数初始化’模块中,在实际测试的时候就可以根据‘被识别物体’的空间位置和事先测试过的已知位置的空间点来比较,利用最近距离的那个点的K1和K2就可以得到物体实际的空间位置了。
方法三:
方法三与方法一的区别在于利用两个都不具有可控制聚焦功能的摄像头来进行三维识别。
由于两个摄像头拍摄的时候两个拍摄空间可能是不一致的,那么就要确定一个有效的拍摄空间,图10中虚线圈定的空间范围就是两个摄像头都可以拍摄到的空间,一个‘被识别物体’的运动要在这个虚线空间中运动才能同时被两个摄像头捕捉到,这样才能保证后续的正确处理。
为了得到一个空间坐标,那么就得首先对空间进行定义。图10中两个摄像头A和B的拍摄方向可以不是严格一致,但是要尽量的保证两个拍摄方向在一个平面内,虽然很多的时候AB的拍摄方向不在一个平面内,但是经过近似也可以按图10的方式来处理:
首先把AB两个摄像头的中心点连线,从中心线的中点出发,在摄像头A和B的拍摄方向形成的平面内做垂直于中心线的线作为Z轴,那么AB的连线作为X轴,然后做一个同X轴和Z轴同时垂直的轴线Y轴,这样形成了一个三维坐标空间。
如附图11所示,根据摄像头的拍摄方向把原先的拍摄空间分成了C1,C2,C3三个空间,当‘被识别物体’在C1空间的时候,A和B摄像头成像之后,‘被识别物体’处于成像空间的左半部分,分别在A和B成像的左边阴影中。当‘被识别物体’在C2空间的时候,A和B摄像头成像之后,‘被识别物体’成像分布在A右边阴影中和B的左边阴影中。当‘被识别物体’在C3空间的时候,A和B摄像头成像之后,‘被识别物体’成像分布在A和B成像的右边阴影中。
对于一个空间的任意运动,都可以在任意一个投影平面内分解为一个二维动作,但是同一个运动在两个位置不同的平面上分解后的二维动作可能是不同的。
我们先根据附图12分析其在X轴上的成像关系。根据几何关系我们可以得到下面的公式:
XAXa=XBXb=ZAZab=XA+XBXa+Xb]]>公式4
公式4中的Xa+Xb实际近似就是两个摄像头A和B的距离,这个是可以测量的,而XA,XB则是图像分别在A和B上的成像X坐标的绝对值,这个可以从图像上计算得到,图中Zab是摄像头连线到物体在Z轴上的距离,这个也是可以测量的,那么公式4中只有ZA是未知的,而一旦知道了ZA,同时知道Xa+Xb和XA,XB的话,那么‘被识别物体’在Z轴上的距离就非常容易知道了。
那么可以通过在空间中实现放置一个物体,测量出Zab和Xa+Xb来,然后成像,通过对图像进行分析得到XA,XB,然后将这些数据带入公式4就可以得到ZA了。一旦一个识别系统确定的时候,ZA和Xa+Xb是不会变化的,变化的只有物体的空间位置以及其引起的XA,XB的变化,那么这个时候我们可以得到物体的空间Z坐标:
Zab=ZA×(Xa+Xb)XA+XB]]>公式5
其X坐标也可以得到:
Xb=XB×(Xa+Xb)XA+XB]]>公式6
Xa=Xa×(Xa+Xb)XA+XB]]>公式7
由公式6和公式7可以得到X坐标:Xab=Xa-Xb 公式8
现在分析物体三维运动在Y轴上的坐标:
图13为‘被识别物体’在Y轴和Z轴组成的平面上图像位置和实物的关系(仅表示了一个摄像头的成像关系),通过上图可以得到公式:
ZAZab=YABYab]]>公式9
因为公式中的ZA是个常数,而Zab可以通过公式5得到,那么我们只需要通过图像得知YAB之后就知道Yab了,严格来说通过A和B摄像头得到的结果经过处理得到的Yab应该是相等的,但是由于计算的精度和实际摄像头装配的误差,A和B得到的两个Y坐标YabA和YabB是不严格一致的,这样我们可以通过公式10来得到一个相对准确的Yab:
Yab=YabA+YabB2]]>公式10
这样就可以得出空间中‘被识别物体’的XYZ坐标(Xab、Yab、Zab)了。
根据上面列举的三种方法,在准确的获得了被检测物体的空间坐标(X,Y,Z)之后,就可以结合不同的需求来应用,下面是一个利用本发明物体三维运动及动作识别方法来实现手势遥控电视的应用举例:
如附图14所示,是一个装有两个摄像头的电视机,以及根据其摄像头位置所定义的识别空间坐标(XYZ)的示意图。
假设需要完成的动作流程是:‘打开电视’→‘打开控制菜单’→‘切换电视输入信号源’→‘退出菜单’一系列动作,假设电视的初始状态是待机模式。
通过在电视机内配置一个三维运动及动作识别的模块,在该模块的姿态模板上设置特定的一个手势或连续的姿势来代表‘打开电视’的动作,以及一个特定的手势来代表‘打开控制菜单’的动作(在这个步骤中我们只需要知道手势的姿态,并不需要知道其XYZ坐标),当摄像头获取我们所做出的相应手势时,物体识别单元根据姿态模板对被识别物体进行姿态识别,然后执行相应‘打开电视’、‘打开控制菜单’动作。出来的界面如附图15所示。
此时,我们为了实现切换电视输入信号源,需要移动图中箭头位置,这是,我们可以采用一个在姿态模板上预先设定的“手势A”,摄像头获取到上面的“手势A”之后,三维运动及动作识别的模块就可以采用前面描述的方法计算该手势的空间坐标XYZ。最初的时候我们把手势的初始位置定义在屏幕的中间,同时在屏幕上显示一个白色的箭头来表示该手势的位置,如图15所示。这样通过移动该“手势A”的位置(尽量在XY平面内移动),就可以使得屏幕上的白色箭头移动到“信号源”的菜单位置。保持白色箭头在“信号源”的菜单位置,同时将“手势A”沿Z方向向电视的方向移动一段距离,表示点击的动作,模块获得手的三维运动坐标,于是输出控制信号,在“信号源”菜单下出现一组二级菜单,如图16所示。然后尽量保持该手势的XY坐标,将“手势A”移动使得箭头的位置移到DVI的位置,同时沿Z方向向电视的方向移动该“手势A”,实现点击“DVI”菜单的动作。这样就可以完成信号源切换过程了。系统在执行指令的过程中,首先是判断手势A的XY位置是否在相应的菜单位置区域内,只有XY位置是保持在相应的菜单位置区域内,才判断Z方向的座标变化大小,并据此判定是否有指令输入。
退出菜单的方式比较简单,只需要如上述方法那样,通过手指的移动把箭头的位置移到菜单如附图16所示的右上角的位置按下去就可以了。
利用上述的方法,即可用手势来进行电视的遥控操作,并且借助于上述的遥控操作系统,使得电视的遥控操作变得更为简单和人性化。特别是可以借此为平台,不需要配置鼠标、键盘等计算机外围设备,就可以在电视上完成原本只有在计算机上才能进行的娱乐功能。
同时利用本发明中所公开的遥控操作方法,即可以实现非接触性的操作各种设备,特别是在一些公用设备上,可以防止由于多人操作而引起的细菌的传播和交叉感染。