Graphics 对齐摄像头';s查看方向以特定方向查看

Graphics 对齐摄像头';s查看方向以特定方向查看,graphics,3d,computer-vision,perspectivecamera,projective-geometry,Graphics,3d,Computer Vision,Perspectivecamera,Projective Geometry,我正在处理一个点云和多个图像。 我知道相机的内在和外在参数。我想要的是找到 旋转矩阵将旋转我的相机(不改变位置)以在 某个方向。更具体地说,我将为点云拟合一个平面 然后,我要将相机的观察方向与垂直于平面的视图对齐(无 改变其位置) 因此,在给定摄像机旋转矩阵的情况下,我也会找到图像的单应变换 请有人帮我解决这个问题。让dir1作为相机的当前方向,dir2作为相机的目标方向。计算归一化方向向量: d1 = dir1 / |dir1| d2 = dir2 / |dir2| 我们想要得到一个从d1旋

我正在处理一个点云和多个图像。 我知道相机的内在和外在参数。我想要的是找到 旋转矩阵将旋转我的相机(不改变位置)以在 某个方向。更具体地说,我将为点云拟合一个平面 然后,我要将相机的观察方向与垂直于平面的视图对齐(无 改变其位置)

因此,在给定摄像机旋转矩阵的情况下,我也会找到图像的单应变换


请有人帮我解决这个问题。

dir1
作为相机的当前方向,
dir2
作为相机的目标方向。计算归一化方向向量:

d1 = dir1 / |dir1|
d2 = dir2 / |dir2|
我们想要得到一个从
d1
旋转到
d2
的矩阵。换句话说,该矩阵应围绕
u
方向上的轴旋转
theta
,其中:

u = (d1 x d2) / |d1 x d2|       <-- normalized cross product of d1 and d2
sin(theta) = |d1 x d2|          <-- the length of the cross product
cos(theta) = d1 * d2            <-- dot product of d1 and d2

u=(d1 x d2)/| d1 x d2 |假设
x
是图像的中心,然后说
c=[a,b,1]
(这是考虑到图像是二维图像)

现在有了内在参数矩阵
K
和外在旋转矩阵
R

我们可以在这种风格中找到方向:

temp_X = inverse(K) * c
temp_X = transpose(R) * temp_X
direction = temp_X / norm(temp_X)

final direction = t - direction

我不知道这是否完全正确,但您可以试一试。

您不能为相机创建一个新的视图矩阵,使用所需的位置/方向,还是需要旋转矩阵?顺便问一下,您是否使用了一些库,如Direct3D或OpenGL?不,我没有使用任何库。我想得到旋转矩阵,这样我就可以在图像上投影点云,得到与图像对应的深度贴图。我希望这是有意义的。嗨,米洛日玛基,我收到了你的回复。我有一个更简单的疑问。我们不必将相机平移回原点来执行此旋转,或者是吗?如果您的相机不在原点,那么您必须先执行旋转,然后将其平移到目标位置。好的,我将尝试此操作并返回这里!非常感谢:)