RGB画像をベイヤーRAWに戻す試み

★一瞬、「そりゃ無理だろ?」と思ったけれど

自作オンアキシスガイダー『テレサ』の改修工事に難儀している最近のあぷらなーとですが、日曜出勤の前にチョロッとTwitterをチェックしてたら、けむけむさんがいかにも難儀しそうなお題」を呟いているのを発見
RGB画像をベイヤーRAWに戻す試み_f0346040_22021531.jpg
当然、
「RGBをベイヤーに戻す?? そりゃ無理ゲーってもんですぜ、旦那」
とは思ったのですが、数年前からEXCELやDELPHIを使って色々とシミュレーションごっこや解析ごっこをしてベイヤーFITSファイルの仕組みを少しずつ理解してきた身です。「一度先入観を捨ててみよう」と冷静に考えてみました。

たしか、「カラーカメラはモノクロカメラよりも解像度が低いハズだ」ということを検証ごっこするために

「そもそもデモザイク(ディベイヤー)がどう演算されているのか」を推測して遊んだことがありました。
その時考えたロジックを思い出してみると・・・・

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


・・・ということは・・・
RGB画像をベイヤーRAWに戻す試み_f0346040_23230007.jpg

このように、RGB画像の行と列それぞれについて偶奇性で弁別すれば、真の値(ベイヤーデータ)を復元できるのではないか?と閃きました。
いえ、別に大した演算ではありません。各カラーチャンネルについて上記の黄色セルを捨てるだけのお話です。

これなら、非常に簡単です。

こういう作業にはアレしかないでしょう。



★「出でよ、MATLAB!!」

お仕事から帰ってきて、MATLABでコードを書いて試してみます。
RGB画像をベイヤーRAWに戻す試み_f0346040_22263315.jpg
あくまで実験ですので、行列変数の良さを殺してしまう『FORループぶん回しコード』です。
果たして、現像後のRGB画像をRAW画像に復元することができるでしょうか??

実験台として、ASI294MC-Proで撮像したバラ星雲のベイヤー画像を処理してみましょう

すると・・・

ででん!!
RGB画像をベイヤーRAWに戻す試み_f0346040_22271247.jpg
 左から順に、ASI294MCPで撮影した「ベイヤーFITS画像」「SI7で現像したRGB画像」「RGB画像をベイヤー復元したもの」 です。

厳密には少し高輝度部分が合っていないのですが、なかなかの復元度合いに見えませんか??

勝算が見えてくると、俄然やる気が出てきます。

変数の型変換に伴う不具合を軽減するような処理に書き換えつつ、もっと分かりやすい画像で試してみました。
今度はASI294MC-Proで撮像したオリオン座大星雲M42のベイヤー画像が題材です。

RGB画像をベイヤーRAWに戻す試み_f0346040_22334519.jpg
 左から順に、①「ベイヤーFITS画像」 ②「①をSI7で現像したRGB画像」 ③「②からベイヤー復元したもの」「③をSI7で現像したRGB画像」 です。

おお、ブラボー!!

かなり良いじゃ無いですか、コレ♪
ちなみに、その意図は不明ですが、SI7のデモザイク演算ではベイヤー画像の最外周1ピクセル幅を破棄するのではなく3ピクセル幅を破棄している仕様のようです。そのため元画像よりも画素数が若干少なくなりますが、なかなか良い感じの復元度です。少なくとも致命的なロジックのミスは無いと考えて良いでしょう。


★細かな差異はあるか?
次に、オリジナルのベイヤーデータとRGB画像から復元したベイヤーデータとの間にどのような差があるか、マカリで輝度測定をしてみましょう。
RGB画像をベイヤーRAWに戻す試み_f0346040_22472925.jpg
 ※左:オリジナルベイヤー画像 右:現像後のRGB画像からの復元

高輝度部分のサチり方に差が出てしまってますが、その他はなかなか良い感じです。



★・・・で、なにが嬉しいの??
問題は、コレがどう役に立つのか、ですが
たとえば
「うっかりTIFFで撮像してしまった!!」
という時にダーク減算できるように救済する
とか、
けむけむさんが企んでいるように、
RGBに変換したフラット画像をベイヤーに戻してベイヤーライトフレームにフラット除算を施す
とか、
色々と考えられるのですが・・・・・


ふはははは。

よもや、RAW現像が(ほとんど)可逆演算であるとは、思いもよらないであろう!!

というネタとして秀逸だなあ・・・などと、邪悪なあぷらなーとは悦に入る訳ですね(笑)


★★★お約束★★★
①SIはじめ、各種の現像ソフトがどのようにデモザイク(ディベイヤー)処理しているのかは不明です。
②デモザイクの演算仕様上、最低でも最外周1ピクセル幅のデータは破棄しないといけないため、復元したベイヤー画像はそのベイヤー配列が変化します。たとえば、ASI294MCの場合は、RGGB型からBGGR型に変化しますが、これは正常な演算です。
③たいていの場合、ベイヤーFITSファイルは符号付き16bit整数型で画像データが格納されています。そのため、SI7で現像したRGB画像は16bit整数型FITSで保存してから、MATLABで復元を試みました。ところが、本来整数値であるハズのBZERO値が小数になってしまうなど不具合が見られましたので、最終的には32bit整数型で処理を進めました。
④高輝度部分のサチり方が再現できない件に関しては、さらなる考察ごっこが必要のようです。
⑤JOJOのキャラクターの中では、断然ジャンピエール・ポルナレフ推しです。

Commented by けむけむ at 2020-05-18 04:46 x
さすが、あぷらなーと先生、見事解決して頂けたようで、感謝です。
今後、さらなる有効利用法を編み出されると期待しつつ拝見させていただきたく思います。

Commented by supernova1987a at 2020-05-19 06:55
> けむけむさん
おかげさまで面白い実験ができました。恐らく自力では思いつかなかった「お題」です。本当にありがとうございました!

細かい部分ではまだ完全には復元できていないので、色々と工夫してみます。
Commented by noritos1047 at 2020-05-27 20:08 x
ベイヤーからRGBに変換した時に、何らかのデータが失われてるだろうから無理でしょと思ってたんですが、逆も可能なんですね。
目から鱗でした。
いつもドラマ見てて思います。拡大して鮮明化するなんて出来るんだろうかと。
なんと、よく似た事をやるソフトが最近出て来て混乱してます。
Commented by supernova1987a at 2020-05-31 00:27
> noritos1047さん
ステライメージの場合は、外周部3ピクセル分を破棄していることから明らかなように隣接ピクセルからの補完以外になにかやっていそうなんですが、基本的なデモザイクでは補完された以外のピクセルの輝度はベイヤー状態からほとんど変化しませんので、RGBからベイヤーへの逆変換も可能なわけですね。と偉そうに言いつつ、けむけむさんの「お題」が無ければ思いつきもしませんでした。ドラマで出てくる画像解析はインチキでしょうが、近年ではある程度の解像度復元は可能となってますね。
名前
URL
削除用パスワード
by supernova1987a | 2020-05-17 23:09 | Comments(4)

あぷらなーとの写真ブログ


by あぷらなーと