スマホのカメラの仕組み

デュアルカメラ(デュアルレンズ、ダブルレンズカメラ)が増えている
一眼レフと比べて、ズームができなかったり、光を取り込む量が足りなかったりなど、幾つか弱点がある

### デュアルレンズの仕組み
– 普通のレンズと遠くのものを引き寄せるように撮るズームレンズを装備(iPhone, Galaxyなど)
– 超広角レンズを採用するスマホもある(ASUSのZenFone, LGなど)

### モノクロ
モノクロ(白黒画像)専用のセンサーを搭載する方式(HUAWEI)
-> 撮影時にはカラーとモノクロで同時に撮影し、モノクロで記録された光量の情報を元にカラー画像を補正
-> ズームレンズを組み合わせたトリプルレンズもある

### ボケ加工(ポートレートモード)
被写体との距離情報を元に、背景部分にボケのような加工を施す

iPhone 11 Pro/11 Pro Max
- 超広角レンズ
- 広角レンズ
- 望遠レンズ

### スマホの撮像素子
ソニーのCMOSセンサー一強(iPhone, Galaxyなど)

### 画像処理
CMOSセンサーから出力した信号をQualcommなどのアプリケーションプロセッサがRGBの画像に変換

ハードウェアにCPU、GPUがあれば、LSIではなく、アプリケーション側で画像処理を行う
デジカメとスマホカメラの全体的な仕組みはかなりリンクしている
CMOSからどういう電子データが出力されるのか気になるところか

デジカメの記録メディア

デジカメで画像を記録する部分をメディア(メモリーカード)という
記録メディアにはSDカード、コンパクトフラッシュ、xDピクチャーカード、メモリースティックなどがある
デジカメの機種によってどのメディアを使うか決まっている

### SDメモリーカード
サンディスク、松下、東芝が開発
32GB
Class 2 :読み書き時のデータ転送速度が最低 2MB/ 秒
Class 4 :読み書き時のデータ転送速度が最低 4MB/ 秒
Class 6 :読み書き時のデータ転送速度が最低 6MB/ 秒

### コンパクトフラッシュ
サンディスク提唱
コントローラーICとフラッシュメモリICを実装

### xDピクチャーカード
オリンパス、富士フイルム、東芝が共同開発

### メモリースティック
ソニー開発

HDD、メモリー系は東芝強いな〜
san disk

しかし、今はクラウドの時代なのに、未だにメモリーカードに保存している意味がわからんな。

画像処理エンジンの仕組み

画像処理エンジンとは、撮影素子(CCD, CMOS)の電気信号情報を画像に変換処理する電子回路(LSI)
ノイズ処理、ホワイトバランス、シャープネス調整、コントラスト調整、画質調整などを行っている
処理能力の高低と処理のためのアルゴリズムが重要。処理能力が高速であれば、より複雑なアルゴリズムが使える
jpeg, MP4などに圧縮する

e.g.
オリンパス「TruePic」、キヤノン「DIGIC」、ソニー「BIONZ X」、ニコン「EXPEED」、パナソニック「ヴィーナスエンジン」、富士フイルム「X-Processor」、ペンタックス「PRIME」など


※DSPとはDigital Signal Processor

### 画像処理エンジンの画像処理アルゴリズム
画像処理エンジンの流れ
↓ デモザイク
↓ ノイズ除去
↓ シェーディング補正
↓ 階調補正、色補正
↓ 人物補正
↓ 歪み補正、幾何変換
↓ 広域強調、ぶれ補正
↓ 画像の圧縮、伸張
→ 画像の保存

パソコンのマザーボードのようなイメージか?
電子回路がどう動いているか理解する必要があるか。。。
沼だ、Endlessやな。。。マザーボードを理解できればかなり幅が広がりそうではあるが。。

デジカメのレンズの仕組み

レンズとは?
-> 光を屈折させるガラスやプラスチックで作られた薄い部品
-> レンズそのものだけでなく、ピント調整や光の量を調整する部品も合わせたレンズシステム全体を指すことが多い
-> 光の通り方をコンピュータで計算し、最適な像ができるよう設計している
-> ピント合わせはレンズの全部または一部を前後させる
-> ヘリコイド、カムなどがある
-> レンズにはフィルムやセンサーに届く光の量を調節する仕組みもあり、「しぼり」という
-> 凹レンズは近視、凸レンズは遠視。凸凹レンズは通常組み合わせる

レンズの材質、大きさ、厚み、曲面の具合、レンズの組み合わせなどによって、レンズを通過する光はさまざまに変化する

### オートフォーカス
– 距離を測るには三角測量という方法が使われる。これは、一つの辺の長さと二つの頂点の角度が決まれば、三角形が定まる、という原理に基づく
– ファインダーから被写体を覗き、カメラの中にある小さな鏡をAが映るように回転させる
– デジカメでは、コントラスト検出方式というピント合わせ技術が用いられる
  センサに写る像を調べながらレンズを前後に動かし、最もコントラストが高くなる位置にレンズを止める仕組み
  多くのデジカメでは、ピントを調べる場所をいくつも用意して、ピントの合い方を計算して調整している
