先日の志摩での観望会で、Kさんと話をしている時に、ダークフレームは何枚必要かという話になりました。私はライト画像と同程度の枚数が必要なのではと話したのですが、Kさんはもっと少なくてもいいのではということです。で、色々考察してみました。

目的はダーク減算による改善ではなく、ダーク減算をした時に何枚くらい使えばダークフレームからのノイズでライトフレームが汚されないかを見積もることです。例えば何十枚とコンポジットしたライトフレームではノイズが平均化されて滑らかになるのですが、その際のダーク減算をザラザラの一枚だけでやってしまったら、せっかく綺麗にするはずのライトフレームの滑らかさを逆に汚すのではないかとか、そういうことです。


今回ノイズを無相関に出てくる「ランダムなノイズ」と、相関を持って同じように出てくる「コヒーレントなノイズ」に分けて考えます。

ランダムなノイズとは統計的な信号のゆらぎのことを指し、例えば光に関して言うと「カメラの画素に光を入れた時に、単位時間あたりの光量が一定でないために、ある時間露光して積分した時に一つの画素に溜まる光の量にばらつきがある」ということをいいます。また、一つの画素のADCの読み取りにも統計的にランダムな読み取り誤差が存在するので、それらも画像になった時には結果としてノイズとなります。これらのランダムノイズは時間的に無相関であるために時間的に平均化してやると時間のルートに比例して小さくなっていきます。

一方コヒーレントなノイズは、例えば光害のように、何回撮影しても同様に相関を持って入ってくる光です。センサー温度が高い時に画面の一部が明るくなるアンプノイズも相関があるノイズです。これらのノイズは相関があるため時間とともに足し合わさっていくだけなので、時間に比例して一次で増えていくノイズです。

あといくつか仮定ですが、ダークフレームもライトフレームも同じカメラで同じISO、同じ露光時間で撮影するとします。センサーの温度も変わらないとします。


さてまずダーク一枚で考えてみます。基本的に光は入れていないので、センサーに流れる暗電流で決まるようなノイズです。この一枚あたりの無相関なランダムノイズをN_darkとします。これらをn_d枚コンポジットします。コンポジットは加算して枚数で割って平均化すると言う過程なので、

sqrt( n_d x N_dark^2 ) /  n_d = N_dark / sqrt( n_d)

となって枚数のルートでノイズが減っていきます。

次にライトフレームの信号をSとすると、ライトフレームのノイズN_lightは統計的に信号のルートに比例するので

N_light ∝sqrt(S)

と書くことができます。ライトフレームもコンポジットしてn_l枚を重ねるとすると上と同様に

N_light / sqrt( n_l)

というノイズが残ります。

通常はライトフレーム一枚に対しコンポジットしたダークフレームで補正します。ダーク補正は差に相当するので、無相関なノイズにとっては2乗和のルートになるので、その場合のS/N比は

S / sqrt( N_light^2 + N_dark^2 / n_d)

となります。このダーク補正したライトフレームをコンポジットするので、信号は

n_l x S

ノイズは

sqrt( n_l x N_light^2 + n_l^2 x N_dark^2 / n_d )

となります。ここで、N_light / sqrt( n_l)は各ライトフレームに適用されているので、無相関ではなく正の相関を持っているコヒーレントノイズになり、そのまま和になることに注意です。なのでn_lの2乗で足してあります。

これらをn_l枚で平均化するので、信号は

n_l x S / n_l = S

ノイズは

sqrt( n_l x N_light^2 + n_l^2 x N_dark^2 / n_d )  / n_l = sqrt( N_light^2 / n_l + N_dark^2 / n_d )

となるため、S/N比は

S / sqrt( N_light^2 / n_l + N_dark^2 / n_d )

となります。



やっと式ができました。この式を具体的に考察します。

まず、ライトフレームをダークに近いくらい暗い空で撮るとか、そもそも非常に低いISOとか短い露光時間でとったりして、ライトフレームのノイズとダークノイズが非常に近い場合には

N = N_light = N_dark

とおいて、さらにライトもダークも同じn枚撮るとするとS/N比は

S / sqrt( N^2 / n + N^2 / n ) = S / ( sqrt (2) x N/sqrt(n) )

となり、sqrt(2)倍だけノイズが大きくなってしまいます。すなわちこのようにライトの背景とダークが近い場合はダークの枚数をライトの枚数よりも増やしてやらないとルート2倍損をしてしまいます。

ちなみにルート2倍損をすると言う意味は、ライトフレームの撮影枚数が半分になったことと等価ですので、ずいぶん勿体無いですね。

一方、ライトフレームのノイズがダークノイズよりも十分に大きい場合(十分に明るい場合ということ)にはダークの枚数を減らしていいことになります。例えば、ライトフレームの背景が100倍ダークよりも明るいとすると、ライトフレームのノイズはsqrt(100) = 10倍大きいことになります。100枚ライトを撮った時に一枚だけダークを取った時、やっとノイズがコンパラになり、その結果上と同じ様にルート2倍損することになります。式で書くと、ライトフレームのノイズをNとすると

S / sqrt( N^2 / 100 + (N/10)^2  / 1 ) = S / (sqrt( (N^2 + N^2)/100 ) = S / (sqrt(2) x N/10)

 となります。 

こんな場合でもダークを10枚とってやれば

S / sqrt( N^2 / 100 + (N/10)^2  / 10 ) = S / (sqrt(1+1/10) x N/10)

となり、sqrt(1.1) ~1.05なので、5%くらいの悪化で抑えることができます。


さて、ライトフレームの背景のノイズとダークノイズの比は一体どれくらいなのでしょうか?先日撮った馬頭星雲の画像で比べてみます。ヒストグラムのピークが背景だと考えると、ピークの位置が明るさになるので、Photoshopで比較してみます。ライトフレームのピークはざっくりヒストグラムの半分ほどなので125くらい。ダークは暗過ぎて判断できないので、レベル補正で10倍の明るさにして平均値を見て10で割ってやると3.7位です。比は34程度と、思ったより小さいです。

IMG_3190
ダーク画像を10倍明るくしたもの。平均3.3と思ったより明るいです。


ライトフレームは36枚撮影していて、ダークは30枚使ったので、

S / sqrt( N^2 / 36[枚] + (N^2/34[倍]) / 30[枚] ) = S / (sqrt(1+1/30/34x36) x N/sqrt(36) )

となります。

sqrt(1+1/30/34x36) = 1.015

なので、1.7%の悪化となり、ほとんど影響ありません。枚数にしたらライトフレーム1.1枚くらいのロスです。今回の場合は5枚も取れば10%くらいの悪化で、ライトフレーム7.6枚くらいのロス、10枚取れば5%くらいのロスで、ライトフレーム2.8枚くらいのロスになるということです。


というわけで、またかなり長い記事になってしまいましたが、結論としては、背景の空が暗くてダークに近ければ近いほど枚数が多い方がいいが、空が明るい場合は少なくてもいいということになりそうです。志摩観望会で間違ったことを言ってしまったことになります。Kさんごめんなさいm(_ _)m。