Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 使用可变比例计算图片中两个对象之间的距离_Math_Image Processing_Computer Vision_Photo_Parallax - Fatal编程技术网

Math 使用可变比例计算图片中两个对象之间的距离

Math 使用可变比例计算图片中两个对象之间的距离,math,image-processing,computer-vision,photo,parallax,Math,Image Processing,Computer Vision,Photo,Parallax,我试图用图片计算两点之间的距离 上面的秋千代表了一个100米乘50米的矩形(秋千是因为我拍摄的角度——实际上是一个无人机) 因此,使用这张图片,我想计算左角(0,0)和红十字(654,96像素坐标)之间的距离。 我的第一个想法是创建一个像素/米的比例,但正如你所看到的,矩形的长度有一个不同的比例:100米代表900像素(上图),100米代表1400像素(上图) 因此,计算比例和距离非常复杂 然后,当我成功的时候,我会尝试计算许多不同的距离(红十字会会改变位置) 有人有想法吗? 谢谢大家! 您需要

我试图用图片计算两点之间的距离

上面的秋千代表了一个100米乘50米的矩形(秋千是因为我拍摄的角度——实际上是一个无人机)

因此,使用这张图片,我想计算左角(0,0)和红十字(654,96像素坐标)之间的距离。 我的第一个想法是创建一个像素/米的比例,但正如你所看到的,矩形的长度有一个不同的比例:100米代表900像素(上图),100米代表1400像素(上图)

因此,计算比例和距离非常复杂

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

有人有想法吗?
谢谢大家!

您需要校正图像,即撤消投影变换。在Math SE或在Stack Overflow中,描述如果您知道四个点及其图像的坐标,如何计算这样的变换。正如你所做的:你有图片中的坐标和真实世界的尺寸,所以你可以选择一个真实世界的坐标系,任何你喜欢的方式。然后计算投影变换,将其应用于红点的图片坐标并获得其真实坐标。

您需要校正图像,即撤消投影变换。在Math SE或在Stack Overflow中,描述如果您知道四个点及其图像的坐标,如何计算这样的变换。正如你所做的:你有图片中的坐标和真实世界的尺寸,所以你可以选择一个真实世界的坐标系,任何你喜欢的方式。然后计算投影变换,将其应用于红点的图片坐标,并获得其真实坐标。

除了@MvG发布的内容外,如果您知道拍摄图像的高度,则可以计算每个像素所覆盖的距离(并将线性透视纳入像素中),然后简单地将它们相加,以实际世界的单位计算出与像素的精确距离,使用以下公式:

由于线性透视,场景的区域 捕捉到的像素与图像的距离成正比 从摄影机中删除对象。因此,像素更接近 相机将捕捉到的“a”区域比 表示远处物体的像素 较大的区域“b”,如下图所示


有关更多详细信息,您可以查看纸张(或)

除了@MvG发布的内容外,如果您知道拍摄图像的高度,则可以计算每个像素所覆盖的距离(并将线性透视图合并到像素中),然后简单地将它们相加,以实际世界的单位计算出与像素的精确距离,使用以下公式:

由于线性透视,场景的区域 捕捉到的像素与图像的距离成正比 从摄影机中删除对象。因此,像素更接近 相机将捕捉到的“a”区域比 表示远处物体的像素 较大的区域“b”,如下图所示


有关更多详细信息,您可以检查纸张(或)

1400像素(100米)绝不等于900像素(100米)。请重新考虑你的问题。您必须为一个像素固定一定数量的米,然后才能继续。在您的情况下,如果
1400 px=100 m
,则在
900 px上面的行中必须<100 m
。您有无人机拍摄照片的高度吗?使用它,您可以实际计算一个像素所覆盖的距离,并找到与现实世界维度中(x,y)坐标的近似距离。@JeruLuke-由于斜视图,我有100m=1400px和100m=900px。这就是我问这篇帖子的原因…@AtifAnwer是的,我有这张照片的高度。知道1个像素并不总是等于相同的距离,你知道我如何计算地面上的距离吗?1400像素(100米)绝不等于900像素(100米)。请重新考虑你的问题。您必须为一个像素固定一定数量的米,然后才能继续。在您的情况下,如果
1400 px=100 m
,则在
900 px上面的行中必须<100 m
。您有无人机拍摄照片的高度吗?使用它,您可以实际计算一个像素所覆盖的距离,并找到与现实世界维度中(x,y)坐标的近似距离。@JeruLuke-由于斜视图,我有100m=1400px和100m=900px。这就是我问这篇帖子的原因…@AtifAnwer是的,我有这张照片的高度。知道1个像素并不总是等于相同的距离,你知道我如何计算地面上的距离吗?谢谢你的回答!实际上我知道四个点的坐标(在matlab上使用impixelinfo)。你知道这4幅图是什么意思@MvGYou有一个将一个点映射到另一个点的变换。输入称为前图像,结果称为图像。这与“图片”意义上的“图像”没有什么关系。好吧,我有了前图像,我会用你给我的帖子计算图像,对吗@MvG-谢谢!谢谢你的回答!实际上我知道四个点的坐标(在matlab上使用impixelinfo)。你知道这4幅图是什么意思@MvGYou有一个将一个点映射到另一个点的变换。输入称为前图像,结果称为图像。这与“图片”意义上的“图像”没有什么关系。好吧,我有了前图像,我会用你给我的帖子计算图像,对吗@MvG-谢谢!