
はじめに
タイトル長くなったのでカメラとしましたが、正確に言うと半導体イメージセンサーの話です。本当にいろんな種類があるのですが、メジャーなものとして非常にざっくりと、BAYER配列のカラーイメージセンサとモノクロイメージセンサの話と、ローリングシャッター/グローバルシャッターの話を書いてみたいと思います。
なお私は、あくまで一人のセンサーユーザーであって、決してイメージセンサの半導体デバイス設計とかをしているわけではないので、つまるところ素人講釈であることは初めに断っておきます。
なぜこんな話をしているかと言うとXで呟いたら下記が思いのほか伸びたからです(笑)
もちろん私も若いころは勘違いしていたのですが、案外、画像処理界隈の偉い人でも OpenCV やら PyTorch やらをメインに扱ってる方々は、ベテランでも知らないんだなという驚きもあったので、ちょっと話のネタにしてみようと思います。
カラーとモノクロ
カラーイメージセンサーの方式はいろいろあるのですが、あまりにもBAYER配列のカラーイメージセンサが沢山普及しまくっているので今日はその話一本に絞ります。
つまりこんな画素配列のセンサーです。

イメージセンサは受光可能な画素が二次元にアレイ状に並んでいて、各画素にマイクロレンズがそれぞれついている構造で、そこまではカラーもモノクロも同じなのですが、カラーの方では各受光部に上記のような配置でカラーフィルタが入っています。
カラーフィルタは特定波長を吸収したり反射したりしてとにもかくにも透過させない波長を作ることで、受光部まで届く波長の特性に差を作ります。
折角なのでちょうど今私がカメラモジュールを開発中のオンセミ社のPYTHON300センサーのデータシートから引用させてもらおうと思います。

産業用カメラ向けのセンサーはしばし、カラーとモノクロの2バージョン(あとは赤外感度強化版で3バージョンとか)がラインナップされていることが多いです。
上記の黒い線がモノクロセンサーの感度特性で、赤青緑の線がそれにカラーフィルターも加味したときの感度になっています。波長ごとに感度が違いこの形で掛け算して積分した結果が画素値として出てきます。
この段階で、黒の線で覆われた面積と比べて、カラーフィルタがかなり光エネルギーを消失させてしまい感度を下げていることがわかるかと思います。また感度が違うものが交互に並んでいますので、キーエンスさんのページにあるような1/100ピクセル精度で測るみたいなことはとても難しくなります(レンズ側の色収差なんて問題もありますし)。
また、人には見えない 750nm 以上の赤外領域を見ると RGB ともに同じような感度があります。これはこのままにしておくと「赤外線のあるところを写すと色が変わる」という事が起こるので、通常はカラーカメラにはイメージセンサのカラーフィルタとは別に赤外線カットフィルタが取り付けられます。
稀にこの赤外線カットを取り払ったカラーカメラをそれ用に販売するようなこともなされているようです。
さらに言うとそこまで色を撮るために頑張ったカラーカメラの分光特性も人間の目とまだまだ全然特性が違ったりします。人間の目の特性を計測して作られた規格としてCIE1931などがありますので、下記に Wikipedia から引用しますが、明らかに感度が異なります(というか、赤にマイナス感度が無いと計算が合わないというとても面白い話があるので、興味のある方は調べてみてください)。

