我想计算相机与识别出的“物体”之间的距离。 例如,识别的“对象”是白板上的黑色矩形标签。我知道矩形(x,y)的值。
有没有一种方法可以用来计算原始矩形值的距离,以及我用相机拍摄的矩形图片的值?
我在论坛上搜索了答案,但没有指定用这些属性来计算距离。
我正在从Aldebaran Robotics工作一个名为Nao的机器人,我正计划使用OpenCV来识别黑色矩形。
答案 0 :(得分:2)
如果你可以计算目标图像占据的角度,那么到目标的距离应该与该角度的cot
(即1/tan
)成比例。您应该会发现图像中的像素数大致与角度相对应,但我怀疑它是完全线性的,特别是近距离。
相机镜头的行为可能会影响此测量,因此取决于您的确切设置。
为什么不在几个距离测量目标的大小,并绘制散点图?然后,您可以将曲线拟合到数据,以获得特定系统的尺寸 - >距离函数。如果您的相机靠近“理想”相机,那么您应该会发现此图表看起来像cot
,您应该能够找到a
和b
的值以匹配{ {1}}。
如果您尝试此实验,为什么不在这里发布答案,让其他人受益?
[编辑:关于'理想'相机的说明]
对于我们看起来“逼真”的相机图像,图像应近似投影到眼睛前方的平面上(因为我们通过在我们眼前保持平面图像来观看相机图像)。想象一下,在你眼前拿一张描图纸,然后在那张纸上画出物体轮廓。 this page上的第二个图表显示了我的意思。您可能会将相机描述为“理想”相机。
当然,在现实生活中,相机不能通过描图纸工作,而是使用镜头。非常复杂的镜头。看看this page上的镜头图。由于你可以花一辈子学习的各种原因,制作一个完全像描图纸例子在所有条件下都能工作的镜头非常棘手。从this wiki page开始,如果您想了解更多,请继续阅读。
所以你不太可能计算像素长度和距离之间的确切关系:你应该测量它并拟合曲线。
答案 1 :(得分:1)
这是一个很大的话题。如果您想从单张图片开始,请查看A. Criminisi的this old paper。如需深入了解,请阅读他的博士学位。论文。然后开始在“投影几何”一节中使用OpenCV例程。
答案 2 :(得分:-2)
我也一直致力于图像/物体识别。我刚刚发布了一个python编程的android应用程序(移植到android)识别对象,人物,汽车,书籍,徽标,树木,鲜花......任何东西:)它还显示它的思维过程,因为它“思考”:) 我把它作为99美分谷歌游戏的测试。 如果你感兴趣,这里是链接,还有一个视频,它在行动: https://play.google.com/store/apps/details?id=com.davecote.androideyes
享受! :)