Upgrade to Pro — share decks privately, control downloads, hide ads and more …

『fSpy』を用いた写真の分析

meow
April 02, 2022

 『fSpy』を用いた写真の分析

2022/03/28(月)に 第17回 初心者のためのセキュリティ勉強会(オンライン開催) で発表したスライドです。

https://sfb.connpass.com/event/241531/

■リンク
・fSpy
https://fspy.io/
・【特定厨】写真から自宅を特定する方法
https://www.youtube.com/watch?v=9ZgEEkUPL00
・パースフリークス
http://www.persfreaks.jp/

meow

April 02, 2022
Tweet

More Decks by meow

Other Decks in Technology

Transcript

  1. 『fSpy』を⽤いた写真の分析
    第17回 初⼼者のためのセキュリティ勉強会(オンライン開催)
    meow ( @meow_noisy)
    2022/03/28(⽉)

    View Slide

  2. 発表概要
    u 「SNSにアップロードされた写真の分析がしたい」という動機で、
    u カメラパラメータ推定ツール『fSpy』の紹介
    u 『fSpy』を⽤いた⼨法計測、カメラの位置、⾓度の推定⽅法を説明
    u ケーススタディを通して、写真の公開⾏為がプライバシー上の
    リスクの増加につながることを説明

    View Slide

  3. おしながき
    u 写真の分析について
    u 『fSpy』について
    u 本来の使い⽅
    u 写真の分析への応⽤
    u ケーススタディ1: ⼨法計測
    u ケーススタディ2: カメラ位置の推定
    u まとめ

    View Slide

  4. 写真の分析について

    View Slide

  5. 背景
    u 先⽉、SNSにアップロードされた写真の分析をしていた時、
    分析できそうだけどどうすればいいかわからないことが
    あった
    u カメラまでの距離の推定
    u カメラを⾒上げた時の⾓度の推定
    u 以前紹介した透視図法的アプローチの応⽤で実現できそう
    被写体
    カメラ
    何メートル?
    何度?

    View Slide

  6. 透視図法的アプローチ
    u ラムダ情報局さんの紹介していた⽅法
    u 【特定厨】写真から⾃宅を特定する⽅法
    u https://www.youtube.com/watch?v=9ZgEEkUPL00
    u 写真内から消失点を⾒つけ、(パースのついた)正⽅形のグ
    リッドを作図することで、撮影⽅向を求める
    画像はYoutubeの動画から

    View Slide

  7. 透視図法的アプローチの応⽤可能性
    u 動画の例ではグリッドを地⾯に対して引いていたが
    ⾼さに対してもいけそう
    u グリッドが引ければ⽐率からものの⾼さを推定できそう
    u ただ、写真からの作図はさすがに⾯倒
    u ツールがないかを探す
    u → 写真分析⽤途のものは無かったが、Blenderのプラグインを
    裏技的に使うことで実現可能であることがわかった

    View Slide

  8. 『fSpy』について
    本来の使い⽅、写真の分析への応⽤

    View Slide

  9. 『fSpy』とは
    u もともとは3DCGソフト『Blender』のプラグイン
    u https://fspy.io/
    u 1枚の写真からカメラパラメータ(カメラ位置、⾓度)を推定する
    u 本来の⽬的は写真と同様の3D空間を⽣成することを⽀援すること
    u スタンドアロンになったアプリも提供されている
    u https://github.com/stuffmatic/fSpy/releases/tag/v1.0.3
    u マルチプラットフォーム: Windows / Mac / Linux

    View Slide

  10. 『fSpy』の(本来の)使い⽅
    u 空間的には平⾏(だけどパースのついた)関係にある線の
    ペアを⼈が指定する(消失点を与える)
    u 右下図だと⾚線ペア、薄緑ペアが空間的に平⾏関係にある
    u なるべく⾓度がついている平⾏関係を⾒つけた⽅が良いとのこと
    u それだけでカメラパラメータが計算される
    注: 線が薄いので別途強調した線を引いている

    View Slide

  11. 『fSpy』の(本来の)使い⽅
    u 正⽅形グリッドをプロットすることができる
    u うまく空間を捉えられているかの確認ができる
    xyグリッド yzグリッド xzグリッド

    View Slide

  12. 『fSpy』の(本来の)使い⽅
    u ⽣成したカメラパラメータの情報を.fspyファイルに保存
    u Blenderで.fspy ファイルをインポートすると、そのカメラ
    パラメータのカメラオブジェクトを空間上に⽣成可能

    View Slide

  13. 『fSpy』で推定したカメラパラメータを
    写真の分析に活かす
    1. グリッドをものさし代わりにできる
    u 正確なサイズはわからないが、基準からの相対サイズ⽐率を
    知ることができる
    u パースが付いた状態なのでかなり使い勝⼿が良い
    2. 撮影位置の特定(後述)
    u オブジェクトの相対位置、カメラの⾓度を計算
    階段の幅は
    階段の⾼さ
    約1.5つ分

    View Slide

  14. オブジェクトとの相対距離
    u Camera positionの情報
    u カメラとグリッドの中⼼からの距離となる
    u このときの数値はグリッドの個数になる
    u Blenderで空間を確認した⽅がわかりやすい
    fSpy上のグリッドの中⼼
    fSpyの情報
    (xがグリッド3.1つ分、
    yがマイナス⽅向に7.94つ分...
    という意味)
    Blenderにおけるカメラの位置
    Camera
    position
    の座標
    に対応

    View Slide

  15. カメラの⾓度
    u Blenderで読み込むとカメラの⾓度がわかる
    u 各軸の⾓度を⾸の動きに例えて説明する
    u x: ⾸を前後に倒している⾓度
    u 真下向いている時が0度。真正⾯が90度。真上が180度。
    u y: ⾸を傾ける⾓度
    u プラスだと右側に傾く。マイナスだと左側。
    u z: ⾸を横に振る⾓度
    u プラスの⾓度だと左に、マイナスの⾓度だと右。
    u 先程の画像の例だと、26度⾒下げて、2度左に
    傾けて、22度左に向けて撮影している

    View Slide

  16. ケーススタディ1: ⼨法計測

    View Slide

  17. お題
    u 幕張メッセ(TGS2018)で取った写真
    u ⼿前の男性の⾝⻑をチェス盤状の床のマスの⻑さからざっくり
    計算してみる

    View Slide

  18. 床の1マスあたりの⻑さを図る
    u Google EarthのPro版(ネイティブ版)の定規機能を使う
    u 全部で11マスあるが22.35mなので1マスは2.03m程度

    View Slide

  19. fSpyに補助線を与える
    u 今回はx(横⽅向;⾚⾊)とy(奥⾏き;緑⾊)を指定
    u これだけでカメラパラメータが計算完了

    View Slide

  20. xzグリッドをプロット
    u グリッドはなるべく床のマスと男性の関係がわかる場所ま
    で移動しておく

    View Slide

  21. グリッドの数、⽐率から概算する
    u 床1マスはグリッド6.8つ分
    u 男性はグリッド5.8つ分
    u よって、男性の⾝⻑は
    = 5.8 / 6.8 * 2.03
    ≒ 1.73 m
    5.8つ
    6.8つ(2.03m)

    View Slide

  22. ケーススタディ2: カメラ位置の推定

    View Slide

  23. お題
    u とある建物から撮った札幌駅の⾵景
    u この写真を元に撮影した時の情報を推定する
    1. 撮影位置
    2. カメラの⽅向
    3. 部屋の階
    時計も写っているので、どういう⽂脈で撮影したのか考えると⾯⽩いかもしれない

    View Slide

  24. fSpyに補助線を与える
    u 今回はx軸(横⽅向)とz軸(⾼さ; ⻘⾊)の2つにしてみた

    View Slide

  25. xzグリッドをプロット

    View Slide

  26. 現実におけるグリッドの⻑さを調査
    u 3マスで22.91m

    View Slide

  27. 撮影位置の推定
    u グリッドの中⼼から何個分離れているか
    u Camera positionを⾒る
    u グリッドの中⼼から-x軸⽅向に-5.8個分、 -y軸⽅向に-8.1個分
    x
    y
    中⼼

    View Slide

  28. ①撮影位置の推定
    u 中⼼からy軸⽅向に2マス
    進んだ場所を基準に逆算する
    u -x軸⽅向に-5.8個分、
    -y軸⽅向に-10.1個分 の場所
    x
    y

    View Slide

  29. ①撮影位置の推定
    u 中⼼からy軸⽅向に2マス
    進んだ場所を基準に逆算する
    u -x軸⽅向に-5.8個分、
    -y軸⽅向に-10.1個分 の場所
    u ホテルグレイスリー札幌
    であるとわかる
    u ⼤体どのあたりの部屋かもわかる
    u ただし右図は衛星写真なので
    ⾒た⽬と2次元上の位置は異なる
    x
    y

    View Slide

  30. ②カメラの⽅向の推定
    u Blenderでfspyのファイルをインポート
    u ⼤体10度くらい⾒下げて、右⽅向に17度くらい回転して撮影している
    ことがわかる

    View Slide

  31. ②カメラの⽅向の推定
    u デジタル分度器で17度の⽅向をプロット
    u ホテル室内でこの⽅向で撮っていることがわかる
    https://www.ginifab.com/feeds/angle_measurement/
    デジタル分度器→

    View Slide

  32. ③階の推定
    u 消失点は⽬線(アイレベル)の⾼さにくることを利⽤
    u ⼤体DAIMARUのロゴの下らへんにくる
    u (なお、⽬線はカメラの傾きに依存しない)
    ⽬線

    View Slide

  33. ③階の推定
    u Google Earthで 標⾼を⽰すポリゴンオブジェクトを⽣成
    u 標⾼45mでだいたい
    DAIMARUロゴの下まで浸かる

    View Slide

  34. ③階の推定
    u ホテルグレイスリー札幌の
    オブジェクトの浸⽔ラインを確認
    u ここが撮影した⾼さになる
    u → 12階から撮影している

    View Slide

  35. まとめ
    u 『 fSpy 』を(半ば裏技的に)⽤いて、写真内の物体の
    ⼨法計測やカメラ位置の推定を⾏った
    u どの位置からどういう⾓度で撮影しているのかがわかる
    u ⾔うまでもないが、部屋の外から⾒える景⾊の写真を
    アップロードするのは危険

    View Slide

  36. おまけ: 4⽉ OSINT問の出るCTF
    u 『**** *** ***** ***』(伏せた理由はお察しください)
    u
    🇺🇦⽀援のクラウドファンディングが成⽴されたことにより
    開催
    u 参加⽅法は下記
    u https://www.justgiving.com/fundraising/capturethetalent
    u 4/2から開催予定
    u 無料(のはず)

    View Slide

  37. 参考⽂献(スライド内で⾔及したもの以外)
    u パースフリークス
    u http://www.persfreaks.jp/

    View Slide

  38. ご清聴ありがとうございました
    @meow_noisy
    この発表以外にもSNSにおけるプライバシー保護のノウハウを多数紹介しています。
    ご興味があれば、ユーザ名から⼀覧いただければと思います。
    クリック

    View Slide