富山は今日は雪。せっかくの新CMOSカメラも外で試すことができないので、仕方なくASI294MCの脳内シミュレーションです。

ZWOのASI294MCのページを見ると、カメラの性能を表すのにFW, gain, DR, Read noiseだとかいうグラフがならんでいますが、最初これらのグラフを見た時あまり意味がよくわかりませんでした。
  • Read noiseはなんとなく小さい方がいいとわかるのですが、それでもその数値の意味がよくわかりません。
  • DRはdyanmic rangeですが単位の[stops]が不明です。でもグラフの数値が14までなので、これはADCのビットに相当するものなのかという予測がつきます。ということは14というのは2^14で16383という意味なのでしょうか?
  • FWはfull well capacityのことで日本語でいうと飽和電荷数だとか、飽和容量というらしいのですが、一体どんな意味なのでしょうか?
  • gainに至ってはわかりそうなのに全くよくわかりません

一つ一つ紐解いていきましょう。まず、これらグラフの中で出てくる単位のADUだとかe-ですが、ADUはADC(Analog to Digital Converter)で読んでいる単位(Unit)の略でADU。ADCから出てくる数値そのものです。ASI294MCの場合RGB各色で14bitのADCが使われているので、例えばCMOSセンサーの一素子のR(赤)色成分に入ってくる光を露光時間分積分した結果、0から16383のある値をとります。この読み取った値そのものがADUとなります。真っ暗なら0[ADU]、サチルくらいなら16383[ADU]、半分くらいの明るさなら8192[ADU]となります。もちろん値はノイズで揺らいでいるので、真っ暗でも0にはなりません。e-は電子(電荷)の数です。例えば10 [e-]というと、10個の電子がセンサーの一素子で数えられたという意味です。

本当は全部電子の数で考えたいんです。でも直接電子の数を知ることはできません。唯一読み取れるのがADCの値なんです。電子の数はこのADCの値から推測するしかないのです。ところがこの推測が一定の変換ではなく、その変換係数が増幅回路のゲインに依って変わってしまうことが物事を難しくしています。それではこれ以降、個別に考えていきます。


1. gain: conversion factor, コンバージョンファクター

実際には電子の数は簡単には数えられませんね。そこで出てくるのが、一番わかりにくい「gain」というやつです。gainは「Conversion Factor」などと言われたりもしますが、ADCでのカウント数と電子の数を変換してくれるとても便利な値です。なので単位は[e-/ADU]とかになっています。要するに、電子の数は直接数えられなくてもADCでカウントした数は計算機上で数値を読み取ることができるので、このコンバージョンファクターさえ分かっていればADCのカウント数から、幾つ電子が数えられたかを知ることができるのです。例えば、ZWOのASI294MCのページのグラフの横軸のGain(unit0.1dB)の0のところのFW(e-ADC)を見ると、3.9位でしょうか。これはADCが約4カウントを数えると電子を一個数えたことになります。Gainが175くらいのところだと、gainが0.5[e-/ADC]くらいなので、2個の電子が来るとADCのカウントが1上がることになります。

そうは言っても、電子の数を数えても何がいいことがあるのかいまいちよくわかりません。でもこれは天体から入ってくる光子の数sと、センサーで数える電子の数nが、定数で変換でききるからなのです。この定数をシステム効率ηなどと呼び

η=n/s

と表すことができます。ポイントはこのシステム効率が内部回路のゲインや積分時間などによらないということです。なので、電子の数を数えるということは、幾つ光子が入ってきたかが直接わかるため、重宝されるというわけです。一方、ADCのカウント数と光子の関係は内部回路のゲインに依存してしまうため、便利でないのです。

このことは次の式を理解すると意味がわかるようになってきます。

センサー感光部に、入射光と暗電流を合わせてカウント[ADU]にあたる一定の電子が発生する時、あるピクセルのカウントの標準偏差を[ADU]、読み出しノイズをNread [e-]とすると、コンバージョンファクター(gain) fc [e-/ADU]は

([ADU])^2 = [ADU] / fc [e-/ADU] + (Nread [e-])^2 / (fc [e-/ADU] )^2

を満たします(簡易証明をこのページの最後に書いておきました。)。簡単のためNreadは十分小さいとし、右辺2項目を無視します。

例えば1秒間の積分の画像データを100フレーム取得し、各(ij)ピクセル目の100フレームの平均値をカウントSijとして、分散をカウントNij^2として測定することができます。測定したデータを横軸にSij、縦軸にNij^2として各ピクセルをプロットしてやると、例えば一例としてADI294MCで内部ゲイン0の場合のプロットが下の写真の右のグラフのようになります。

IMG_3238


上の関係式があるために、何とADCの値の読みSとその散らばり具合Nを多数プロットするだけで、これまでわからなかった[ADU]と [e-] との関係を導くことができてしまうのです。具体的には、このグラフの傾きがコンバージョンファクターの逆数に相当します。今回の結果によると、グラフの傾きは0.259と測定できたので、コンバージョンファクターは1 / 0.259 = 3.86 [e-/ADC]と測定することができました。この値を、ZWOが測定したASI294MCの値と比べて見ると、上から2番目のGAIN(e-/ADU)のグラフのから3.9程度と読み取ることができるので、実測とメーカーが測定した値とかなり一致していることがわかります。このコンバージョンファクターはカメラの増幅回路のGainに依存するので、各Gainで測定してやらなければいけません。

