RAWからRGBに変換する際はデモザイクすればいいのだが、逆はどうするのかというお話。
C言語やpythonなどで処理が変わると思うのでコードは割愛させていただく。
基本的なRGB画像がどのようなCFA(Color Filter Array)から情報を取得しているのかを知っていれば理解が早まると思うが、とりあえず変換の流れを256×256の画像の場合で説明する。
Red, Blue Channel
Rの場合は0行目、2行目、4行目…の偶数行の0列目、2列目、4列目…の偶数列を取得、
Bの場合は奇数行の奇数列を取得する。
Green Channel
Gの場合はRとBで取得しなかった残りの要素を取得するが、この時Rの列とBの列をそれぞれ別に取得する。画像中ではRの隣のGをGr、Bの隣のGをGbと表現している。
これらから得られた配列を[R,Gr,Gb,B]の4channelのRawデータとして取り扱うことができる。
RAWからRGBに変換する場合は、それぞれのチャネルの色がついていない部分を補間(デモザイク)することで現像することができる。補間方法に関しては様々なアルゴリズムがあり、このアルゴリズムによって品質に差が出たりする。最近だとこのデモザイクを深層学習などを用いて行う試みもあるようだ。
理解の助けになれば幸いです。
コメント