使用图像计算到点之间的实际距离

Posted

技术标签:

【中文标题】使用图像计算到点之间的实际距离【英文标题】:calculate the real distance between to point using image 【发布时间】:2014-03-27 19:09:55 【问题描述】:

我做了一些 3D 图像处理任务,但遇到了问题。

我使用一个模拟器,它为我提供了一种特殊的相机,它可以使用相机图像中该点的像素来判断相机位置与任意点之间的距离。例如,我可以得到相机和放置在像素 21:34 中的对象之间的距离。

现在我需要计算相机图像中两个任意像素之间的实际距离。 当相机垂直放置在场地上方并且所有物体都在地面上时很容易,但是当相机水平时,图像中物体的深度是不同的。

那么,我该怎么做呢?

【问题讨论】:

【参考方案1】:

简单的 3D 重建将完成此任务。从相机到 3D 中的点的距离是沿着您已经拥有的 Z 光轴。您还需要 X、Y:

X = u*Z/f;  
Y = v*Z/f,

其中 f 是以像素为单位的相机焦距,Z 是以毫米或米为单位的距离,u,v 是以图像为中心的坐标:u = 列宽/2,v = 高度/2 行。请注意由于行下降而 Y 和 v 上升而导致的不对称。得到 X、Y、Z 后,3D 距离由欧几里得公式给出:

dist = sqrt((X1-X2)2+(Y1-Y2)2+(Z1-Z2)2)

【讨论】:

非常感谢,但我不知道相机的焦距。正如我所说,我使用了一个模拟器,它为我提供了这样的相机。 模拟器应该知道的。您还可以根据图像分辨率和视野估算焦距 我根据视野计算焦距。 这是一条路要走。我很好奇你用的是什么模拟器?它是某种虚拟现实 CGI 图形吗? 嗨,你的意思是什么 u 和 v 是图像中心坐标?我最初以为它们是指像素坐标,但在这种情况下,列宽和高是什么意思?

以上是关于使用图像计算到点之间的实际距离的主要内容,如果未能解决你的问题,请参考以下文章

双目立体视觉

如何通过计算像素来计算距离

道路距离,两地之间的实际距离

如何用C语言计算两点之间距离

arcgis怎么批量计算两点之间的距离

如何计算三维空间中两点间的距离