Подтвердить что ты не робот

Как получить расстояние от объекта с iPhone-камеры, используя изображение Exif meta data?


Изменить: Извините за позднее редактирование. Без двух параметров вы не можете его вычислить,  Поэтому сначала необходимо заполнить пользовательскую высоту камеры от земли.


Я проверил ряд решений, но ни один из них не был полезен!

Я знаю, что рабочее расстояние = (высота датчика + высота объекта) * Фокусное расстояние/высота датчика

и

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. Возможно ли это?

enter image description here

Изменено Необходимость знать формулу, используемую этим приложением, любую идею:

Необходимо знать любой метод

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

как это приложение работает??? Вся Помощь приветствуется

4b9b3361

Ответ 1

@iphonemaclover. Поскольку многие люди указали на недостаточную информацию, чтобы рассчитать это исключительно с помощью тригонометрии. Однако, в зависимости от того, насколько точно вы должны быть, или что именно вы пытаетесь измерить, и других данных, которые вы можете ожидать от iphone и/или вы готовы сделать некоторые предположения, можно сделать некоторые набеги.

a) +1 Мартину R, если вы предполагаете плоскую землю, высоту телефона (которая, как указано в приложении, которую вы указали), пользователь может обновить для целей калибровки, может восстановить информацию о шаге и узнать, где точка на земле в основе вашего объекта тогда это просто триггер. После того, как вы оцениваете расстояние и считаете, что вещь, которую вы измеряете, близка к вертикали (или сидит под известным углом), тогда можно также вычислить ее высоту.

b) Ваш файл exif содержит информацию о лицевой области. Если вы заинтересованы в людях и счастливы сделать предположение, что они взрослые, тогда вы можете использовать среднее предположение размера головы для оценки расстояния, используя уже описанный метод.

c) Если вы можете восстановить серию изображений и положений камеры, а позиции камеры/объекта меняются, я верю, что трехмерную информацию можно восстановить с помощью проективной геометрии.

Ответ 2

Если вам интересно, как найти расстояние, учитывая высоту телефона/планшета и шаг вверх/вниз, просто используйте атан угла вниз (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;

Ответ 3

Невозможно дистанцироваться от каждого человека с расстоянием расстояние между наземными и мобильными. Вручную пользователь должен каждый раз устанавливать высоту мобильного устройства для расчета.

Ответ 4

Я знаю, что это старый вопрос, но что-то заставило меня задуматься о том, можно ли использовать датчик фокусировки iPhone для измерения расстояния до объекта, и это произошло в моих поисках.

Я думаю, что в оригинальном вопросе @iphonemaclover "высота датчика" не относится к высоте камеры над землей, а физическая высота датчика камеры внутри телефона. В конце концов, если бы у вас был телефон на вращающемся плече, вращающемся вокруг объекта, расстояние до объекта могло оставаться постоянным, а вертикальное положение телефона изменилось. Это размер датчика и фокусное расстояние, которые определяют, что находится в его рамке.

Имея это в виду, я сделал несколько быстрых экспериментов с моим телефоном, который, казалось, подтвердил это (хотя, я соглашусь, я не выполнил никаких реальных измерений вне оценок глазного яблока и линейки).

Я использовал iPhone 5, и с небольшим Googling мы можем узнать некоторые ключевые сведения о его датчике камеры:

  • Разрешение пикселей: 3264 x 2448
  • фокусное расстояние: 4,10 мм
  • размер датчика: 4,54 x 3,42 мм

Итак: первая приведенная выше формула для "Рабочего расстояния" может рассказать нам о расстоянии, на котором объект заданного размера заполнит рамку датчика. С камерой в альбомной ориентации и предметом высотой 2 м (2000 мм) мы получаем:

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

Итак, если вы стоите около 2,4 м от человека высотой 2 м, они должны заполнить рамку в альбомной ориентации. Для портрета вам нужно приблизиться примерно к 1,8 м.

Это все прекрасно и прекрасно для заполнения рамки. Но мы хотим рассчитать для произвольных расстояний, видя, какая часть рамки занимает наш предмет. Это вторая формула. Позвольте снова использовать наш 2-метровый объект и вставляем номера. В этом эксперименте скажем, что мы рассмотрели наше изображение, а объект на фотографии занимает 1800 пикселей по вертикали. Подключаясь к формуле второго расстояния, получим:

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

И если субъект занял те же самые 1800 вертикальных пикселей в портретном режиме, тогда мы могли догадаться, что фотограф находился на расстоянии 3,28 м.

Все это предполагает, что приведенные выше формулы правильны. И снова я сделал лишь рудиментарные попытки проверить измерения "полного кадра" (один раз с субъектом размером 28 см в высоту, а затем с предметом высотой около 1,7 м). Но мои оценки глазного яблока выглядели достаточно близко к тому, что предсказала формула.