この記事について†
「Bayer さんに敬意を表して」†
- 現在販売されているCCDカメラのうち、多くはBayerパターンというものを使っています。
- 高い業務用のカメラは3CCDと、RGBそれぞれにCCDセンサを持っているのですが、それだと値段が全然違います。
- そこで考案されたのが、Bayerパターンです。
- この方法だと、各ピクセルごとに、RGBのそれぞれの色が割り当てられます。格子状に並んでるので、緑を2回使って、格子状に並べます。
- こんな具合に並べます。
- この状態の画像をBayer画像、もしくはRAWフォーマットと呼びます。
- RAW(=生)と呼ばれるのは、センサに一番近い状態の生の情報だからでしょう。(未調査)
Bayerからカラー画像へ†
- このBayer画像、見てみるとこんな感じです。
- 拡大してみるとこんな感じです
- 言葉で表すと「ポツポツと斑点がある感じのグレースケール画像」です。
- そう。CCD1枚で得られた光の強度を記録した画像なので、グレースケール画像です。
- OpenCV風に言うと、CV_8UC1です*1
- しかも、技術者や開発者ならともかく、Bayerの画像をもらって喜ぶユーザはまずいません。なので、これをRGBに変換する必要があります。
- OpenCVで言えば、cv::cvtColor という関数があります。これの引数の中に、ちゃんと宣言されています。(宣言はimgproc.hpp内)
#geshi(c++,number){{
COLOR_BayerBG2BGR = 46,
COLOR_BayerGB2BGR = 47,
COLOR_BayerRG2BGR = 48,
COLOR_BayerGR2BGR = 49,
COLOR_BayerBG2RGB = COLOR_BayerRG2BGR,
COLOR_BayerGB2RGB = COLOR_BayerGR2BGR,
COLOR_BayerRG2RGB = COLOR_BayerBG2BGR,
COLOR_BayerGR2RGB = COLOR_BayerGB2BGR,
COLOR_BayerBG2GRAY = 86,
COLOR_BayerGB2GRAY = 87,
COLOR_BayerRG2GRAY = 88,
COLOR_BayerGR2GRAY = 89,
COLOR_BayerBG2BGR_VNG = 62,
COLOR_BayerGB2BGR_VNG = 63,
COLOR_BayerRG2BGR_VNG = 64,
COLOR_BayerGR2BGR_VNG = 65,
COLOR_BayerBG2RGB_VNG = COLOR_BayerRG2BGR_VNG,
COLOR_BayerGB2RGB_VNG = COLOR_BayerGR2BGR_VNG,
COLOR_BayerRG2RGB_VNG = COLOR_BayerBG2BGR_VNG,
COLOR_BayerGR2RGB_VNG = COLOR_BayerGB2BGR_VNG,
COLOR_BayerBG2BGR_EA = 135,
COLOR_BayerGB2BGR_EA = 136,
COLOR_BayerRG2BGR_EA = 137,
COLOR_BayerGR2BGR_EA = 138,
COLOR_BayerBG2RGB_EA = COLOR_BayerRG2BGR_EA,
COLOR_BayerGB2RGB_EA = COLOR_BayerGR2BGR_EA,
COLOR_BayerRG2RGB_EA = COLOR_BayerBG2BGR_EA,
COLOR_BayerGR2RGB_EA = COLOR_BayerGB2BGR_EA,
}}
- こいつらを使うことで、BayerパターンをRGBの3レイヤ画像、CV_8UC3に変換してくれます
- この変換の方法はそれこそ色々あるのですが、一番簡単な方法は、近傍の画素から補完する方法です。
<画像TBW>
- これでそこそこの性能が出ますし、画質に特化したのでなければこれでとりあえずRGB画像に復元できます。
- 当然エッジ近辺でモザイク状にノイズが出ますが、最近はセンサの目も細かくなったので、結構気にならないレベルで復元してくれたりします。
- ちなみにOpenCVの実装では、Edge AwareなBayer補完が実装されています。(詳細は知らん)
RGBからBayerへの逆変換†
Bayerさんに敬意を表して†
- さて、このBayerパターンは実はBayerさんが考案されて、そこから名前を取ってます。
- Bryce E. Bayerさん、1929年8月15日-2012年11月13日。そう。実は昨年の暮れに亡くなられたのです。
- ご冥福をお祈りすると同時に、Bayerパターンについて何か書かなきゃ!と思って、この記事を書いています。
- あと、CVAdventCalendarの先陣を切らなきゃ!と思ってこの記事を書いています。
- そのBayerパターンに関して知ったことがあったので、書いてみました。
最後に†
- 12月1日が動きがなかったのは、ちょっと残念でしたが、Computer Vision Advenct Calendar 2013はここから頑張っていきましょう!
Computer Vision Advent Calendar 2012