この投稿は ETロボコン Advent Calendar 2017 の 2日目 の記事です。
Mindstorms EV3のカラーセンサーには、対象(たとえばライントレース・コース)の明度(Brightness)を測定する手段として『反射モード』と『RGBモード』の二種類の測定モードが存在します。ただし、『RGBモード』はEV3ソフトウェアや標準ファームウェアからは直接アクセスできない隠し機能です。
反射モードでは赤色LED一色で対象を照らして反射光の強度を測定します。
一方のRGBモードではRGB(赤,緑,青)三色のLEDを短時間に切り替えて照らしながら、各色の反射光の強度を測定します。
反射モードとRGBモードで測定して結果を比較してみました。
測定風景
手作りのグレースケールチャートをつかい明度(濃淡)と測定値の関係を実験しました。
簡易グレースケールチャート
『グレースケール(ベタ塗り)』と『ハーフトーン(ドットパターン)』の二種類の方法で明度(濃淡)を表現した簡易チャートを作成しました。
トナー印刷とインクジェット印刷
上記の手作りしたPDFをトナープリンターとインクジェットプリンターで普通紙に印刷して比較しました。普通紙に印刷するばあい、インクジェットプリンターでは薄いグレーがうまく印刷で再現できませんでした。そこで以下の実験ではトナープリンターで普通紙に印刷した簡易チャートを使っています。インクジェットプリンターでも写真用紙を用いれば薄いグレーも表現することは可能だと思われます。
反射モード
※ 明度は黒を0, 白(普通紙の地色)を100としています。
グレースケールの測定値とハーフトーンの測定値を2つの折れ線で示しています。グレースケールとハーフトーンのいずれの方法でも、チャートの明度と測定値(反射値)が、ほぼ線形比例しました。
RGBモード
RGBモードにおいてもチャートの明度と測定値(RGB値の合計)が、ほぼ線形比例しました。
まとめ
上記の測定結果だけをみると反射モードで測定した場合でもRGBモードで測定した場合でも、測定対象の明度(濃淡)にほぼ線形比例した測定値が得られることがわかりました。RGBモードはRAWを謳っているため、生(非線形)の測定値が出力されるかと想像していましたが、実験の結果からはRGBモードでも反射モードでも明度と測定値が線形比例するようカラーセンサーのファームウェアで補正されていると思われます。
ちなみにハーフトーンで実験した場合、60〜70の明度で測定値がグレースケールよりも低くなっていますが、これはハーフトーンの精細なドットパターンがトナープリンターの印刷解像度の限界で正確に印刷できず、わずかに「かすれた」ことが影響していると思われます。