LoginSignup
15
10

More than 5 years have passed since last update.

(ニッチ) iPhoneカメラの内部パラメーターの取得方法

Last updated at Posted at 2018-07-11

結論

ものすごくニッチなんですが、iPhoneカメラの内部パラメーターを取得する方法。
公式ドキュメント がとてもわかりづらかったので。。。。

guard let currentFrame = sceneView.session.currentFrame else {
  print("Error: Current frame is nil. [\(#function)]")
  return
}

let intrinsics = currentFrame.camera.intrinsics
print(intrinsics)
//simd_float3x3([[1579.0884, 0.0, 0.0)], [0.0, 1579.0884, 0.0)], [942.4918, 712.6197, 1.0)]])

内部パラメーターについて

画像上の点をカメラからの位置情報に置き換えるためのパラメーターです。
基本的にはカメラに固有のものなんですが、焦点距離によって値が変わるので、iPhone等モバイルデバイスは使うなら毎回取得したほうが良いです。

スライド4-1.jpg
引用:内部パラメータの意味を解説してみる | NO MORE! 車輪の再発明

行列のパラメーターについて (雑談)

行列のパラメーターの割り振りは、日本語だと"行""列"の順番になるイメージですが、Appleは逆なんですね。

例えばSCNMatrix4で定義される、init(m11: Float, m12: Float, m13: Float, m14: Float, m21: Float, m22: Float, m23: Float, m24: Float,m31: Float, m32: Float, m33: Float, m34: Float,m41: Float, m42: Float, m43: Float, m44: Float)は、パッと見 m11,m12,m13,m14が1行目にありそうです。

ですが、これは数学的には下記と同値になります。(少しはまった)

\begin{matrix}
m11 & m21 & m31 & m41 \\
m12 & m22 & m32 & m42 \\
m13 & m23 & m33 & m43 \\
m14 & m24 & m34 & m44 \\
\end{matrix}

もしかしてこれが一般的なんでしょうか。。

Swiftについて(雑談)

いまさらSwift触って2ヶ月なんですが、言語としては無駄が少なくわかりやすいな〜と思うものの、ドキュメントに実装例ないのは厳しくないですか、、、

内部パラメーターの件も、いろんなクラスにまたがっててすぐにわからなかったです。。。個々では載ってるのですが。

参考:ARKitを使いつつカメラの制御がどこまでできるか調べてみた

15
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10