如何根据两个坐标系的测量值找到变换矩阵?

问题描述 投票:0回答:1

我正在执行一项任务,计算客户的注视方向以确定他们是看显示器还是看显示器外面。我画了以下内容来了解需要做什么:


enter image description here

图片描述如下(尺寸单位为毫米):

  • 尺寸为 530x942 的黑色矩形是显示器。
  • 一个人站在距离显示器500的地方,眼睛到地面的高度为1675。
  • 距离显示器顶部中心50mm处的蓝色标记是摄像头。
  • P1、P2、P3 是人看的点。
  • 相机到地面的距离为2000
  • d=537.04 是眼睛到 P3 的距离,由勾股定理计算得出 (√(5002 + 1962))
  • 同样,眼睛到P1的距离=761.89(眼睛到P2的距离),根据毕达哥拉斯定理计算(√(540.432 + 537.042))

到目前为止,我手动计算了 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

math language-agnostic coordinates coordinate-transformation transformation-matrix
1个回答
0
投票
M depends on a normal direction between eyes and the camera.
由于相机和眼睛直接指向对方,因此存在 180 度旋转。

他们同意上下方向,

Y_eye = Y_camera

他们对前进/后退有相反的看法

Z_eye=-Z_camera


他们对左/右有相反的看法

X_eye=-X_camera


绕 y 轴旋转 180 度。

这被总结为一个矩阵

-1 0 0 M = 0 1 0 0 0 -1
    
© www.soinside.com 2019 - 2024. All rights reserved.