Camera2 フォーカス座標の補正について|Android開発

      2016/12/18

Camera2 APIではフォーカス位置をCameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZEで取得できる矩形内の座標で指定します。
Camera2フォーカス設定の方法|Android開発では、この座標の調整が必要なことを述べていましたが、ここでは実際にその処理を説明します。

解説

CameraCharacteristics.SENSOR_INFO_ACTIVE_ARRAY_SIZEで取得できる矩形はセンサの物理サイズです。
例えば、このサイズが4000×3000だったとします。この時のセンサのアスペクト比は4:3です。
センサの物理サイズ
センサの物理サイズ

次にプレビューに使用しているサイズが1920×1080だったとします。この時のプレビューのアスペクト比は16:9です。
プレビューサイズ
プレビューサイズ

4:3のセンサに対して、16:9の領域を当てはめると、4:2.25(4000×2250)しか見えていないことになります。
重なっている部分がプレビューで見えている領域
使用領域
なので、プレビューサイズ1920×1080の場合に見えているセンサの物理サイズ(=指定可能なフォーカス座標)は、(0, 375)-(3999, 2624)となります。

サンプルソース

  • パラメータx,yはプレビュー領域の座標と思って下さい。
    上述の解説だと、(0, 0)-(1919, 1079)の範囲が指定されます。
  • PreviewSizeはプレビューサイズです。
    上述の解説だと1920×1080。
  • previewArraySizeが見えている物理センサの領域になります。
    上述の解説だと(0, 375)-(3999, 2624)。
  • mOpenCameraIdはオープン中のカメラIDです。

 - Android