为了寻找一种简单的计算鸟瞰的方法,我从Matlab中发现了这方法。在手工注释源点和目标点的问题上,这似乎是一种很好的方法。一般来说,我想了解的是,是否有一种仅从物理摄像机属性计算源点和目标点的数学方法。任何使用与Matlab示例相同的输入,但基于OpenCV的代码,我将非常感激。
我知道堆栈溢出不是一个“去写我的代码”社区,所以即使是一个有用的线索或任何数学都会被感激。
发布于 2020-12-28 16:36:14
它在你的链接中说输入图像必须是不失真的。那么,让我们假设我们有一个图像,我们知道在现实坐标中垂直于图像平面的线的欧拉角。
偏航角度对我们的案子不重要。如果你旋转图像的滚动量(围绕中心像素),那么你应该能够找到4个想要的点,使用沥青量。为了找到这些想要的点,我们需要知道摄像机的水平和垂直视场值。
那四点是什么?在现实世界中,从上面看,它们形成了一个长方形。矩形的宽度是一种设计选择。例如,闭合点可向下45度(地平线之间),共宽60度,远点可向下10度,具有一定的宽度角。我们需要计算一次这个角度。
设h是摄像机的高度,x是摄像机到矩形平面的投影点到矩形远缘的距离(平行于地平线),y是矩形宽度的一半。给出上面的例子,x=h*cot(10)和y=h*csc(45)*tan(60/2)。宽度角变为2*atan2(y, x^2+h^2) = 2*atan2(csc(45)*tan(60/2), cot(10)^2+1)。
例如,如果相机有70度的视场,那么边缘的点距中心35度。但是中心和边缘之间的像素是,而不是距中心35/2度。应该是atan(tan(35)/2)。
一旦找到了所需的4点,就可以使用findHomography和warpPerspective函数,其中dst_pts的宽度/高度比最好是2*y/(x-h*cot(45)) = 2*csc(45)*tan(30)/(cot(10)-cot(45))。
输入:无失真图像,滚动和倾斜角,摄像机视场,期望的ROI角度

https://stackoverflow.com/questions/65477906
复制相似问题