ちなみに、ZWOのカメラのGianの単位は0.1dBなので、200で20dB、すなわち一桁明るくなります。Gainは294MCの場合570まで上げることができるので、Gain600だと57dBすなわち3桁近く明るさを明るくすることができるというわけです。そうやってそれぞれのゲインで何点も測定した結果が以下のようになります。

IMG_3235

この結果は実はShaprcapのβ版に搭載された新機能で、カメラの性能を自動で実測して、コンバージョンファクター、読み出しノイズ、full well、実際のゲイン、ダイナミックレンジと評価に必要なデータを、数値データとともに直接出すことができる優れものの機能です。各数値をZWOのASI294MCの測定値と比較しても、かなり一致していることがわかるので、ZWOの出しているデータはかなり信頼できることがわかります。

というわけで、このコンバージョンファクターを求めること自体がすごく重要で、この(ゲイン依存の)変換係数があるおかげで、ADCの値を読むだけでありとあらゆるものを電子の数で考えることができるようになるので、単位が揃って便利だということです。



2. FW: full well, 飽和電荷容量

さて、このコンバージョンファクターがわかると、ADCの読みから様々なものが単位 [e-]として、電子の数で数えることができるようになります。例えばfull wellです。十分にサチレーションを起こすくらい明るい光をカメラに入射し、その時のADCの値の平均値を読み取り、それをコンバージョンファクターで電子の数に変換してやったものがfull wellになります。実測から例えばゲイン0だとADCで16385 [ADU]程度カウントされ、full wellが63271 [e-]となっているので、14bitのADCの分解能である16383の全部を使っていることになります。この値もZWOによるASI294MCの測定値の63700と比較してかなり一致していることがわかります。他にも、例えばGain200、すなわち20dBで一桁内部ゲインを上げた時のADCのカウントは1494 [ADU]で、その時のfull wellが5766で、これは14bitのADCフルレンジ16383の約9.1%を使用していることになります。

こうやって考えると、ZWOが今回改善されたと言っているfull wellの値63700は実際にはADCの14bitというダイナミックレンジの上限から制限されていることがわかります。


3. Read noise: 読み出しノイズ

ここまでわかると、Read noiseの意味もやっと分かってきます。日本語でいうと読み出しノイズだとか言われるこのノイズは、センサーの読み出し回路に起因するノイズのことです。これは露光時間に依存せずに短時間撮影でも必ず存在するノイズです。もう一つよく似たノイズにダークノイズというのがあります。こちらはセンサーに光が入っていない時にも暗電流が流れることにより存在してしまうノイズで、時間のルートに比例して増大していくノイズです。

これらのノイズの測定は、実際にはカメラに蓋をしてセンサーに光が入らないような暗い状態で測定したトータルノイズから算出します。測定されるノイズはダークノイズσdark [e-/sec] と読み出しノイズσread [e-]が合わさったノイズが出てきて、実際に測定されるノイズをσとすると、

σ^2 = σdark^2 x t + σread^2

という関係式で書くことができます。ダークノイズは時間のルートで増加していき、読み出しノイズは時間に依存せずに一定なので、十分な積分時間を取ると後者は無視できるため、まずは長時間撮影をしてダークノイズを測定します。その後、2枚の同条件で暗いところで1秒間でとった画像2枚をの差分を取ると、その時のノイズσ2との関係は

σ2^2 = 2 σdark^2 + 2 σread^2

となるため、そのトータルノイズから既知となったダークノイズの貢献分を除くことにより、目的の読み出しノイズを求めることができます。

当然のことながらこれらの測定は全てADCの出力を見ているので単位は [ADU] で出てくるのですが、先に測定したコンバージョンファクターがあるために、電子の数 [e-]に変換することができます。例えばカメラのGainが200、すなわち20dBのとき、今回の実測からRead noiseは1.65 [e-]と出ましたが、この時のコンバージョンファクターが0.35 [e-/ADU]なので、(この20dBというゲインの時は)ADCの出力として1.65 / 0.35 = 4.7 [ADU]くらいのノイズが実際には出てくることになります。

SharpCapはこの読み出しノイズまで自動的に測定してくれる優れものです。実測した値は最小値で1.4 [e-]程度と、ZWOが言っている1.2 [e-]には少し及びませんでしたが、それでも実測でこれならば十分優秀なカメラなのだと思います。


4. DR: dynamic range, ダイナミックレンジ

さて、最後に残ったダイナミックレンジですが、これはもう簡単で、Full wellをRead noiseで割って、bit換算したものです。例えばGainが0の時は63271 / 7.91 = 7999ですが、これをbitで表してやるとほとんど13bitになります。Gainが400の時は585 / 1.43 = 409とかなりダイナミックレンジは小さくなり、bitで書くと8bitが256で9bitが512なので、8bitの後半ということで8.68と出ています。



いま外を見たら、とうとう雪になっていました。今週はまだしばらく天気は期待できそうもありません。そんなわけで、今回は色々と部屋の中で試してしまいましたが、SharpCapの新機能にびっくりするなど、面白いことがたくさんわかりました。今回言えることは、ZWOのASI294MCはメーカーが示している性能と実測値がかなり一致していることがわかったということだと思います。これはある意味驚異的だと思います。

とりあえずなんとかカメラを測定する手段を手に入れたので、次回もう少し手持ちの他のカメラも測定してみようと思っています。


その3: 続きです。実際の使用を想定して見ました。

また、ノイズについてさらに詳しく検証して見ましたので、
興味のある方はこちらをご覧ください。