– 位相差検出式のオートフォーカスも一般的

### しぼりとシャッター
– 完全に開いてから完全に閉じるまでの露出時間をシャッタースピードという
– しぼりは感光材料に一度に当たる光の量を調整する仕組み

### レンズ
– センサーサイズや構造により焦点距離やレンズが異なる

### 材質
プリズムやハーフミラーなど光を透過させる光学ガラス、ミラーに使われる基板ガラス、屈折率や波長分散が細分化されるレンズ用ガラスに分けられる
アクロマティックレンズは屈折率の波長分散の小さいガラスと波長分散の大きいガラスを組み合わせることで、色収差を補正している

レンズ設計 例

焦点距離:200mm
イメージサークル:φ43.2(像高21.6mm)
Fナンバー:5.6
レンズ全長(第1面~像面):180mm以下
レンズ枚数:4枚以下
バックフォーカス:45mm以上

F値は小さいほどボケを活かした撮影が得意

### レンズの種類
(1)ズームレンズ
 ズームできる範囲によってレンズの種類が分かれている
(2)単焦点レンズ
 撮れる距離が決まっている
 美しいボケ味を出したり暗い場所が得意

### 写す範囲
焦点距離によって「広角レンズ(35mm以下)」「標準レンズ(50mm前後)」「望遠レンズ(200mm以上)」に分類できる
「○○mm」の数字が大きいほど被写体に近づいたようになる
「18-55mm」など二つの数字が書いてあるのがズームレンズ

被写体との距離が決まっているシステムの場合は、その焦点距離に合わせたレンズを設計すれば良さそうですね。
CVで、ジェスチャ認識など被写体が動く想定の場合は、精度を上げるには被写体が動くから、ピントを合わせる必要がある。
んん、ちょっと待てよ。
イメージセンサーで光電変換を行ってるわけだけど、凹レンズの制御は自動でできるってこと?

あれ、こう考えると、画像処理のアルゴリズムだけでなく、レンズの設計の問題も出てくる??

デジカメの仕組み

0.シャッターに相当する電子回路が電子の流れをコントロール
1.レンズが被写体から光を集める
2.撮影素子(CCD)が画像を電子的に捉える
3.画像処理エンジンで画像は電子データに変換され、様々な画質処理が行われる
4.メモリーカードなどの記録メディアに電子データとして保存される

フィルムカメラとの違いは、臭化銀(AgBr)の電子反応ではなく、撮影素子でデータを捉えているところか。

### 撮影素子とは?
撮影素子とは、被写体の光を画像データに変換する
イメージセンサーと呼ばれ、ほぼ全てのデジカメに内臓されている

CANON EOS Kiss X5
撮影素子:高感度・高解像度大型単板CMOSセンサー

– 撮影素子サイズ
-> イメージセンサーサイズ、画像センサーサイズと呼ばれる
-> 単位はインチ(2.54cm)で1/4〜2/3インチが一般的
※撮影素子のサイズが大きいほど多く光を集めて色を詳細に表現できる。撮影素子とレンズで画質が決まる

– 走査方式
デジタルデータを画像としてディスプレイに表示する方法
インターレース方式:1枚の画像を横長に細かく分割、奇数段目・偶数段目の2回に分けて転送表示
プログレッシブ方式:分割した部分をまとめて1回で転送表示

– イメージセンサー(個体撮影素子) Charge Coupled Device
CMOSセンサー:其々のピクセルが独立して電荷の増幅やデジタル変換する回路をもち、デジタル信号としてデータを出力
CCDセンサー:其々のピクセルの電荷は隣接するピクセルに一斉に転送され、バケツリレーのように順次外部に信号を出力する
表現力や画質はCCD(デジカメ主流だった、高価)が、読み出しの速さ消費電力ではCMOS(スマホ主流で普及)の方が優れている

– 撮影素子の働き
被写体からの光線をレンズなどの光学系によって撮影素子の受光平面に結像させ、その像の光による明暗を電荷量に光電変換し、それを順次読み出して電気信号に変換する
-> 外部光電効果:固体の表面にある電子が光子のエネルギーを受けて真空中に放出される現象
-> 内部光電効果:エネルギーの低い方にある電子が、光子のエネルギーにより高いほうに励起される現象
-> CCDイメージ・センサの材料にSi単体結晶(シリコン)が使われる

1枚のシリコン基板上に形成された多数の受光素子の並びで光電変換を行う
CCDはMOSキャパシタを近接して並べた構造が基本
半導体素子の一種で、シリコン基板表面の酸化膜上に多数の電極を設けて、MOS構造
の各電極に隣同士で異なる電圧を与えることにより電位の井戸を作り出す

イメージセンサー自作は完全に電子回路の世界だな。
とりあえずRaspberry Piは買い物リストに追加や。

フィルムカメラの原理

