1.一种基于摄像头眼动追踪的穿透式屏幕系统的实现方法,其特征在于,包括步骤如下:
1).首先需要对摄像头进行标定实验,获取所需数据;
根据摄像头针孔模型,有以下公式: 其中f为已知的摄像头焦距,d为物体到摄像头的距离,x是成像后瞳孔间的距离,w是用户实际两眼瞳孔之间的距离,首先固定d求x,同时获得成像后双目瞳孔的像素间距p,则 a表示单位像素的长度距离,单位:mm/像素;
之后通过霍夫圆检测,获取摄像头每帧的眼球位置,确定眼睛在摄像头成像上的二维坐标(u,v),设图像中心的坐标为(u0,v0),则眼球的摄像头坐标系下的坐标为
2).建立标准坐标系,定义单眼的一个位置作为标准坐标系的原点,原点与屏幕的中点连线为z轴,x轴是水平方向的直线,y轴是垂直方向的直线,x轴与y轴组成的平面平行于屏幕;
摄像头坐标系的原点处为摄像头,z轴与标准坐标系的z轴互相平行,但方向相反,x轴与y轴则是分别与标准坐标系下的x轴、y轴平行且方向相同;
3).将摄像头坐标系转换到标准坐标系下,再转换到虚拟场景的坐标系中,由于虚拟场景使用unity进行搭建的,因此虚拟场景坐标系也称为unity坐标系;
摄像头坐标系到标准坐标系的转换公式为:Cs=A(Ca‑D) (1);
其中 D表示摄像头坐标系下的标准坐标系的原点的坐标,Ca为摄像头坐标系下的眼睛坐标,Cs为标准坐标系下的眼睛坐标;
接着由于标准坐标系的单位是mm,unity坐标系的单位为m,因此标准坐标系转换至unity坐标系的公式为:Cu=0.001Cs(2);
Cu为眼睛在unity坐标系的坐标;
4).先将现实中的屏幕以及眼睛映射到unity坐标系中,眼睛位置通过步骤3)的转换公式映射到unity坐标系中,然后在现实中测量该原点D位置与屏幕的垂直距离,同时测得屏幕宽、高,确定屏幕在标准坐标系下的位置以及大小,然后利用公式(2)转换到unity坐标系中,这样便完成了映射的操作;
然后再确定虚拟场景下的眼睛在每个位置下的视椎体,设定点ABCD所构成的平面就是虚拟屏幕,而点O所在的位置为眼睛,每当眼睛到达一个新的位置时,由程序计算并取出点O到四个点距离最长的线段,并以该长度为标准重新确定另外三个角点在虚拟坐标系下的坐标,利用公式(3)确定点T的坐标,T=(A+B'+C'+D')/4 (3)其中A代表距离最长的角点坐标,即OA是最长的,然后延长OB,OC,OD至OB’,OC’,OD’,使得|OA|=|OB'|=|OC'|=|OD'|,B'、C'、D'为重新确定的角点坐标,计算出来的点T便是经过摄像头眼睛视椎体中心线的点在虚拟坐标系下的坐标,利用该点便可确定视角姿态;
此时所看到的虚拟屏幕内的成像便是我们所需的视觉成像,接着利用透视矩阵进行透视变换即可。
2.根据权利要求1所述的基于摄像头眼动追踪的穿透式屏幕系统的实现方法,其特征在于,步骤4)中,利用透视矩阵进行透视变换的步骤如下:通过调用unity的方法,可获取映射到虚拟场景的虚拟屏幕的四个角点在成像图像上的二维坐标,并且可以与(0,0),(0,height),(width,height),(width,0)形成四个点对,由此可以计算出透视矩阵H,该矩阵为一个3*3的矩阵,计算步骤如下:对于一个点对a(x,y,
1),b(x1,y1,1),有如下变换公式:b=HaT (4);
其中aT是a的转置,a是待透视变换的图像角点,b是成像图像的角点,一个点对便可构造如下矩阵:
四个点对可构造四个上述矩阵,将其合并,得到8行9列的矩阵U;之后构造UT*U矩阵,则UT*U矩阵的最小特征值所对应的特征向量即为透视矩阵H的9个参数;求出透视矩阵后,带入公式(4)中进行透视变换,得到透视后的新图像。