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

Tah*_*her 2 camera pixel distance image-processing

我在 3D 中执行一些图像处理任务,但遇到了问题。

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

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

那么,我该怎么办呢?

Vla*_*lad 5

简单的 3D 重建即可实现这一点。从相机到 3D 中的点的距离沿着您已经拥有的 Z 光轴。您还需要 X、Y:

X = u*Z/f;  
Y = v*Z/f,
Run Code Online (Sandbox Code Playgroud)

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

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