计算具有可变比例的图片中 2 个对象之间的距离

Calculate distance between 2 objects in a picture with a variable scale

我正在尝试使用图片计算两点之间的距离。

上面的空中飞人代表一个100米乘50米的长方形(空中飞人是我拍照的角度造成的——实际上是无人机)。

所以我想使用这张图片计算左角 (0,0) 和红十字(654,96 - 像素坐标)之间的距离。 我的第一个想法是创建一个比例尺 pixel/meters,但正如您所见,矩形的长度具有不同的比例尺:100 米对应 900 像素(顶部)和 100 米对应 1400 像素(上方)。

所以计算比例和距离是很复杂的。

然后当我成功的时候,我会尝试计算很多不同的距离(红十字会改变位置)。

有人有想法吗? 谢谢!

您需要校正图像,即撤消投影变换。 This post of mine on Math SE or this post 在 Stack Overflow 上描述了如果您知道四个点及其图像的坐标,如何计算这种变换。正如您所做的那样:您拥有图片中的坐标和真实世界的尺寸,因此您可以随心所欲地选择真实世界的坐标系。然后计算投影变换,将其应用到红点的图片坐标上,得到它的真实世界坐标。

除了@MvG 发布的内容,如果您知道拍摄图像的高度,那么您可以计算每个像素覆盖的距离(并将线性透视纳入像素),然后简单地使用以下公式将它们相加以找到以真实世界单位表示的像素的确切距离:

Due to linear perspective, the area of the scene captured in a pixel is proportional to the distance of the object from the camera. So, the pixels closer to the camera will capture a smaller area 'a' as compared to the pixels representing objects further away capturing larger area 'b' , as explained in figure in the paper below.

更多细节可以查看论文here (or here)