如何使用图像Exif元数据从iPhone相机获取物体距离?

9to*_*ios 37 iphone camera objective-c cocos2d-iphone ios


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


我已经检查了一些解决方案,但没有一个有用!

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

distance to object (mm) = focal length (mm) * real height of the object (mm) * image height (pixels)
                          ----------------------------------------------------------------
                                object height (pixels) * sensor height (mm)
Run Code Online (Sandbox Code Playgroud)

我希望与此保持距离:

镜片和眼睛形成图像

您好我使用图像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;
    };
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

需要知道任何方法

http://www.youtube.com/watch?v=eCStIagorx8

这个App怎么工作??? 欢迎所有帮助

小智 14

@iphonemaclover.正如许多人所指出的那样,纯粹使用三角法来计算这些信息的资源不足.但是,根据您需要的准确程度,或者您要测量的内容以及您可能希望从iPhone恢复的其他数据和/或您愿意做出一些假设,可以制作一些进展.

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

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

c)如果你可以恢复一系列图像和摄像机位置并且摄像机/物体位置不同,那么我相信可以使用投影几何来恢复3d信息.


col*_*777 9

如果您想知道如何在给定手机/平板电脑高度和向上/向下俯仰的情况下找到距离,只需使用向下角度的atan(如果指向前方则为0;如果向下是-30度则为-30)乘以高度唯一的问题是,我们不知道离地的手机高度.

我知道你想使用相机的焦点,但这是不可能的.你提到了一个Android应用程序,如果你发现该应用程序要求你从地面输入手机高度.您可以尝试使用GPS高度减去地形图所说的内容,但这非常不准确.或者也许你可以从一个位置拍摄照片,然后在目标周围移动45度左右,但不是每个人都有一个指南针来衡量它,或者能够在目标周围运行圆圈.当你站在桥上时,你如何绕着你前方的物体移动45度?即使您尝试使用相机焦点,也会自动更新,我对使用变量查找相机焦点一无所知.https://developer.apple.com/library/ios/documentation/AudioVideo/Conceptual/AVFoundationPG/Articles/04_MediaCapture.html显示了如何设置焦点模式,但我无法找到有关设置自定义焦点或查看内容的任何内容相机专注于.如果你想拍照并做一些像素分析的自定义,看看它是如何聚焦的,一定要继续.也许一个破牢的iPhone可以访问相机焦点,但我猜你的目标受众更多是经过越狱过程的选择组.

我认为找到高度的最简单方法是让他们将手机放在脚下.然后你可以问他们鞋子的尺码和品牌,以估计他们的鞋子的宽度,或者只是做一个平坦的猜测.只要让他们指向他们的鞋子的侧面,也许是通过在屏幕中间显示一个红点,这样他们就知道他们指向的确切位置.然后让他们指向另一个,然后,一旦你抓住他们的鞋子的两个边缘,使用他们的鞋子的估计英寸宽度乘以从一个边缘到另一个边缘的角度差的棕褐色(所以如果它是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;
Run Code Online (Sandbox Code Playgroud)


Raj*_*han 5

它不可能通过动态改变每个人的地面移动距离来获得距离.手动用户每次都必须设置移动设备的高度来计算.