如何从iPhone摄像头使用图像Exif元数据获取对象的距离?


编辑 :对不起,晚编辑,没有两个参数,你不能计算它,所以首先需要填补用户从地面的相机高度。


我检查了一些解决scheme,但没有一个有帮助!

我知道工作距离=(传感器高度+主体高度)*焦距/传感器高度

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels) ---------------------------------------------------------------- object height (pixels) * sensor height (mm) 

我想从这个距离:

镜头和眼睛形成图像

你好,我使用图像Exif ALAssetsLibrary获得以下信息

我有以下元数据:

 Save image metadata. { DPIHeight = 72; DPIWidth = 72; FaceRegions = { Regions = { HeightAppliedTo = 2448; RegionList = ( { AngleInfoRoll = 270; AngleInfoYaw = 0; ConfidenceLevel = 376; FaceID = 1; Height = "0.1413399"; Timestamp = 5996166864910; Type = Face; Width = "0.1060049"; X = "0.3560049"; Y = "0.4746732"; } ); WidthAppliedTo = 3264; }; }; Orientation = 6; "{Exif}" = { ApertureValue = "2.526068811667587"; BrightnessValue = "1.291629806962232"; ColorSpace = 1; DateTimeDigitized = "2014:03:25 15:43:36"; DateTimeOriginal = "2014:03:25 15:43:36"; ExposureMode = 0; ExposureProgram = 2; ExposureTime = "0.05"; FNumber = "2.4"; Flash = 24; FocalLenIn35mmFilm = 33; FocalLength = "4.12"; ISOSpeedRatings = ( 160 ); LensMake = Apple; LensModel = "iPhone 5 back camera 4.12mm f/2.4"; LensSpecification = ( "4.12", "4.12", "2.4", "2.4" ); MeteringMode = 5; PixelXDimension = 3264; PixelYDimension = 2448; SceneType = 1; SensingMethod = 2; ShutterSpeedValue = "4.321956949076723"; SubjectArea = ( 1631, 1223, 1795, 1077 ); SubsecTimeDigitized = 261; SubsecTimeOriginal = 261; UserComment = hoge; WhiteBalance = 0; }; "{GPS}" = { Altitude = "196.008"; AltitudeRef = 0; DateStamp = "2014:03:25"; Latitude = "28.61772"; LatitudeRef = N; Longitude = "77.38891"; LongitudeRef = E; TimeStamp = "10:13:37.439000"; }; "{MakerApple}" = { 1 = 0; 3 = { epoch = 0; flags = 1; timescale = 1000000000; value = 249840592070541; }; 4 = 0; 5 = 179; 6 = 139; 7 = 1; }; "{TIFF}" = { DateTime = "2014:03:25 15:43:36"; Make = Apple; Model = "iPhone 5"; Software = "7.0.6"; XResolution = 72; YResolution = 72; }; } 

我需要使用上面的细节计算物体距相机的距离; 使用iphone4s,iphone5或iphone5s。 可能吗?

在这里输入图像说明

修改需要知道这个应用程序使用任何想法的公式:

需要知道任何方法

这个应用程序如何工作 欢迎所有帮助

@iphonemaclover。 正如很多人所指出的,没有足够的信息来计算这个纯粹使用三angular函数。 然而,根据你需要的准确程度,或者你想要测量的是什么以及你可以从iPhone恢复的其他数据和/或你愿意做出一些假设,可以使一些进展。

a)马丁R的+1,如果你假设一个平坦的地球,一个用户可以更新校准目的的手机高度(根据你所引用的应用程序),可以恢复音调信息,并知道在地面上的一个点你的对象是那么简单的三angular。 一旦估计了距离,并假设你正在测量的东西接近垂直(或坐在一个已知的angular度),那么它的高度也可以计算出来。

b)您的exif文件包含人脸区域信息。 如果你对人有兴趣,并且很乐意假设他们是成人,那么你可以使用平均头大小假设来使用你已经概述的方法来估计距离。

c)如果你可以恢复一系列的图像和相机的位置和相机/对象的位置不同,那么我相信,三维信息可以使用投影几何恢复。

如果您想知道如何根据手机/平板电脑的高度和向上/向下的距离来查找距离,只需使用angular度向下(如果向前指向为0;如果是向下-30度为-30)乘以高度唯一的问题是,我们不知道电话的高度离地面。

