关于openCV中的鸟瞰图例程原理的解释,相关问题的解答

之前都在做道路检测,逆向投影研究,发现openCV提供了简单的,可以直接通过地面上4个或4个以上的点的对应关系获得图像与地平面间相差一个比例系数的逆投影变换,按照openCV给出的测试程序,实验了一下,确实效果不错,但是对于其中几个重要的投影变换函数,以及比例系数的问题,遇到了点困惑,通过仔细阅读文档及实验,思路基本上清晰了。看到网上有多很多人对鸟瞰图的获取,也是不够清晰,因此,写了此篇文章,希望对大家有所启发。

 

重投影的概念--摘自网上

摄像机斜视拍摄一物体后,形成的图像会发生变形,如果将图像映射到拍摄物体平面上,相当于将相机垂直于拍摄平面,这样就会得到图像的真是形状,由于这种映射相当于将原图重新透视到另一个平面,这种称之为“重投影”。

 

其实,鸟瞰图的本质就是将图像平面中的信息“重投影”到地平面上,所以,首席要获取两个平面间的投影变换关系H。在程序中,是通过在地平面上放置标定板图像,然后获得地平面上棋盘格图像上四个顶点的坐标(0,0),(widht-1,0),(0,height -1),(wdith-1,height-1),这里一般假定棋盘格单位宽度为1,你可以输入已知的棋盘格宽度信息;同时,在图像平面提取角点,并获得与地平面上四个点对应的角点在图像空间中的坐标值,通过四个坐标点间的对应关系,基于getPerspectiveTransform()函数,获得地平面到图像平面间的投影变换关系H;最后,通过warpPerspective()函数对图像进行逆向映射到地平面空间中。

总结:

根据上述思路,就可以了解鸟瞰图获得的具体思路了。另外,在程序中有一行代码,就是设置Z=25,并将该数值赋值到H矩阵的右下角位置,这里这样做,按照我的理解和测试,我认为是因为之前在设置地平面上标定板的坐标信息时,假定的是每个棋盘格的宽度为1,这样H的意义就成了将图像平面空间一个占据了10~20个像素的棋盘格投影到1个像素上去,同时还考虑整幅图像的显示尺度问题(填充空格),所以,才设置尺度为25或者其他你想要的尺度,这样,相当于每个棋盘格放大了25倍,比较接近我们原始的图像平面空间所在的尺度,可视化会会好很多。

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值