Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Kantocv 2-1-calibration publish

5,268 views

Published on

コンンピュータビジョン―広がる要素技術と応用― 第2章カメラキャリブレーション
2.1章 カメラキャリブレーションとは

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Kantocv 2-1-calibration publish

  1. 1. 第2章カメラキャリブレー ション コンピュータビジョン広がる要素技術と応用 第2.1節 カメラキャリブレーションとは 発表者 tomoaki_teshima
  2. 2. 概要 • ピンホールカメラモデル • 外部パラメータ • 内部パラメータ • 歪み系数 • その他 2018/8/24 第47回コンピュータビジョン勉強会@関東 2
  3. 3. ピンホールカメラモデル 2018/8/24 第47回コンピュータビジョン勉強会@関東 3 ろうそく 焦点距離f 画像平面 (センサ平面)仮想画像平面 光学中心
  4. 4. 実際の光学系 2018/8/24 第47回コンピュータビジョン勉強会@関東 4 焦点距離f 実際には ・レンズの表面で計2回屈折する ・レンズは複数枚で構成される場合がある
  5. 5. 座標系の関係 2018/8/24 第47回コンピュータビジョン勉強会@関東 5 世界座標系 カメラ座標系 画像座標系
  6. 6. 右手系と左手系 2018/8/24 第47回コンピュータビジョン勉強会@関東 6 https://stackoverflow.com/questions/32889584/opencv-triangulatepoints-handedness
  7. 7. OpenCVの座標系は右手系 2018/8/24 第47回コンピュータビジョン勉強会@関東 7 X Y Z𝒑 𝑊:3 𝒑 𝑊:1 𝒑 𝑊:2
  8. 8. 外部パラメータ(世界座標系→カメラ座標系) • 𝒑 𝐶 = 𝑅𝒑 𝑊 + 𝒕 = 𝑅 𝒕 𝒑 𝑊 1 (2.1) • カメラ座標 回転行列 並進ベクトル 世界座標 • 𝒑 𝐶:1 𝒑 𝐶:2 𝒑 𝐶:3 = 𝑟11 𝑟12 𝑟13 𝑟21 𝑟22 𝑟23 𝑟31 𝑟32 𝑟33 𝒑 𝑊:1 𝒑 𝑊:2 𝒑 𝑊:3 + 𝑡1 𝑡2 𝑡3 = 𝑟11 𝑟12 𝑟13 𝑡1 𝑟21 𝑟22 𝑟23 𝑡2 𝑟31 𝑟32 𝑟33 𝑡3 𝒑 𝑊:1 𝒑 𝑊:2 𝒑 𝑊:3 1 2018/8/24 第47回コンピュータビジョン勉強会@関東 8
  9. 9. 同次座標(カメラ座標系→正規化座標系) • 𝒑 𝑁 1 = 1 𝒑 𝐶:3 𝒑 𝐶:1 𝒑 𝐶:2 𝒑 𝐶:3 ≅ 𝒑 𝐶 • 斉次座標とも言う 2018/8/24 第47回コンピュータビジョン勉強会@関東 9
  10. 10. 正規化座標 と 同次座標 • 混乱しがちだが、 • スケールの不定性を持って座標を表す「しくみ」が同次座標 • 𝑍 = 1(𝒑 𝐶:3 = 1)のときの「座標」を正規化座標 • 𝑅𝒑 𝑊 + 𝒕 = 𝑅 𝒕 𝒑 𝑊 1 = 𝑀𝒑 𝑊 (2.1)改 のように単項の掛け算として表すのに便利 2018/8/24 第47回コンピュータビジョン勉強会@関東 10
  11. 11. 内部パラメータ(カメラ座標→カメラ座標) • 焦点距離𝑓𝑢と𝑓𝑣は同じ値とすることもある • 第1行2列目をskew値とすることもある • 現実にはskewを0と置いても問題無いことが多い 2018/8/24 第47回コンピュータビジョン勉強会@関東 11 𝒒𝐼 1 = 𝑓𝑢 0 𝑢0 0 𝑓𝑣 𝑣0 0 0 1 𝒒 𝑁 1 = 𝐾 𝒒 𝑁 1 (2.4)
  12. 12. 内部パラメータの表記 • 𝐾 = 𝑓𝑢 0 𝑢0 0 𝑓𝑣 𝑣0 0 0 1 2章8p. (2.4) • 𝐾 = 𝑓𝑥 𝛾 𝑢0 0 𝑓𝑦 𝑣0 0 0 1 3章24p. (3.1) • 𝐴 = 𝑓𝑥 0 𝑐 𝑥 0 𝑓𝑦 𝑐 𝑦 0 0 1 OpenCV (3.4.2) • 𝑲 = 𝑓 𝑠 𝑐 𝑥 0 𝛼𝑓 𝑐 𝑦 0 0 1 2018/8/24 第47回コンピュータビジョン勉強会@関東 12 • 𝑲 = 𝑓𝑢 0 𝑐 𝑢 0 𝑓𝑣 𝑐 𝑣 0 0 1 4章45p. (4.1) • 𝐾 = 𝛼 𝑥 𝑠 𝑥0 0 𝛼 𝑦 𝑦0 0 0 1 Multiple View Geometry 2nd edition §6.1 157p. (6.9) Computer Vision: Algorithms and Applications
  13. 13. P行列 • 世界座標系から一発画像座標系に変換(透視投影)する行列 • Perspective Projection Matrixから通称P Matrix • camera matrix とも言う • 3行4列、自由度11の行列 2018/8/24 第47回コンピュータビジョン勉強会@関東 13 𝒒𝐼 1 ≅ 𝐾 𝑅 𝒕 𝑃 𝒑 𝑊 1
  14. 14. レンズ歪み 2018/8/24 第47回コンピュータビジョン勉強会@関東 14 𝑥 = 𝑥(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) + 2𝑝1 𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2 ) 𝑦 = 𝑦(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) + 𝑝1(𝑟2 + 2𝑦2 ) + 2𝑝2 𝑥𝑦 (2.6) https://docs.opencv.org/3.4.2/d9/d0c/group__calib3d.html
  15. 15. OpenCVでの実装 2018/8/24 第47回コンピュータビジョン勉強会@関東 15 𝑥 = 𝑥(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4) + 2𝑝1 𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2) 𝑦 = 𝑦(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 ) + 𝑝1(𝑟2 + 2𝑦2 ) + 2𝑝2 𝑥𝑦 𝑥 = 𝑥(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) + 2𝑝1 𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2 ) 𝑦 = 𝑦(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) + 𝑝1(𝑟2 + 2𝑦2 ) + 2𝑝2 𝑥𝑦 𝑥 = 𝑥 (1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) (1 + 𝑘4 𝑟2 + 𝑘5 𝑟4 + 𝑘6 𝑟6) + 2𝑝1 𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2) 𝑦 = 𝑦 (1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6) (1 + 𝑘4 𝑟2 + 𝑘5 𝑟4 + 𝑘6 𝑟6) + 𝑝1(𝑟2 + 2𝑦2 ) + 2𝑝2 𝑥𝑦 𝑥 = 𝑥 (1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) (1 + 𝑘4 𝑟2 + 𝑘5 𝑟4 + 𝑘6 𝑟6) + 2𝑝1 𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2) + 𝑠1 𝑟2 + 𝑠2 𝑟4 𝑦 = 𝑦 (1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) (1 + 𝑘4 𝑟2 + 𝑘5 𝑟4 + 𝑘6 𝑟6) + 𝑝1(𝑟2 + 2𝑦2 ) + 2𝑝2 𝑥𝑦 + 𝑠3 𝑟2 + 𝑠4 𝑟4 第2形態 パラメータ4個 第3形態 パラメータ5個 第4形態 パラメータ8個 第5形態 パラメータ12個 OpenCV 2.4系列は ここまでの実装 (2.6) 𝑥 = 𝑥(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4) 𝑦 = 𝑦(1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 ) 第1形態 パラメータ2個
  16. 16. OpenCVでの実装第6形態 2018/8/24 第47回コンピュータビジョン勉強会@関東 16 𝑠 𝑥′ 𝑦′ 1 = 𝑅33 𝜏 𝑥, 𝜏 𝑦 0 −𝑅13 𝜏 𝑥, 𝜏 𝑦 0 𝑅33 𝜏 𝑥, 𝜏 𝑦 −𝑅23(𝜏 𝑥, 𝜏 𝑦) 0 0 1 𝑅 𝜏 𝑥, 𝜏 𝑦 𝑥 𝑦 1 𝑥 = 𝑥 (1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6) (1 + 𝑘4 𝑟2 + 𝑘5 𝑟4 + 𝑘6 𝑟6) + 2𝑝1 𝑥𝑦 + 𝑝2(𝑟2 + 2𝑥2) + 𝑠1 𝑟2 + 𝑠2 𝑟4 𝑦 = 𝑦 (1 + 𝑘1 𝑟2 + 𝑘2 𝑟4 + 𝑘3 𝑟6 ) (1 + 𝑘4 𝑟2 + 𝑘5 𝑟4 + 𝑘6 𝑟6) + 𝑝1(𝑟2 + 2𝑦2 ) + 2𝑝2 𝑥𝑦 + 𝑠3 𝑟2 + 𝑠4 𝑟4 第6形態 パラメータ14個 第5形態に加えて レンズの光軸と画像平面(センサ)が直交してない場合に回転行列で補正
  17. 17. 本当は深いレンズの歪み/収差 • 詳しくは第34回勉強会、CV最先端ガイド第4巻第2章 「コンピュテーショナルフォトグラフィ」の2.2-2.3節に詳しい • 発表担当された内田 健介さんの素晴らしい資料 2018/8/24 第47回コンピュータビジョン勉強会@関東 17
  18. 18. まとめ 2018/8/24 第47回コンピュータビジョン勉強会@関東 18 𝑅 𝒕 𝐾
  19. 19. 座標系と画像原点の組み合わせ 2018/8/24 第47回コンピュータビジョン勉強会@関東 19 𝑋 𝑊 𝑌 𝑊 𝑍 𝑊 𝑥 𝑦 𝑋 𝐶 𝑌𝐶 𝑍 𝐶 𝑍 𝑊 𝑌 𝑊 𝑋 𝑊 𝑥 𝑦 𝑋 𝐶 𝑌𝐶 𝑍 𝐶 右手系/左上 左手系/左下
  20. 20. 右手座標系と左下原点の場合は? 2018/8/24 第47回コンピュータビジョン勉強会@関東 20 𝑌 𝑊 𝑍 𝑊 𝑋 𝑊 𝑥 𝑦 ? ? ? ? 𝑋 𝐶 𝑌𝐶 𝑍 𝐶 𝑋 𝐶 𝑍 𝐶 𝑌𝐶 𝑋 𝐶 𝑌𝐶 𝑍 𝐶 𝑋 𝐶 𝑍 𝐶 𝑌𝐶
  21. 21. 誤った回答 • 𝑋軸だけ反転させる • そうだ𝑓𝑥を反転させるんだ! • 計算上は辻褄があってしまうが、もちろん誤り • 焦点距離は「距離」なので、負の値は解釈に合わない 2018/8/24 第47回コンピュータビジョン勉強会@関東 21 −𝑓𝑥 0 −𝑐 𝑥 0 𝑓𝑦 𝑐 𝑦 0 0 1
  22. 22. 実際にキャリブレーションしてみる • 回転行列とにらめっこするだけで時間が溶けていきます • 実際に数値計算上は辻褄が合ってるので、眺めてると時間が無 限に溶けていく • 私はこれで10時間ぐらい溶かしました 2018/8/24 第47回コンピュータビジョン勉強会@関東 22 -0.3810472809986003,-0.9180525022598411,-0.1094649383959004, 3.56925747478902 0.8398410858767043,-0.3932075770515362, 0.3742388967260064,-2.288453572476477 -0.3866133987810201, 0.0506695613135212, 0.9208488884932663, 11.13180712451047 -0.3808959796596841,-0.9180988452242268, 0.1096027512292949, 3.564838451076172 -0.8395891953433575, 0.3930839029942365, 0.3749333651057359, 2.2889512746386 -0.3873089667717272, 0.0507893256970295,-0.9205499490269162, 11.15174520686148
  23. 23. こう解釈すると辻褄が合う 2018/8/24 第47回コンピュータビジョン勉強会@関東 23 𝑌 𝑊 𝑍 𝑊 𝑋 𝑊 𝑥 𝑦 𝑋 𝐶𝑍 𝐶 𝑌𝐶 ああ あ 教訓:座標系を設計する場合は右手系/左手系をよく気をつけましょう カメラが向いている方向がZ軸負の方向
  24. 24. 内部パラメータの単位 • 𝒒𝐼 1 ≅ 𝐾 𝑅 𝒕 𝒑 𝑊 1 (2.5)式 • 𝑅は純粋な回転行列なので、単位変換は無い • 𝑡は平行移動=加算なので、単位変換は無い • 𝐾(内部パラメータ)のどこかにpx/mmがある ↑単位px ↑単位mm どこかにpx/mm 2018/8/24 第47回コンピュータビジョン勉強会@関東 24
  25. 25. 十年来の誤解 2018/8/24 第47回コンピュータビジョン勉強会@関東 25 𝒒𝐼 1 = 𝑓𝑢 0 𝑢0 0 𝑓𝑣 𝑣0 0 0 1 𝒑 𝐶 単位 px/mm ? 単位 mm単位 px 単位 px
  26. 26. 2018/8/24 第47回コンピュータビジョン勉強会@関東 26 𝜆𝒒𝐼:1 𝜆𝒒𝐼:2 𝜆 = 𝑓𝑢 0 𝑢0 0 𝑓𝑣 𝑣0 0 0 1 𝒑 𝐶:1 𝒑 𝐶:2 𝒑 𝐶:3 単位 mm 単位 px 単位無し [mm・px] [mm・px] [mm]
  27. 27. 同次座標を正規化 2018/8/24 第47回コンピュータビジョン勉強会@関東 27 𝜆𝒒𝐼:1 𝜆𝒒𝐼:2 𝜆 ≅ 1 𝜆 𝜆𝒒𝐼:1 𝜆𝒒𝐼:2 𝜆 = 𝒒𝐼:1 𝒒𝐼:2 1 [mm・px] [mm・px] [mm] [px] [px] 焦点距離𝑓の単位はpx
  28. 28. 𝑓𝑢 0 𝑢0 𝒑 𝐶:1 𝒑 𝐶:2 𝒑 𝐶:3 = 𝑓𝑢 𝒑 𝐶:1 + 𝑢0 𝒑 𝐶:3 別解説 2018/8/24 第47回コンピュータビジョン勉強会@関東 28 単位 mm 単位 px 焦点距離𝑓の単位はpx
  29. 29. 正規化座標の意義 2018/8/24 第47回コンピュータビジョン勉強会@関東 29 𝑢 = 𝑓𝑢 𝑋 + 𝑢0 𝑍 𝑍 𝑛 𝑥 = 𝑋 𝑍 , 𝑢 = 𝑓𝑢 𝑛 𝑥 + 𝑢0 掛けて足して割る 割って掛けて足す 正規化座標を使うと単位をキャンセルできる
  30. 30. Auto focusと内部パラメータ • ズーム→当然内部パラメータキャリブレーションやり直し • フォーカス→固定するのがベスト • フォーカスが変わった場合はどうなる? • C言語クイズみたいな答えだが光学系の実装依存 • レンズ群が移動するので、厳密には光学系が変わる • 理想的には変わらないことが期待されるが、保証はされない • https://www.sony.jp/products/catalog/alpha_lens.pdf 2018/8/24 第47回コンピュータビジョン勉強会@関東 30
  31. 31. 追加資料のまとめ • 座標系と画像の原点に気をつけましょう • 焦点距離𝑓の単位はpx • フォーカスが変わった場合もキャリブレーションやり直し 2018/8/24 第47回コンピュータビジョン勉強会@関東 31
  32. 32. OpenCVで使うキャリブレーションパターン 2018/8/24 第47回コンピュータビジョン勉強会@関東 32 https://github.com/tomoaki0705/calibrationPatternGenerator https://qiita.com/tomoaki_teshima/items/39bc1b6cca9f1cf8f040
  33. 33. 参考文献 1. https://stackoverflow.com/questions/32889584/opencv- triangulatepoints-handedness 2. Multiple View Geometry 2nd edition 3. Computer Vision: Algorithms and Applications 4. https://docs.opencv.org/3.4.2/d9/d0c/group__calib3d.html 5. 内田健介:コンピュテーショナルフォトグラフィ理解のための光学系入門, https://drive.google.com/file/d/0B- GZ0bgRSmP8OUJzVWRlQ0J6UTA/view?ts=575ca9d8 6. https://www.sony.jp/products/catalog/alpha_lens.pdf 7. https://github.com/tomoaki0705/calibrationPatternGenerator 8. https://qiita.com/tomoaki_teshima/items/39bc1b6cca9f1cf8f040 2018/8/24 第47回コンピュータビジョン勉強会@関東 33

×