コストをかけた特殊なカメラは別として、通常のイメージセンサーでは製法やコストの問題もあり、基本的には人間の目とかなり違いますので、例えば 500nm の短波長を受けたと同じ画素値になるようにRGBの3波長を当てるなんてことはできるわけですが、センサーでは2つは同じ値の色なのに、人間の目で見ると全然違う色に見える(とかその逆とか)ざらに起こるわけです。
そのあたりはざっくり妥協して、D65光源下でマクベスチャートとかの色がなるべく同じ値になるようにとか、大雑把に自然界にある条件下で困らない程度に色合わせする変換式を作って補正して使っていたりします(そもそも人の目がホワイトバランスに対していろいろ適応しちゃうんで)。
一方でまあ、モノクロカメラは良くも悪くも、特性の同じものがフラットに並んでるので、いろいろなものを計測するのに適しているわけです。
こっちはセンサーに特性がリニアで素性のいいものを持ってきて、照明とかで頑張ったりするのですが、例えばCCSさんの照明などの商品とか見てると楽しいです。
測りたい部位に適した波長の照明であれこれと工夫しながら高精度かつロバストに測るという事をストレートにアプローチしていくのがモノクロカメラになります。
人間に美しい絵を見せるのが目的ではなくなったとたんにアプローチが大きく変わるわけです。
もちろんカラーカメラの方も、異物検知とか、痛んだ食材の選別とか、色情報を使った認識が目的で使うケースもあるわけですが、そういう場合も「綺麗な絵を見たい」とはそもそも目的が違うので、如何に目的の分類がやりやすいかという点で分光特性や照明の使い方が工夫されていくわけです。
ローリングシャッターとグローバルシャッタ
次はローリングシャッターとグローバルシャッターの話です。今では特殊用途でしか見なくなったCCDイメージセンサーが仕組み上グローバルシャッターだったのですが、CMOSイメージセンサーが普及してからは身の回りで見かけるイメージセンサはローリングシャッターだらけになってきました。
イメージセンサにおいてシャッターと言えば電子シャッターを指すことが多いです。電子シャッターでは、大雑把に、受光部のフォトダイオード(PD)内の電荷をリセットすることを「シャッターを開く」といい、その後PDで光電変換が起こり電荷が溜まっていく間を「露光時間」といい、溜まった電荷を別の場所に退避したり、もしくは電圧などに変換して読み出してしまう事を「シャッターを閉じる」と、言います。
CMOSイメージセンサーでは基本的にライン単位で露光して読み出すのが基本単位なのですが、一度に全部のラインを読みだしたりなんかできないので時間をずらして順番に読み出すということをします。これがまあとてもシンプルで安く高感度なセンサーを作れることでとても普及しているわけです。
一方で、各ラインがバラバラの時間に露光しているので、ストロボのようなものを一瞬光らせて写すとかすると特定のラインだけ明るかったり、動いてるものが歪んで写ったりしちゃうわけです。
Wikipediaのローリングシャッター現象とかを見て頂ければと思います。
多視点カメラでの三角測量なんかでもライン毎に撮影している時刻がバラバラだと成り立たなくなってしまいます。
一方で、産業用カメラや、ロボット用のマシンビジョンカメラであったりと言った用途で、グローバルシャッター撮影のできるCMOSイメージセンサーも開発されています。
具体的には露光後、すべての画素の電荷を一度それ以上露光が起こらない場所に退避しておいて、後からゆっくり順番に読み出す(その間にPDでは次のフレームの露光をする)、という構造になっているようです。CCDの場合は電荷をデバイス外に運び出す経路がいい感じに電荷の一次退避場所になっていたのですが、CMOSにもわざわざコストをかけてそういう領域を作ったものとなります。
もちろんその分コストもかかりますし、退避領域の分だけ受光面積が減って感度が下がるなどのデメリットも出てきます。
しかしながら近年では裏面照射などのあらゆる技術を駆使して高性能なCMOSグローバルシャッターセンサーも続々と出てきているようです。
おわりに
テレビなどで、人間に赤外線再帰反射マーカーを付けて演技したりダンスしたりしたりするのをモーショントラッキングするシーンなんか見たことある方おられるかもしれません。あのようなものもグローバルシャッター+モノクロカメラがあればこそ、極めて精度の高い位置情報をとらえられているのです。
身の回りの人間が画像を見るためのカメラは、特にスマホの登場で身近になりました。一方でスマートフォンが一人一台になったように飽和気味の市場ではあります。
そんな中、ロボットであったり、自動運転であったり、見るためではなくコンピュータが次の動作を決めるためのセンシング用カメラは今後ますます増えていく余地がありそうです。
Raspberry PI のようなものでもいいですし、当サイト推しのFPGAでもいいですし、いつもと違うカメラで画像処理を楽しんでみるのも、時代を先取りできるきっかけとしてお勧めしたい次第です。

おまけ(追記)
私自身は使ったことは無いのですが、Foveonセンサーに触れたポストも反応が多かったので紹介だけ。
シリコン内に波長が長いものほど深く入り込める特性(カラーフィルムも同じ)を使って同じ位置でRGBの三色とも撮影してしまうセンサーで、BYAER特有の各種課題が解決されているものです。残念ながら、コストや、暗所での感度や、電力消費(バッテリー駆動時間)など別の課題もあり大きくは普及しなかったようです。
あと、普通に3板式といって、ダイクロイックミラーで波長別に3つに分離して、イメージセンサーを3つ使う撮影方式もあります。放送局など業務用でで使われがちなイメージですが、民生でも、昔は3CCD、最近だと3MOSなんて名前でハンディームービーなどであるようですね。
まあ単純にセンサーコスト3倍なのと、高解像度になるほど位置合わせがむずい、とかいろいろあるようですが。




コメント