撮影や画像処理に関して、色々基礎的なことについて、これまでの知識と天体写真の世界で新たに知ったことなどを混ぜて書いておきます。最終的な目的はある条件のもと、どのような方法で淡い天体を炙り出せばいいかの最適解を頭で理解するためです。天体及び写真の部分については、まだ初心者ということもあり、間違ったことを書いているかもしれません。気づいたことがありましたら、コメントなど頂けるとありがたいです。


信号について:
まずはCCD内のセンサーの沢山ある画素のうちの1素子だけで考えます。一つのphotodiodeがあると考えてもいいでしょう。センサーとしては、その1素子に入ってきた光子に比例した光電流を流します。回路としてはその電流を時間積分し、露光時間の終わった時に溜まった電流値をADC側に書き込みます。ここまでがアナログの話です。デジタル側ではADCビット数に応じてその値を読み込み、その露光時間で測定された一つの数値として記録します。カラー画像の場合にはそれぞれ光の波長に応じた感度を持つセンサーが4つ並んで、光の3原色(赤、青、緑)のそれぞれの数値を記録します。CCDには沢山の画素がありますが、いずれの画素も露光時間において一つの値を記録します。これらを平面に並べ直して表示したものが画像となります。この信号には大きな値(=明るい)もあれば、小さな値(=暗い)もありますが、明るくても暗くても、記録された「信号」です。


ノイズについて:
一方、ノイズについて考えてみましょう。これも簡単のため最初はCD内のセンサーの沢山ある画素のうちの1素子だけで考えます。まずは原理的な光量子ノイズ(ショットノイズ)と呼ばれるものです。一つの画素と等価なphotodiodeに光を入れますが、いくら光の量が一定といっても、単位時間あたりにphotodiodeに当たる光子の数には必ず統計的な揺らぎが存在するので、光電流は一定になりません。この光子数起因からくる光電流の測定値が揺らぐことを光量子ノイズと言いいます。光量子ノイズは一般的に光子の数の(=光の量の、光のパワーの)ルートに比例するため、明るければその揺らぎ量は大きくなりますし、暗ければその揺らぎ量は小さくなります。


暗電流:
それではとことんまで暗くしていけば、測定値の揺らぎは限りなく小さくできるのでしょうか?そんなことはありません。光子の数に関係なく、Photodiodeには真っ暗な時でも存在するある一定量の電流値の揺らぎが存在します。これを暗電流と言います。どれだけ暗くしてもこれ以下には測定値はいかないので、この値がある意味、画素としての性能を決める指標の一つになります。一般的にはこれを「ダークノイズ」といいます。天体写真の画像処理の世界では、真っ暗にして長時間露光をした時に画像に出てくるノイズを撮影したときのことです。本質的には同じことですね。

最低限、暗電流を超えるような光の量を入れてやらなければ、S/N的には著しく損をします。信号0でノイズが存在するので、S/Nは0です。あまりに暗い空を、低いiso、短い露光時間で撮った場合の背景などがこれにあたります。

画像処理の記述を探してホームページを漁っていると、時折光量子ノイズと暗電流を区別せずに使っている記述が見受けられるので注意です。光量子ノイズは明るい時の測定値の揺らぎ、暗電流は暗い時にそれでも存在する測定値の揺らぎです。


SN比:
さてもう一つ良くある誤解が、S/N (Signal to Noise ratio, SN比)を決める時に、Nはダークノイズのことだけだと思い込んでいるケースです。実際にはノイズは暗電流以外にも沢山存在します。むしろ暗電流で支配されているような理想的な状態の方が珍しいです。実測の場合はダークノイズも含めて、現状存在するノイズを全て入れてS/Nを考えるべきです。もちろん理論的なS/Nを求めたいときはノイズはダークノイズだけでいいのですが、これが限界性能になりますので、実際の使用ではこのようなS/Nが出ることはまずありません。

  • もしノイズが信号の大きさに比例して存在するなら、信号の増加、すなわち明るく写したらノイズも同様に増えるのでS/Nは得しません。例えばアンプ回路の電気ノイズでリミットされている場合に、アンプのゲインを上げて信号を増やしても得しないということです。デジタルゲインなんかもこの類ですね。
  • もしノイズが、信号の大きさに依存しないで存在するなら、信号の大きさを上げればそれに比例してS/Nがよくなります。より明るい望遠鏡を使って撮影する場合などがこれにあたります。
  • もしノイズがショットノイズにリミットされているなら、面白いことに信号が大きければS/Nは信号のルートに比例してよくなっていきます。Sは比例、NはSのルートに比例なので、例えば100倍の信号を入れてやれば信号は100倍、ノイズはルート100倍で、S/Nは100/sqrt(100)で10倍よくなるというわけです。

天体画像のノイズ:
天体画像におけるノイズについてもう少し考えます。基本的にある露光時間分だけ測定値を積分した積算値が一つの画素の値になります。ノイズのようにAC的に揺らいでいる場合は露光時間で積分した時のRMS値が測定値となります。信号のようにDC的で時間的に一定の場合は、DC的な値x露光時間が測定値となります。これらのアナログ値がADCでデジタルの値に変換されビット数に応じて、離散的な値になります。例えば8ビットならば0から255のどれかの値、16ビットなら0から65565のどれかの値ということです。

