web-dev-qa-db-ja.com

画像Exifメタデータを使用してiPhoneカメラからオブジェクトの距離を取得する方法は?


Edit:遅い編集で申し訳ありませんが、2つのパラメーターがないと計算できません。そのため、最初にユーザーのカメラの高さを地面から埋める必要があります。


私はいくつかの解決策を確認しましたが、どれも役に立たなかった!

作動距離=(センサーの高さ+被写体の高さ)*焦点距離/センサーの高さ

そして

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

このアプリの仕組み???すべてのヘルプは大歓迎です

37
9to5ios

@iphonemaclover。多くの人が指摘しているように、純粋に三角法を使用してこれを計算するには情報が不十分です。ただし、どの程度正確である必要があるか、測定しようとしているもの、およびiPhoneからの回復が期待できるその他のデータ、および/またはいくつかの仮定をする意思があるかどうかに応じて、侵入します。

a)Martin Rに+1、平らな地球を想定している場合、ユーザーがキャリブレーションのために更新できる電話の高さ(引用したアプリによる)、ピッチ情報を復元し、地上のポイントがベースのどこにあるかを知ることができますオブジェクトのこれは単純なトリガーです。距離の推定値があり、測定対象が垂直に近い(または既知の角度で座っている)と仮定すると、その高さも計算できます。

b)exifファイルに顔領域情報が含まれています。人々に興味があり、大人であると仮定して満足している場合は、すでに説明した方法を使用して平均頭サイズの仮定を使用して距離を推定できます。

c)一連の画像とカメラの位置を復元でき、カメラ/オブジェクトの位置が異なる場合、投影ジオメトリを使用して3D情報を復元できると思います。

14
StuReeks

電話/タブレットの高さから距離を見つけ、上下にピッチする方法を知りたい場合は、下向きの角度のアタンを使用します(前方を向いている場合は0、下向きに-30度の場合は-30)唯一の問題は、地面からの電話の高さがわからないことです。

カメラの焦点を使いたいと思っていますが、それはありそうもないことです。あなたはAndroidアプリ、あなたはアプリが地面から携帯電話の高さを入力する必要があることに気付くならば。あなたはあなたがGPS高度から地形図が言うものを引いたまたは、ある場所から写真を撮り、ターゲットの周りを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;
9
colorado777

地上移動距離を各人から動的に変化させながら距離を取得することは不可能です。手動でユーザーが計算するたびにモバイルの高さを設定する必要があります。

5

これは古い質問ですが、オブジェクトの距離を測定するためにiPhoneのフォーカスセンサーを使用できるかどうかを考えていたので、これが検索で見つかりました。

@iphonemacloverの最初の質問では、「センサーの高さ」は地上のカメラの高さではなく、電話内部のカメラセンサーの物理的な高さを指していると思います。結局のところ、被写体の周りを回転する回転アームに電話機がある場合、被写体までの距離は一定のままであり、電話機の垂直位置は変化します。フレーム内にあるものを決定するのはセンサーのサイズと焦点距離です。

そのことを念頭に置いて、私はこれを裏付けているように見える電話でいくつかの簡単な実験を行いました(ただし、眼球の推定値と卓上定規以外の実際の測定は実行しなかったことを認めます)

私はiPhone 5を使っていましたが、少しグーグルでカメラセンサーに関する重要な情報を学ぶことができます:

  • ピクセル解像度:3264 x 2448
  • 焦点距離:4.10mm
  • センサーサイズ:4.54 x 3.42 mm

そのため、上記の「ワーキングディスタンス」の最初の式は、特定のサイズの被写体がセンサーのフレームを満たす距離を示しています。カメラを横向きにし、被写体の高さを2m(2000mm)にすると、次のようになります。

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

したがって、身長2mの人から約2.4m離れた場所に立つと、横向きでフレームを埋める必要があります。ポートレートの場合は、最大約1.8m離れる必要があります。

それはフレームを埋めるためにすべて素晴らしいと素晴らしいです。しかし、被写体が占めるフレームの量を確認して、任意の距離を計算したいと思います。それが2番目の式の目的です。もう一度、高さ2mの被写体を使用して、数字を差し込みます。この実験では、画像を調べて、写真の被写体が垂直方向に1800ピクセルを占有しているとしましょう。 2番目の距離式に接続すると、次のようになります。

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

そして、被写体がポートレートモードで同じ1800の垂直ピクセルを使用した場合、写真家は約3.28m離れていると推測できます。

これはすべて、上記の式が正しいことを前提としています。繰り返しになりますが、私は「フルフレーム」の測定値を検証するための初歩的な試みのみを行いました(1回は身長約28cm、1回は身長1.7m)。しかし、私の眼球の推定値は、式が予測したものにかなり近いように見えました。

3
Dougal Campbell