我正在执行一项任务,计算客户的注视方向以确定他们是看显示器还是看显示器外面。我画了以下内容来了解需要做什么:
图片描述如下(尺寸单位为毫米):
到目前为止,我手动计算了 X、Y、Z 坐标的距离。它们如下:
眼睛相对于相机的坐标为:
Eye=(0,−325,−596.34)
P1(显示器左上角):
距中心的水平偏移:−265 毫米
距显示器顶部中心的垂直偏移:−50 毫米
深度:0毫米(因为它与相机在同一平面上)
坐标: P1=(−265,−50,0)
P2(显示器右上角):
距中心的水平偏移:265 毫米
距显示器顶部中心的垂直偏移:−50 毫米
深度:0毫米
坐标: P2=(265,−50,0)
P3(显示器中心):
水平偏移:0 毫米
距相机的垂直偏移:−521 mm
深度:0毫米
坐标: P3=(0,−521,0)
因此,我得出以下结论:
关注P1:
向量=P1−眼睛=(−265,−50−(−325),0−(−596.34))=(−265,275,596.34)
关注P2:
向量=P2−眼睛=(265,−50−(−325),0−(−596.34))=(265,275,596.34)
着眼于P3:
向量=P3−眼睛=(0,−521−(−325),0−(−596.34))=(0,−196,596.34)
现在,我想知道我是否已根据以下方法正确获取注视方向(人眼从摄像机的 PoV 到 P1、P2 和 P3):
请注意,虽然 3D 凝视 (gaze_dir) 被定义为 目标和主体位置之间的差异(target_pos3d - person_eyes3d) 他们每个人都用不同的坐标表示 系统,即另外,
gaze_dir = M * (target_pos3d - person_eyes3d)
其中M
取决于眼睛和相机之间的法线方向。
如果需要的话如何计算变换矩阵 M?
M depends on a normal direction between eyes and the camera.
由于相机和眼睛直接指向对方,因此存在 180 度旋转。他们同意上下方向,
Y_eye = Y_camera
。他们对前进/后退有相反的看法
Z_eye=-Z_camera
X_eye=-X_camera
这被总结为一个矩阵
-1 0 0
M = 0 1 0
0 0 -1