この積算値は様々なノイズが測定された結果なので、一画素で同じ状態の光を同じ時間測定したとしても、毎回違う値が出てもおかしくありません。毎回の値を数えていくと、その分布は山型のような分布、すなわち正規分布 (ガウス分布)と呼ばれるものに近い形になります。

CCDセンサーは沢山の画素があるので、ノイズは画素ごとの明るさの値の違いになって出て来ます。一定の光を当てて、全画素の明るさの値の分布を取っても正規分布に近い形になります。カメラ撮影時や、画像処理ソフトのヒストグラムがこれにあたります。ノイズが大きいとその分布のばらつき具合は大きくなり、画像でいうとザラザラした画像ということになります。背景のような暗いところでは、ばらつきが相対的に大きく見えるので、ノイズがよく目立ち、ザラザラな印象を受けます。一方、信号にも当然ノイズは含まれていますが、ばらつき具合が一緒なら、明るい部分では目立ちにくくなくなります。


ランダムノイズとコヒーレントノイズ:
さて、ノイズには大きく分けて2種類あります。コヒーレントでないランダム (無相関) なノイズと、コヒーレント (相関のある) なノイズです。一番の大きな違いは、ランダムなノイズはある意味あっちこっち向いている状態なので、時間積分とともにそれらを足し合わせていけば打ち消しあいますが、コヒーレントなノイズは一定方向を向いているような状態なので、足し合わせていけばいくほど大きくなっていきます。中途半端に相関があるノイズも存在するので、足し合わせても必ずしも打ち消しあったり、そのまま足し合わさったりするわけでもないので、注意が必要です。これらの混ざり具合は数学的にはコヒーレンスという値で表すことができます。無相関ならコヒーレンス0、完全に相関があるならがコヒーレンス1という意味です。

一つ誤解をしないように。ランダムノイズですが露光時間を増やすと減るというわけではありません。信号の増加分に対して、ライダムノイズの増加分が小さいため、S/Nで得をするということです。例えば、ある時間で撮った画素の信号をS、ノイズをNとしましょう。次に10倍の露光時間をかけると、どうなるでしょうか?階調やサチりなどの制限はないと仮定します。信号Sは10倍になります。ノイズのは2乗和のルートで増えていくので、露光時間10倍時のSignal to Noise rarioは

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

となり、ルート10倍、すなわち約3倍得します。10回足し合わせるのも、10倍の時間をかけるのも同じことなので、合計の時間が同じならば、(階調などの制限がなければ)同じ画像が出来上がります。加算「平均」をとると、明るさの平均値が、元の一枚の明るさの平均値と同じになり、ノイズ部分が最初より小さくなるというわけです。

センサー部から記録値になるまでの過程で、積分をしている箇所までに出てくる全ての信号、ノイズは、時間とともに蓄積されて出てくるので、写真の世界では「長時間ノイズ」と呼ばれる類の一種となります。例えば、積分をADCの手前の回路が担当していたら、ADCの読み出しノイズ自身は長時間ノイズにはなりませんが、もし積分を計算機側で担当していたら、ADCから計算機に入る回数ぶんだけのADCノイズが加算され、これは長時間ノイズの一種になります。

たとえ、どんなに短時間で積分しても必ず存在するノイズもあります。例えばADCの読み出しノイズは、いくら時間を短くしても必ず一定値残ります。

カメラisoを上げることは読み取り回路のゲインを上げることに等しいです。そのため、その回路より手前にある信号、ノイズはそのままゲイン倍されますし、回路より下流にあるノイズは、相対的に小さくなるため効いてこなくなります。ゲインをあげる時に出てくるノイズは写真の世界では「高感度ノイズ」などと呼ばれます。ただし、ゲインを上げるということは、大きな信号だとサチル可能性も高くなることは言うまでもありません。

少し例を挙げておきます。

ランダムなノイズ: 
例1: 光子起因のショットノイズ(Sのルートに比例)
例2: 暗電流ノイズ(十分暗い時でも一定値存在するノイズ、一般的にはダークノイズという)
例3: 素子の熱雑音(温度の関数)
例4: 回路の電気ノイズ
例5: ADCノイズ

コヒーレントなノイズ
例1: ホットノイズ、コールドノイズなど、ある条件下で決まった素子に現れる時間とともに変動しないノイズ(ダーク減算で除去)
例2: 周辺減光、埃などからくるノイズ(フラット補正で除去)
例3: 長時間露光した時に画像に見える線のような、CCDの構造由来などによる画像の一部にいつも現れるノイズ



「加算」と「加算平均」:
これもよくある誤解ですが、加算と加算平均では階調に制限がなければ、本質的にはどちらが得だとかどちらが損だと言うことはありません。加算した枚数で割っているか、割っていないかだけの違いなので、例えば100枚加算した画像をゲイン100分の1で表してやれば全く同じものになります。ノイズに関しても同じで、100枚加算すればノイズは2乗和のルートなので、sqrt(100) = 10倍増えますが、加算「平均」だとその後に100で割るので、ノイズが10分の1に小さくなったように見えると言うわけです。ただし、階調に制限がある場合、例えば加算していったら表すことができる最大の明るさを超えて飽和していたなどという場合は、当然平均処理を飽和する前にした場合に比べて損をします。もちろんたとえ加算「平均」だとしても飽和した後に平均していたら元も子もないです。


次回その2: 露光時間かスタックか?に続きます。