我知道你想使用相机的焦点,但这是不可能的。 你提到了一个android应用程序,而如果你注意到这个应用程序需要你input手机的高度。 你可以尝试使用GPS高度减去地形图所说的,但这是非常不准确的。 或者,也许你可以从一个地方拍摄一张照片,然后在目标周围移动45度左右,但不是每个人都有一个指南针来衡量这个目标,或者有能力在目标周围绕圈子。 当你站在桥上时,你会如何在你面前的物体上移动45度? 即使您尝试使用相机对焦,该function也会自动更新,而且我无法使用variables来查找相机对焦。 https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html展示了如何设置焦点模式,但是我找不到任何设置自定义焦点或查看什么相机集中在。 如果你想拍摄一张照片,并通过像素分析来进行某种自定义的像素分析,看看它是如何聚焦的,那么一定要继续。 也许一个监狱破碎的iP​​hone可以访问相机的焦点,但我猜你的目标受众是更多的是经过了囚禁过程的select组。

我认为最容易find身高的方法是让他们把手机放在脚下。 那么你可以问他们鞋子的大小和品牌来估计他们鞋子的宽度,或者只是猜测一下。 只要让他们指着他们鞋子的一侧,也许在屏幕中间显示一个红点,以便他们确切地知道他们指向的地方。 然后让他们指向另一个,然后,一旦你抓住了他们的鞋的两个边缘,使用他们的鞋的估计英寸宽度乘以从一个边缘到另一个angular度差异的tan(所以如果它是170度当指向一个边缘和190时,在另一个使用20)的棕褐色。 那应该给你离地高度。

  s = shoe width; ao = angle when pointed at left shoe edge (y-axis)(radians); at = angle when pointed at right shoe edge (y-axis)(radians); a = angle of device when pointed at the point on the ground (x-axis)(radians); d = distance; d = atan(a) * tan(at - ao) * s; 

当从每个人dynamic变化地面移动距离时,不可能获得距离。 手动用户每次都要设置手机的高度进行计算。

我知道这是一个古老的问题,但是有些事情让我想到是否可以使用iPhone的对焦传感器来测量距离物体的距离,而这一切都出现在我的search中。

我认为在@ iphonemaclover的原始问题中,“传感器高度”并不是指相机的高度在地面以上,而是相机传感器在手机内部的物理高度。 毕竟,如果您将手机置于旋转的arm上,可以在拍摄对象的周围旋转,与拍摄对象之间的距离可以保持不变,而手机的垂直位置也会改变。 传感器的大小和焦距决定了它的框架。

考虑到这一点,我用我的手机做了一些快速的实验,这似乎certificate了这一点(尽pipe如此,我承认,除了眼球估计和桌面标尺之外,我没有进行任何实际的测量。

我正在使用iPhone 5,通过一些Googlesearchfunction,我们可以了解一些关于其相机传感器的关键信息:

  • 像素分辨率:3264 x 2448
  • 焦距:4.10mm
  • 传感器尺寸:4.54 x 3.42 mm

因此:“工作距离”上面的第一个公式可以告诉我们给定尺寸的物体将填充传感器框架的距离。 在相机处于横向的情况下,拍摄高2米(2000毫米)的物体时,我们得到:

 (3.42 + 2000) * 4.10 -------------------- = 2401.76mm, or about 2.4m 3.42 

所以如果你站在离2米高的人约2.4米的地方,他们应该以横向填充框架。 对于肖像,你需要加强到1.8米远。

填充框架,这一切都很好。 但是我们想通过观察我们的主体占据多less框架来计算任意距离。 这就是第二个公式。 让我们再次使用我们的2米高的主题,并插入数字。对于这个实验,让我们说,我们已经检查了我们的图像,并在照片的主题是占用了1800像素,垂直。 插入第二个距离公式,我们得到:

 4.10 * 2000 * 2448 ------------------ = 3260.82mm, or ~ 3.26m 1800 * 3.42 

如果拍摄对象在纵向模式下拍摄了1800个垂直像素,那么我们可以猜测摄影师距离大约3.28米。

这一切都假定上面给出的公式是正确的。 再次,我只做了一些基本的尝试来validation“全帧”的测量(一次是一个身高约28厘米的人,然后是一个身高约1.7米的人)。 但我的眼球估计看上去与公式预测的结果相当接近。