天文はかせ幕下

カラーCMOSのフラット補正とホワイトバランス

2019/11/11追記:以下の記述は不正確な部分があります。フラット補正後の周辺のG浮きは、著者のダーク画像の取得ミスが原因だったと思われます。詳細は

ASI294MC-pro:ポカミス顛末報告とか、正しい処理フローのまとめなど。 - 天文はかせ序二段(仮)

全体の概要

先日、蔵王で撮影したIC1396は、SharpCapのホワイトバランス設定の問題でライトフレームのホワイトバランスが緑に偏っていた。これをステライメージのマニュアルに記載されている手続きに従ってフラット補正・ダーク補正したところ、色ズレが起こって補正に失敗した。この結果から、カラーCMOSのFITS画像の場合、背景がニュートラルになるようにライトフレームのホワイトバランスを調整しておかないとフラット・ダーク補正で失敗するのだろうと推測した。これは、ホワイトバランスを後から調整できるデジカメのRAW画像と比較して対照的(だなあ)。また、ホワイトバランスが崩れたFITS画像をフラット補正・ダーク補正するための別の手続きも考えました、という話。

FITS画像の通常のフラット・ダーク補正の手続き

はじめに

カメラはZWOのASI294MC-Proを使っています。またSharpCapのフラット画像・ダーク画像の取得機能を使って得たマスターダークとマスターフラットを使って補正を行った場合のはなしです。特にマスターフラットはモノクロのFITS画像です*1*2。しかし、だからといって今回の話の一般性は、あまり損なわれないと考えています。

フラット補正とダーク補正の手続きとその結果

で、そのようにして得られたマスターフラットとマスターダークを使い、ステライメージのマニュアルに従って使って次のように前処理を行いました:

  1. FITS画像に対して、ダーク・フラット補正を行う
  2. RGGBのパターン(ASI294MC)でベイヤー変換を行い、カラー化
  3. オートストレッチ機能で各ライトフレームのWB調整
  4. コンポジット

上記の方法でコンポジット後に得られた画像がこんな感じです:

f:id:snct-astro:20190919201120j:plain

一見すると、フラット補正はうまくいっているように見えますが、実はこの画像は失敗しております。といいますのも、このまま彩度だけを強調しますと

f:id:snct-astro:20190919201143j:plain

こんな風に周辺が緑になっています。どうやら、RとBのフラットは正しく補正できていて、Gだけが補正不足過剰補正になってしまっているようなのです。

もうひとつ気になるのは、ガーネットスターの右のあたりの緑が強く出ているところ。ここってアンプグローが生じる位置ですよね。念のためマスターダーク画像を見てみますと

f:id:snct-astro:20190919201220j:plain

まさにアンプグローの位置で、緑が強く出ています。つまりダーク補正も上手くできていないようです。

ちなみに、DSSをつかった場合でも結果はうえと変わらず同じでした。困ったものです。

原因は、ライトフレームのカラーバランスと思われる

ASI294MCの我々のファーストライトで、Crescent星雲を撮影したときは、上記のような問題は発生しませんでした。実は、あのときは偶然、撮影したライトフレームのWBがある程度ニュートラルに整っていたのです。

それに対して、今回のIC1396の撮って出し画像は

f:id:snct-astro:20190919201336j:plain

このように思い切りGに偏っていました。撮影時はデジカメの感覚で

「ホワイトバランスは後から調整すればよい」

と思い込んでいて、このG偏りはまったく気にしていなかったのです。

元の画像がGに偏っているのにも関わらず、ベイヤー変換前にモノクロのフラットと(ほぼ)モノクロのダークで補正を行うものだから、RとBは補正が合致しても、Gだけが補正不足過剰補正になる。というのが、我々の推測です。

(9/20追記:ここの記述,すこし話がアベコベですね。後で修正します。)

