★一瞬、「そりゃ無理だろ?」と思ったけれど
自作オンアキシスガイダー『テレサ』の改修工事に難儀している最近のあぷらなーとですが、日曜出勤の前にチョロッとTwitterをチェックしてたら、けむけむさんが「いかにも難儀しそうなお題」を呟いているのを発見。

当然、
「RGBをベイヤーに戻す?? そりゃ無理ゲーってもんですぜ、旦那」
とは思ったのですが、数年前からEXCELやDELPHIを使って色々とシミュレーションごっこや解析ごっこをしてベイヤーFITSファイルの仕組みを少しずつ理解してきた身です。「一度先入観を捨ててみよう」と冷静に考えてみました。
たしか、「カラーカメラはモノクロカメラよりも解像度が低いハズだ」ということを検証ごっこするために
「そもそもデモザイク(ディベイヤー)がどう演算されているのか」を推測して遊んだことがありました。
その時考えたロジックを思い出してみると・・・・
ああっ!!

デモザイク後のRGB画像をチャンネル毎に見ると、
デモザイクの影響を受けていない(ベイヤーデータがそのまま維持されている)ピクセルがあるではないですか。※上記の黄色ピクセルは複数ピクセルのデータから補完された『偽りの値』ですが、それ以外のピクセルは『ベイヤーデータの輝度がそのまま活きている』という解釈です。
・・・ということは・・・

このように、
RGB画像の行と列それぞれについて偶奇性で弁別すれば、真の値(ベイヤーデータ)を復元できるのではないか?と閃きました。
いえ、別に大した演算ではありません。各カラーチャンネルについて上記の黄色セルを捨てるだけのお話です。
これなら、非常に簡単です。
こういう作業にはアレしかないでしょう。
★「出でよ、MATLAB!!」
お仕事から帰ってきて、MATLABでコードを書いて試してみます。
あくまで実験ですので、行列変数の良さを殺してしまう『FORループぶん回しコード』です。
果たして、現像後のRGB画像をRAW画像に復元することができるでしょうか??
実験台として、ASI294MC-Proで撮像したバラ星雲のベイヤー画像を処理してみましょう。
すると・・・
ででん!!
左から順に、ASI294MCPで撮影した「ベイヤーFITS画像」「SI7で現像したRGB画像」「RGB画像をベイヤー復元したもの」 です。
厳密には少し高輝度部分が合っていないのですが、なかなかの復元度合いに見えませんか??
勝算が見えてくると、俄然やる気が出てきます。
変数の型変換に伴う不具合を軽減するような処理に書き換えつつ、もっと分かりやすい画像で試してみました。
今度はASI294MC-Proで撮像したオリオン座大星雲M42のベイヤー画像が題材です。
左から順に、①「ベイヤーFITS画像」 ②「①をSI7で現像したRGB画像」 ③「②からベイヤー復元したもの」「③をSI7で現像したRGB画像」 です。
おお、ブラボー!!
かなり良いじゃ無いですか、コレ♪
ちなみに、その意図は不明ですが、SI7のデモザイク演算ではベイヤー画像の最外周1ピクセル幅を破棄するのではなく3ピクセル幅を破棄している仕様のようです。そのため元画像よりも画素数が若干少なくなりますが、なかなか良い感じの復元度です。少なくとも致命的なロジックのミスは無いと考えて良いでしょう。
★細かな差異はあるか?
次に、オリジナルのベイヤーデータとRGB画像から復元したベイヤーデータとの間にどのような差があるか、マカリで輝度測定をしてみましょう。
※左:オリジナルベイヤー画像 右:現像後のRGB画像からの復元
高輝度部分のサチり方に差が出てしまってますが、その他はなかなか良い感じです。
★・・・で、なにが嬉しいの??
問題は、コレがどう役に立つのか、ですが
たとえば
「うっかりTIFFで撮像してしまった!!」
という時にダーク減算できるように救済する
とか、
けむけむさんが企んでいるように、
RGBに変換したフラット画像をベイヤーに戻してベイヤーライトフレームにフラット除算を施す
とか、
色々と考えられるのですが・・・・・
ふはははは。
よもや、RAW現像が(ほとんど)可逆演算であるとは、思いもよらないであろう!!
というネタとして秀逸だなあ・・・などと、邪悪なあぷらなーとは悦に入る訳ですね(笑)
★★★お約束★★★
①SIはじめ、各種の現像ソフトがどのようにデモザイク(ディベイヤー)処理しているのかは不明です。
②デモザイクの演算仕様上、最低でも最外周1ピクセル幅のデータは破棄しないといけないため、復元したベイヤー画像はそのベイヤー配列が変化します。たとえば、ASI294MCの場合は、RGGB型からBGGR型に変化しますが、これは正常な演算です。
③たいていの場合、ベイヤーFITSファイルは符号付き16bit整数型で画像データが格納されています。そのため、SI7で現像したRGB画像は16bit整数型FITSで保存してから、MATLABで復元を試みました。ところが、本来整数値であるハズのBZERO値が小数になってしまうなど不具合が見られましたので、最終的には32bit整数型で処理を進めました。
④高輝度部分のサチり方が再現できない件に関しては、さらなる考察ごっこが必要のようです。
⑤JOJOのキャラクターの中では、断然ジャンピエール・ポルナレフ推しです。