フィルムカメラに光子が入ると、光エネルギーの塊は感光乳剤と呼ばれるプラスチックでカバーされた部分にぶつかる
※感光乳剤は紫外線で固まる乳剤(脂肪、脂肪油または水に不溶性の医薬品を水中に微細均等に分散し乳状とした液剤)。臭化銀(AgBr)などの粒子をゼラチンの中に一様に分散させた乳液状の薬剤。紫外線を当てなければ水で流せる
※感光乳剤は「ジアゾ感光材」と「着色剤」を混ぜ合わせる
※可視光線よりも波長の短いものが紫外線 紫外線の中でみ、波長が長いものからA、B、Cと大別されている
※UV-A(315-400nm)、UV-B(280-315nm)、UV-C(100-280nm)

### 感光剤(AgBr)の特徴
AgBrに光が当たると電子が飛び出す。飛び出た電子が銀イオン(Ag+)に取り込まれると中世の銀原子(Ag)となる。生成した銀原子が数個(n個)集まって、銀原子のクラスターを生成(Agn)。
この銀原子のクラスターを潜像と呼び、還元試薬によるフィルム現像の家庭で、銀原子クラスターが触媒となって潜像の周りで銀イオンの還元が速く進行し、銀原子の数が増加して目に見えるような像が生成さレル。

### フィルム
フィルムストリップをコーディングしているものはサスペンションのようなもの
ハロゲン化銀結晶が浮遊して凝固している(ゼラチン)
光子がフィルムストリップ上で臭化銀結晶にぶつかると、負電荷の臭化物イオンから電子を取り除く。そして、格子の結晶の中の電子が離脱の状態になるまで動き回る。結果的に銀イオンと合わさって中性電荷の銀原子になる。

### 現像とは
現像液が残ったハロゲン化銀結晶と反応する。現像液が還元剤を含む。還元剤は、化学反応の間に他の物質に電子を与えることのできる化学物質。
ネガ像では、光と影の情報が逆になる。
未現像のフィルムを光に当ててはいけない

潜像の状態から像を浮き出すのを現像液

現像を停止させるのを停止液
感光部分をフィルムを長期保存可能な状態に像を固定化するのを定着液という

光が臭化銀(AgBr)に当たった時に電子が飛び出る性質と銀粒子の変化で現像を作っているのか。化学反応の世界なんだな。プログラミングとは違う世界の話ですな。

OpenCVの映像処理

OpenCVでは画像を独自の多次元配列構造体に格納する(iplimage形式)
カメラ映像もしくはビデオファイルから取得した映像もフレーム単位の画像として処理される

映像も連続した画像というイメージか。紙芝居とビデオ映像は別物だと思っていたけど、原理は基本的には同じか。

モーションテンプレート

モーションテンプレートとは?
-> 映像の中から動き(モーション)の方向などを抽出する方法
-> 動きを履歴として残したものをが増加する。そして、履歴画像から輝度変化の勾配を計算し、全体としてどのように移動したかを線分で表す
-> 応用範囲が広く、ジェスチャ認識やボールの軌跡を視覚的に表示したりすることができる

カメラキャリブレーション

カメラキャリブレーションとは?
-> 画像中の位置や距離を計測したい時などに、画像の歪みなどを直すこと
-> 例えば車間距離の測定など
-> 基準となる物体を画像中に取り込んでおき、この特徴点をベースに3次元位置を複製し、歪みを計算して補正する
-> オブジェクトの測定、検出に使われるだけでなく、ロボット工学のナビゲーションシステムや3次元シーン再構築などに使用される

### カメラキャリブレーションのロジック
– カメラの相対位置とキャリブレーションパターンのプロット
– 再投影誤差の計算
– パラメータ推定誤差の計算

カメラの外部パラメーターと内部パラメーターを使用してカメラ行列を計算する
外部パラメーターは、3次元のワールド座標系から 3次元のカメラ座標系への剛体変換
内部パラメーターは、3次元のカメラ座標から 2次元のイメージ座標への射影変換

外部パラメータは回転Rと変換tで構成
内部パラメータは焦点距離、光学的中心、せん断係数が含まれる

物体追跡

### SSD
入力された動画に対してフレーム単位で検出を行い、フレームごとのBoundingBoxを取得できる
Nフレーム経過した後、N個のBoundingBoxが得られるので、BoundBoxを解析すれば物体の動きとしてTrajectoryを取得できる。これまでの物体の動きはもちろん、ある程度予測することができる

### 物体追跡技術
画像上に興味のある場所(Region of Interest)を予め定義しておき、次のフレーム領域の中で定義されたROIの特徴と一番類似している領域を検索するのが物体追跡

低画質、早い動きだったり、カメラの角度が変わると、検出精度が落ちやすい
精度を保つためにはRaw品質が良い、圧縮、ピンぼけ、縮小は画像が劣化する

### CNNを利用するTracking手法
Tensorflow実装、GPUリアルタイム処理
Trackingの基本は、探索領域xの中で、ターゲットzに一番類似している領域を見つけること
教師データとしてzをニューラルネットワークに入力する
score mapが生成され、x領域の中にzとの類似度を探し、最も類似している領域が対象となる

なるほど、ここにきてニューラルネットワークの活用法がわかってきました。