画像処理の基礎知識
カメラとは何か
私たちは、これまでにさまざまなカメラを目にしてきました。例えば

では、カメラとは何でしょうか。突き詰めれば、光信号を電気信号に変換する装置です。コンピュータビジョンにおいて、最も単純なカメラモデルはピンホールイメージングモデルです。

ピンホールモデルは、実際のカメラに存在する像面湾曲や歪みなどの問題を考慮しない、理想的なカメラモデルです。しかし実際の運用では、キャリブレーション(校正)の過程で歪みパラメータを導入することでこれらの問題を解決できるため、ピンホールモデルは今なお最も広く使われているカメラモデルです。
画像はレンズを通過し、感光チップに投影されます。感光チップは、光の波長や強度といった情報を、コンピュータ(デジタル回路)が認識できるデジタル信号に変換します。感光素子は次のような外観をしています。

(中央の四角い部品が感光素子です)
ピクセルと解像度とは何か
感光素子は多数の感光点で構成されており、例えば640*480個の点があるとすると、各点が1ピクセルに対応します。各点のピクセル値を収集し整理することで1枚の画像が構成されるため、この画像の解像度は640*480となります。

フレームレートとは何か
フレームレート(FPS)とは、1秒あたりに処理される画像の枚数です。20フレームを超えると、人間の目にはほとんどコマ落ちが分からなくなります。もちろん、機械で使用する場合はフレームレートが高いほど有利です。OpenMVの最大フレームレートの比較は以下の通りです。\ 注:マークがないものは、画像をIDEに転送していないことを意味します。この転送処理には多くの時間がかかるためです。
色とは何か
物理的には、色とは波長の異なる電磁波です。\
\

しかし、人間の目の視覚特性に基づくと、可視光の色はRGB、CMYK、HSB、LABといった色空間で表現できます。
RGB三原色
三原色の原理は物理的な理由によるものではなく、人間の生理的な理由によるものです。人間の目には色を識別する数種類の錐体細胞(視細胞)があり、それぞれ黄緑、緑、青紫(あるいは紫)の光(波長はそれぞれ564nm、534nm、420nm)に最も敏感に反応します。
そのため、モニターで画像を表示する際にはRGBがよく使われます。

LAB 明度-コントラスト
Lab色空間では、Lは明度を表し、aは正の値で赤、負の値で緑を表し、bは正の値で黄、負の値で青を表します。RGBやCMYKの色空間とは異なり、Labカラーは人間の視覚に近くなるよう設計されています。
そのため、Lコンポーネントで明度を調整し、a・bコンポーネントの出力レベルを調整することで、正確なカラーバランスを実現できます。
注:OpenMVでカラーブロブを検出するアルゴリズムでは、このLABモードが使用されています!
光源の選択
もしお使いの機器が工業用途、あるいは24時間稼働する装置である場合、特にカラーアルゴリズムにおいては、安定した光源を維持することが極めて重要です。明るさが変化すると、色の値全体が大きく変化してしまいます。
(追記予定)
レンズの焦点距離
画像はレンズで屈折して感光素子に投影されます。したがって、レンズによって画像全体のサイズと距離が決まります。その中でも最も重要なパラメータの一つが焦点距離です。
レンズの焦点距離とは、光学的にレンズの主点から焦点までの距離を指し、レンズの重要な性能指標の一つです。焦点距離の長さによって、写る画像のサイズ、視野の広さ、被写界深度の大きさ、そして画面の遠近感が決まります。同じ距離から同じ被写体を撮影する場合、焦点距離の長いレンズで結像した像は大きく、焦点距離の短いレンズで結像した像は小さくなります。なお、焦点距離が長くなるほど画角は狭くなる点に注意してください。\

もう一点、レンズの歪みについても触れておきます。光学的な原理により、感光チップ上の位置によってレンズからの距離が異なります。簡単に言えば、画像の中心に近いほど像は小さくなります。そのため、周辺部では魚眼効果(樽型歪み)が生じます。この問題を解決するには、コード内でアルゴリズムを使って歪みを補正する方法があります。注:OpenMVでは、焦点距離2.8mmのレンズを補正するために image.lens_corr(1.8) を使用します。また、歪みのないレンズを直接使用することもできます。歪みのないレンズは補正用のレンズ部品が追加されているため、当然価格はかなり高くなります。
以下は、OpenMVをデスクトップから約20cm離した状態での、焦点距離が異なるレンズの比較です。\

レンズフィルター
レンズには通常フィルターが装着されています。

このフィルターは何のためにあるのでしょうか。
異なる色の光は異なる波長を持つことが知られています。通常の環境では、可視光に加えて赤外光も多く存在します。夜間撮影(暗視)では、この赤外光が利用されます。
しかし、通常のカラー画像処理アプリケーションでは赤外光は不要です。なぜなら、赤外光も感光素子に反応してしまい、画面全体が白っぽくなってしまうためです。そこで、650nm以内の波長のみを透過させ、赤外光をカットするフィルターをレンズに取り付けています。