1

我目前正在开发一个应用程序,该应用程序将在相机视图上显示图像(基本上是增强现实),但发现图像看起来并不“真实”。这样做的原因是因为我的图像大小不会像现实生活中那样改变。

我拥有的数据是:图像原始尺寸(高度、宽度)、图像位置(lat、long、alt)、手机位置以及手机与图像之间的距离。

例如,假设我在 lat = 43, long = -70, alt = 0 处放置了一张增强现实图像。如果我开始用手机靠近这一点,我们应该会看到图像随着靠近而变大,但截至目前,尺寸的增加是线性的。然而,当我们开始更接近现实生活中的图像时,我们会看到它根据特定功能变得更大。

关于该功能可能是什么的任何想法?

4

2 回答 2

3

免责声明:这都是我认为的,我没有确切的功能。

第 1 步:视口假设

您需要考虑的是视口。走路时,你有一个视野。让我们通过考虑普通人在观看时不使用他们的周边视觉来简化这个场景(为简单起见,显然这在现实生活中是不正确的)。考虑到在向前看时,您会看到 180 度 - 并且没有外围设备,让我们假设左右 45 度都被移除。这将呈现一个 90 度宽的视口,在其底部,观察者将看到一个向左 45 度和向右 45 度的直角三角形。请注意,这些都不是测量的或纯粹的科学,但为了制作增强现实,某些假设可以使处理变得更容易。

第 2 步:视口的好处

现在,基于之前对视口的定义——考虑远距离的物体将占据该视图的哪个部分。这实际上可以开始生成真正的数学:)!当您靠近时,对象会变得更大,因为它占据了视图的更大部分。对象占据的视图部分取决于对象大小和视图大小之间的关系。在这种情况下,视图的大小是视口的弧长!

第 3 步:一些数学

让我们做另一个假设来简化这个过程。让我们假设我们不是查看真实的弧线,而是查看视口的斜边。当从距离d看时,以 90 度的视角看,视口的斜边将为

hypotenuse = 2.83 * d
//Note: 2.83 is approx. 2 * sqr. root of 2

第 4 步:结论和应用

因此,如果您站在距离物体 100 英尺的地方,那么您的视口将是 283 英尺。如果物体(例如汽车的前部)占据 6 英尺,那么这将仅占全视图的 6/283 = 2%。

但是,如果您站在距同一辆车 50 英尺的位置,则该关系将为 6 / 141 = 4% 的全视图。

可以看到,这显然是一个线性关系。如果您知道对象的大小是多少(让我们称之为s),那么应该采取的视图百分比将是

view % = s / 2.83d

此外,这里显示的是确定对象的大小非常重要,并且很难从单个 .jpg 图像中推断出来。我可以有一张 5 号足球的图片,大小为 2500 像素 x 2500 像素。这是否意味着它很大?不,但如果它的大小的唯一假设来自总像素数,它看起来会很大。沿着同样的思路,我可以有一个 100 像素 x 100 像素的地球图片,但我希望它不会显得那么小。

求解对象的大小将产生允许用户在增强现实中接近对象的结果。知道如何在用户接近时缩放图像是相当微不足道的。

于 2012-07-09T00:00:52.520 回答
1

来自摄影论坛

假设您知道焦距,并且所讨论的对象是被聚焦的对象-您将必须知道视场的角度(您会知道,知道使用了哪个镜头- exif 甚至可能会告诉您角度)

一旦你知道了这一点,你就必须弄清楚这个物体占据了多少。

知道了这一点,你可以画一个等腰三角形。你会知道所有三个角的角度,以及它有多高。由此,您可以绘制一个知道一侧和所有角度的直角三角形。知道了这一点,你就可以算出另外两条边的长度了。

短边的长度乘以 2 就是对象的宽度。

您需要一个维度才能开始。这可能是相机到被摄体的距离,相关物体附近另一个物体的尺寸等等......知道了视野的角度,您可能会根据什么来计算相机的距离否则在框架中。

于 2012-07-28T08:06:11.850 回答