估计从摄像机到地平面点的距离

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

如何计算从相机到地平面上的点到图像的距离? enter image description here

我有相机的内在参数和位置(高度,间距)。有没有可以估算距离的OpenCV功能?

opencv image-processing computer-vision
2个回答
3
投票

您可以使用undistortPoints计算反投影像素的光线,但该API很难用于您的目的。在代码中“手动”进行计算可能更容易。至少执行一次也可以帮助您了解API究竟在做什么。

将摄像机的“位置(高度,俯仰)”表示为旋转矩阵R和平移向量t,表示从地平面的原点到摄像机的坐标变换。也就是说,给定地平面坐标中的点Pg = [Xg,Yg,Zg],其相机框架中的坐标由下式给出:

Pc = R * Pg + t

摄像机坐标中的摄像机中心为Cc = [0,0,0]。在地面坐标中,它是:

Cg = -R' * t

其中R'是R的转置。

为简单起见,假设地平面为Zg = 0。

设K是内在参数的矩阵。给定像素q = [u,v],将其写入均匀图像坐标Q = [u,v,1]。它在相机坐标中的位置是

Qc = Ki * Q

其中Ki = inv(K)是内在参数矩阵的倒数。那么世界坐标中的相同点

Qg = R' * Qc -R' * t

所有点Pg = [Xg,Yg,Zg]属于从相机中心通过该像素的光线,以地面坐标表示,然后在线上

Pg = Cg + lambda * (Qg - Cg)

对于lambda从0到正无穷大。最后一个公式表示地面XYZ坐标中的三个方程,并且您希望找到光线与地平面相交的X,Y,Z和λ的值。但这意味着Zg = 0,所以你只有3个未知数。解决它们(你从第3个等式恢复lambda,然后在前两个中替换),你得到解决问题的Xg和Yg。


-1
投票

单个图像无法进行深度计算。您需要立体声配置(或至少两个已知距离的图像)。据我所知,单帧/图像的深度感知是不可能的。

非常感谢@Francesco的答案。我真的不知道这个方法。现在自己调查一下。

© www.soinside.com 2019 - 2024. All rights reserved.