(9/20追記:上の赤で強調した件,ちょっと数式とグラフで考えます。画像の中心を通るある断面をx軸上の-1\leq x\leq1の範囲であらわし,Redの輝度をy_R,Greenの輝度をy_Gとしましょう。中心の輝度を10とし,周辺減光が二次関数で表されると仮定すればは

 y_R=10-2x^2

という風に書けるはずです(係数2は式を簡単にするためで,意味なし)。ホワイトバランスのズレは加法的に表されるはずですから,Greenの輝度y_GはRedの輝度y_Rよりも5だけ大きいとします:

 y_G=10-2x^2+5

グラフで表すと,下のような状態です。

f:id:snct-astro:20190920102721p:plain

フラット補正というのは,この分布と同じ割合の輝度をもつ画像でそれぞれを割り算するわけです。たとえばRedに対する理想的なフラット画像の輝度分布は

y_F=5-x^2

といった形をしていて,これでy_Rを割ってあげると当然ながら

\displaystyle\frac{y_R}{y_F}=2

と定数になる。つまりフラットが合うわけです。これに対してy_G/y_F

\displaystyle\frac{y_G}{y_F}=\frac{10-2x^2+5}{5-x^2}=2+\frac{5}{5-x^2}

となって定数にはならない。グラフにすると

f:id:snct-astro:20190920104239p:plain

このように周辺が浮き上がってしまうわけです。(どうでも良いことですが,はてなtex機能,昔に比べると数式が綺麗になりましたね。天文のブログで数式使いたい人多いと思うのですが,yahooブログが潰れたとき,はてなに引っ越してくれば良かったのにと思います。)

 

一方、デジカメのフラット補正では、液晶ディスプレイを使用して、ライトフレームと同じカラーバランスになるようにフラットフレームを作成していたせいか、あるいはRStackerやDeepSkyStackerに,WBを調整してからフラット補正を行う演算機能があらかじめ備わっているのか不明ですが,ともかく上のような問題は生じていませんでした。

対策

以上の推測が正しければ、まずはベイヤー変換でカラー化してから、ホワイトバランス調整で背景をニュートラルにしてから、そのあとフラット・ダーク補正を行えばよいはずです。つまり具体的には

  1. 各ライトフレームをベイヤー変換でカラー化。
  2. 各ライトフレームにオートストレッチ機能でWB調整
  3. いっぽう、マスターダークとマスターフラットもベイヤー変換してカラー化(マスターフラットはもともとSharpCapでモノクロ画像として取得しているので、ベイヤー変換してもモノクロのまま)。
  4. 各ライトフレームに対して、ベイヤー変換後のマスターダークとマスターフラットを使って、ダーク・フラット補正
  5. コンポジット

という流れです。その結果得られた画像を、再び彩度強調してみますと、

f:id:snct-astro:20190919201905j:plain

こんなふうに、周辺のG偏りは解消しました。今度はBに偏っているように見えますが、これは画面全体のカラーバランス調整で解消します。

ただ、厳密に言いますと、若干アンプグローの影響は残っており、周辺の輝度はすこし過剰補正になっています。この理由はわからないのですが、あらたにライセンス購入したフラットエイドプロに助けてもらいました。

終わりに

ステライメージのマニュアルによると、ダーク減算はベイヤー変換によるカラー化の前に行うべきとあり、なぜならRGGBのベイヤーのうち、ひとつがノイズであった場合、カラー変換後にその影響が周辺のピクセルに波及してしまうから、とのことです。とすると、上の手続きは、変換後にダーク減算してるので、うまくないです。

できればダーク減算だけは、ベイヤー変換前に行うようにしたいですね。

また、ステライメージは今まで毛嫌いしていて、I love DSSだったのですが、今回の画像処理でステライメージの自由度の高さが気に入ってしまいました。もう離れることができなそうです。

 

 

*1:カラーのフラットをSharpCapで取得しようとすると、

「カラーのフラットで補正を成功させるのは難しいよ」

とソフトに怒られるので、このアドバイスに従っています。

*2:ちなみに、SharpCapのこの機能はフラットダークもバイアスも自動で引いてくれるので便利です。