SlideShare a Scribd company logo
10
Most read
15
Most read
16
Most read
XR DEVELOPERなら知っておきたいカメラの基礎知識
前本 知志(Microsoft MVP for Windows Development)
@peugeot106s16
株式会社ホロラボ
株式会社システムフレンド
一般社団法人T.M.C.N
・株式会社ホロラボ Co-founder(共同創設者)
http://hololab.co.jp/
・TMCN (Tokyo MotionControl Network) Co-founder(共同創設者)
https://www.facebook.com/TokyoMotioncontrolNetwork
・著書「Intel RealSense SDK センサープログラミング」
https://www.shoeisha.co.jp/book/detail/9784798139630
・Microsoft MVP for Windows Development 2016~
https://mvp.microsoft.com/ja-jp/PublicProfile/5002154?fullName=Satoshi%20%20Maemoto
前本 知志
1
http://satoshi-maemoto.hatenablog.com/
@peugeot106s16
maemoto@hololab.co.jp
普段はグローバルなチームで
xR関係のSDK(カメラ系)を作る仕事をしています
疲れた時の息抜きはおばかアプリ開発
https://youtu.be/rbhTDwQFsNY
AGENDA
1. AR(MR)とカメラとUnity
2. カメラパラメータがわかっている場合
3. カメラパラメータがわかっていない場合
4
1.AR(MR)とカメラとUNITY
1. AR(MR)アプリの重要な機能は、現実空間にCGを重畳表示することである
2. AR(MR)アプリのメインインプットソースは、現実空間を見ているカメラの映像、またはそ
れを処理したデータである
3. 現実空間にCGを重畳表示するとは、「現実空間を見ているカメラ」と「Unity内の仮想
Camera」の映像を重ね合わせることである
4. そのために必要な事
1. とある共通の空間原点を定義し、同じ座標軸で二つのカメラの回転(Rotation)と移動量
(Translation)を合わせる
2. 二つのカメラの視野角、光学中心、歪み等を揃える ※今日の話題はこちら
これらはVuforia, ARKit, ARCoreといったARエンジンがおまかせでやってくれることです
しかしおまかせではいつまでたっても俺ARエンジンは作れません!(需要は知らん
5
カメラパラメータとは6
• 外部パラメータ (External Parameter / Extrinsics)
• カメラとカメラの相対位置(RotationとTranslation)を定義
• 複数カメラ、複数デバイスの空間シェアでは良く出てくるもの
• 今日は触れません
• 内部パラメータ (Internal Parameter / Intrinsics)
• カメラの視野角、光学中心、歪み等を定義
• 映像として綺麗に合わせるために重要
• 今日の話題
カメラパラメータが異なると…7
• Unity内に二つのカメラを置きシミュレート
• 二つのカメラは同じ位置で同じものを見る
• 視野角(内部パラメータ)が異なる
• 見える映像は全く異なる
• 重畳しても映像はうまく重ならない
重畳
1.カメラパラメータがわかっている場合
1. 1眼レフ等Specとしてカメラパラメータがわかっている場合は、Unity Camera
にその値を設定すればちゃんと映像が合います
1. Camera.Physical Camera をtrueにし、下記を現実のカメラと同じ値にする
2. Focal Length (焦点距離)
3. Sensor Size (イメージセンサーの大きさ)
8
https://docs.unity3d.com/ja/2018.4/Manual/PhysicalCameras.html
実験
1. 1.5m先の0.38mx0.25m角の物体(つまりHoloLens2の箱)を現実のカメラ
(Canon EOS 5D Mark III Sensor Size=36x24mm)とUnity内の仮想カメラで
撮影し、映像を比較する
9
Z=1.5
実験
1. Focal Length =35mm
10
Z=1.5
1. Focal Length =70mm
実験
11
1. Focal Length =105mm
実験
12
13
ぴったり合った
気持ちが良い
2.カメラパラメータがわかっていない場合
1. 大抵のカメラSDKにはIntrinsicsを取得できるAPIやToolがあります。
1. 例えばAzure Kinect
https://microsoft.github.io/Azure-Kinect-Sensor-
SDK/master/structk4a__calibration__intrinsic__parameters__t_1_1__param.html
2. APIが無い、値が信用できない場合はOpenCVを使用してカメラパラメータを求
める(皆さんおなじみの(?)チェッカーボードを使うもの)
https://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html
こちらの記事はとても参考になります!
https://kamino.hatenablog.com/entry/opencv_calibrate_camera
3. IntrinsicsをProjection Matrixに変換してUnityのCameraに設定する
Intrinsicsはリアルカメラのパラメータとは表現が異なるので、直接Inspectorから設定できま
せん。射影行列へ変換することが必要です。
https://kamino.hatenablog.com/entry/unity-import-opencv-camera-params
14
チェッカーボードを用いたキャリブレーション15
• チェッカーボードを撮影する
• 状態の良い画像が多数ある方が良い
• 様々な角度から撮影する
• OpenCVのcalibrateCamera関数等でごにょご
にょする
• Internal Parameterが求まる
• Internal Parameterは9つの数値リスト。
3x3の射影行列を表す
• fx / fy = 焦点距離
• cx / cy = 光学中心
https://docs.opencv.org/master/d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66acb6ed5aa65d
UNITYのカメラに適用する16
• UnityのCameraに射影行列を反映する
• Inspectorからは適用できない
• FoVをWidth,Hight個別に設定できない、など射影行列の表現を全て正確に設定することができないため
• Camera.projectionMatrixにMatrix3x3として設定を行う
• https://docs.unity3d.com/ja/2019.4/ScriptReference/Camera-projectionMatrix.html
• これを行うとInspectorの設定は無効になるので注意
• UnityなのにOpenGL座標系になる
• (難しいけれど、3Dグラフィックスちょっとできる気になれる)
• このスクリプトを使わせてもらうのが良いw
• https://github.com/kamino410/cv-
snippets/blob/master/unity/OpenCVCameraParams.cs
実験
1. 1.5m先のチェッカーボードを現実のカメラ(Canon EOS 5D Mark III Focal Length =70mm)
で撮影し、OpenCVでInternal Parameterを求める。
2. 求めたパラメータを設定したUnity内の仮想カメラの映像と、Physical Cameraの実験で得た
Focal Length =70mmの映像を比較する
17
Z=1.5
同じような映像が得られたら大成功!
1. Focal Length =70mm
2. 15枚の画像をOpenCVで処理
3. 求まったパラメータ
1. 1.0501518959042742e+04, 0, 2.2964267305726362e
2. 0,1.0498208083522914e+04, 2.0191220772892598e+03
3. 0, 0, 1
実験
18
1. UnityのCameraに適用すると!
実験
19
OpenCVキャリブ版 Physical Camera設定版
大違いじゃないけど、近いと言えば近いけど
ズレてる(笑)!
20
• 敗因
• 撮影枚数が少ない
• 良い写真がたくさんあれば誤差が収束してゆく
• 様々なアナログ要素がキャリブレーション精度を下げる
• 手作りチェッカーボードの精度
• 撮影時の手ブレ
• カメラのピント
• ホワイトバランスのブレ
• …
なかなか完璧なキャリブレーションを個人レベルで行うのは難しい。。
ここを良くしてゆくのがノウハウ、チャレンジポイントですw
実験
21
• 今は何でも良いソリューションが手軽に使えますが、しくみを知れば
• トラブルシューティングに役立つ
• 自分でしくみを作ることができる
• コスパの良い知識である
• 今後Unityが無くなったり、国が滅びたりしても光の性質やカメラのしくみは
簡単には変わりません。
• 単純に、知ったことを実験して確かめてゆくことは実にたのしい
まとめ
xR Developerなら知っておきたいカメラの基礎知識

More Related Content

PPTX
Unityネイティブプラグインマニアクス #denatechcon
PDF
ソーシャルゲームのためのデータベース設計
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
PDF
新入社員のための大規模ゲーム開発入門 サーバサイド編
PDF
MagicOnion入門
PDF
テスト文字列に「うんこ」と入れるな
PPTX
世界一わかりやすいClean Architecture
PDF
オンラインゲームの仕組みと工夫
Unityネイティブプラグインマニアクス #denatechcon
ソーシャルゲームのためのデータベース設計
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
新入社員のための大規模ゲーム開発入門 サーバサイド編
MagicOnion入門
テスト文字列に「うんこ」と入れるな
世界一わかりやすいClean Architecture
オンラインゲームの仕組みと工夫

What's hot (20)

PDF
自宅で出来る!ゲームサーバの作り方
PPTX
なぜなにリアルタイムレンダリング
PDF
多機能ボイチャを簡単に導入する方法
PDF
シリコンバレーの「何が」凄いのか
PDF
【Unity道場】物理シミュレーション完全マスター
PDF
Steam ゲーム内購入 サーバーサイド実装について
PPTX
OpenVRやOpenXRの基本的なことを調べてみた
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
PDF
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
PDF
UE4でマルチプレイヤーゲームを作ろう
PDF
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
PDF
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
PDF
ゲームの仕様書を書こうまとめ
PPTX
画像処理AIを用いた異常検知
PDF
Kubernetesによる機械学習基盤への挑戦
PPTX
大規模ゲーム開発における build 高速化と安定化
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
PDF
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
PDF
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
PDF
Serverless時代のJavaについて
自宅で出来る!ゲームサーバの作り方
なぜなにリアルタイムレンダリング
多機能ボイチャを簡単に導入する方法
シリコンバレーの「何が」凄いのか
【Unity道場】物理シミュレーション完全マスター
Steam ゲーム内購入 サーバーサイド実装について
OpenVRやOpenXRの基本的なことを調べてみた
ネットワーク ゲームにおけるTCPとUDPの使い分け
「スプラトゥーン」リアルタイム画像解析ツール 「IkaLog」の裏側
UE4でマルチプレイヤーゲームを作ろう
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
ゲームの仕様書を書こうまとめ
画像処理AIを用いた異常検知
Kubernetesによる機械学習基盤への挑戦
大規模ゲーム開発における build 高速化と安定化
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
信頼性とアジリティを同時に上げろ!モノタロウのカナリアリリース導入.pdf
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Serverless時代のJavaについて
Ad

Similar to xR Developerなら知っておきたいカメラの基礎知識 (20)

PPTX
Shadow gunのサンプルから学べるモバイル最適化
PDF
はじめようArcore (修正版)
PDF
はじめようARCore
PDF
20160525はじめてのコンピュータビジョン
PPTX
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
PPTX
関東コンピュータビジョン勉強会
PDF
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
PDF
KINECT Mixed Reality
PPTX
20150328 cv関東勉強会 sumisumithパート_v1.3
PDF
DeNA TechCon2016 360VR Live Streaming
PDF
OpenCVで作るスタンプAR
PDF
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
PDF
ARもVRもMRもまとめてドドンドーン!
PDF
Unityでar
PPTX
10年後のIT未来予想図 [センサー&デバイス編]_エフスタ!!TOKYO_20141205
PPTX
20190227 第51回CV勉強会@関東
PPTX
Unityで作るオリジナルウェブカメラ
PDF
OpenCVとARCoreで作るスタンプAR in 宮崎
PDF
静岡Developers勉強会コンピュータビジョンvol4発表用資料
PDF
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
Shadow gunのサンプルから学べるモバイル最適化
はじめようArcore (修正版)
はじめようARCore
20160525はじめてのコンピュータビジョン
SSII2020TS: 物理ベースビジョンの過去・現在・未来 〜 カメラ・物体・光のインタラクションを モデル化するには 〜
関東コンピュータビジョン勉強会
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
KINECT Mixed Reality
20150328 cv関東勉強会 sumisumithパート_v1.3
DeNA TechCon2016 360VR Live Streaming
OpenCVで作るスタンプAR
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
ARもVRもMRもまとめてドドンドーン!
Unityでar
10年後のIT未来予想図 [センサー&デバイス編]_エフスタ!!TOKYO_20141205
20190227 第51回CV勉強会@関東
Unityで作るオリジナルウェブカメラ
OpenCVとARCoreで作るスタンプAR in 宮崎
静岡Developers勉強会コンピュータビジョンvol4発表用資料
点群を使いこなせ! 可視化なんて当たり前、xRと点群を組み合わせたUnityの世界 【Interact , Stipple】
Ad

More from Satoshi Maemoto (20)

PDF
MIXED REALITY に REALITY を PLUS するハプティクス技術
PDF
広島でMixed Realityやりましょう!
PDF
UNC progress report
PDF
TMCN振り返り 令和ver
PDF
SUPER HIGH-TECH UNC で実現する新しい世界
PDF
今話題の!AIoT MR UNCで変わる世界
PDF
FESTA de UNC
PDF
Internet of UNCで実現する新しい共有体験
PDF
UNC近況報告
PDF
楽しいものづくり ファーストステップ
PDF
HoloLensとさまざまなデバイス連携ドドンドーン
PDF
xRLT vol.01 LT
PDF
センサー・VR・MR 基本とオススメ
PDF
ARもVRもMRもまとめてドーン
PDF
LODGEのいいところあげていきます!
PDF
ARもVRもMRもまとめてドーン
PDF
VR/AR/MRってなんですか?
PDF
Kinect やセンサーデバイスと連動した楽しいアプリ開発
PDF
沖縄まで踊りに来たぜ!VR/AR/MR最前線
PDF
Unityでホログラフィックunityちゃんを呼び出す方法
MIXED REALITY に REALITY を PLUS するハプティクス技術
広島でMixed Realityやりましょう!
UNC progress report
TMCN振り返り 令和ver
SUPER HIGH-TECH UNC で実現する新しい世界
今話題の!AIoT MR UNCで変わる世界
FESTA de UNC
Internet of UNCで実現する新しい共有体験
UNC近況報告
楽しいものづくり ファーストステップ
HoloLensとさまざまなデバイス連携ドドンドーン
xRLT vol.01 LT
センサー・VR・MR 基本とオススメ
ARもVRもMRもまとめてドーン
LODGEのいいところあげていきます!
ARもVRもMRもまとめてドーン
VR/AR/MRってなんですか?
Kinect やセンサーデバイスと連動した楽しいアプリ開発
沖縄まで踊りに来たぜ!VR/AR/MR最前線
Unityでホログラフィックunityちゃんを呼び出す方法

xR Developerなら知っておきたいカメラの基礎知識