我正在计算图像中的对象。我希望进行线性插值,我知道我的物体在近和远视角的像素大小以及这两个物体在图像中的位置。图像底部的图像较大,因为它们靠近拍摄它们的相机。
这里要分析的图像与此问题相同...... link text
我意识到线性插值只能在一个平面上工作,这里从上到下,所以关于如何正确地做到这一点的想法会很好。这是一个硕士论文,我已经完成了'硬'位 - 图像分类,数据收集,但是我只是在Java(当前使用)和R(现在仅用于统计数据)之间打了一个心理砖墙,任何帮助将不胜感激!
答案 0 :(得分:0)
Homography是一种数学方法,可以将物体距离从相机转换为透视投影产生的尺寸变化。
基本上,在相机图像上显示的对象大小与对象的实际大小除以对象与相机的距离成比例。
假设有两个对象A和B具有相同的真实世界大小。 A距离D A ,B距离D B 。它们出现在相机图像中的尺寸为H A 和H B 。
对于对象C,与A和B相同的真实世界大小,位于距离(1-α)D A +(α)D B ,它在相机图像上的大小由下式给出:
答案 1 :(得分:0)
所以我使用3d投影方程并向后工作以找到场景中某个对象的x,y,z。因此,考虑到对象的大小,相机的焦距,您可以计算帧中对象的x,y,z。
我会对相机做一些假设(没有旋转,没有平移相机位于z轴的0,0,0处。)
image.x = model.x * camera.focalLength / model.z
image.y = model.y * camera.focalLength / model.z
将它们翻转到你身边:
model.x = image.x * model.z / camera.focalLength;
model.y = image.y * model.z / camera.focalLength;
这假设您知道距离摄像机相对的点的距离(即model.z)。同样,如果你想计算物体与相机的距离,你可以用这种方式计算模型。
model.z = model.x * camera.focalLength / image.x
model.z = model.y * camera.focalLength / image.y
Trick我想在这种情况下确定你应该为model.x和model.y使用什么。无论是对象的宽度还是对象的高度,都可以在对象的恒定宽度与场景中对象的宽度之间建立关系,因为距离会发生变化。
model.z = model.width * camera.focalLength / image.width;
model.z = model.height * camera.focalLength / image.height;
几天来一直坐在那个答案上,所以我查看了我的事实。但这与其他帖子大致相同。