しつこいようですが、いまだにコンバージョンファクターの測定です。だんだん何が目的かわからなくなってくる完全に自己満足の世界です。カラーでどうしても疑問が解決しないので、モノクロCMOSカメラのASI290MMを使って、基本に立ち返って検証してみました。


疑問点


疑問は2つ。
  1. ノイズの評価に標準偏差を使うとSharpCapに比べて大きく出すぎる。平均偏差だと同じくらいのノイズになるが、正しい方向なのか?
  2. debayerをするとノイズが平均化され小さく出るが、果たして公平な解析と言えるのか?
です。カラーカメラは余分な処理も多いので、もっとシンプルなモノクロCMOSカメラを使えば何か知見が得られるかもしれません。


モノクロカメラのSharpCapでの自動測定の結果


まずはSharpCapのセンサー測定機能で測定してみます。光源はこれまで通りiPadのColor Screenです。測定結果だけ示しますが、ほぼメーカー値と同じ値が出ます。ゲイン0でのコンバージョンファクター(Gain, e/ADU)は3.6程度です。

IMG_6411


モノクロカメラのマニュアル測定と自作コードでの解析の結果

次は自分で撮影して、その画像を解析します。画像の撮影自身にはSharpCapを使いました。今回はより厳密に、SharpCapで自動測定している様子をビデオに撮って、その時に使われたパラメータ、特に露光時間を全く同じにして測定しました。解析はpythonでの自作コードです。結果を示しますが、ここでは2つの結果を比較したいと思います。まず一つは、ノイズの評価に標準偏差を使ったもの。これはカラーCMOSカメラの場合は、ノイズが大きすぎると結論を出したものです。結果です。

Conversion_Factor_ASI290MM_std
モノクロの場合は標準偏差を使うことで、少しだけずれますがほぼメーカー値およびSharpCapの自動測定と同じ結果を出すことができるようです。Unity gainのズレとして15程度、1.5dBなので、1.18倍くらいの違いなので、まあ許容範囲でしょう。

一方、カラーで正しそうな値を出した平均偏差を使った場合の結果はというと

Conversion_Factor_ASI290MM_madmean
というように、ノイズが小さく評価されすぎていてメーカー値より大きなコンバージョンファクターとなってしまっています。

カラーカメラを再びマニュアルで解析

前回の測定は何かまだ問題があったかもしれません。再確認のために、モノクロカメラで測定した時と限りなく同様に、自動測定の時の様子をビデオに撮影し、その時のパラメーターを再現することで、より厳密にマニュアルで撮影、解析してみました。

まずは一番素直でモノクロの結果に一番近いはずの、標準偏差でのノイズ評価と、CFA分離です。結果はやはりノイズが大きく出すぎていて、コンバージョンファクターはメーカー値4程度に対して、わずか半分程度と出てしまいます。

Conversion_ASI294MC_Pro_Factor_CFA_std1
次に、CFA分離ですが平均偏差での評価です。3.3程度とだいぶんましになりますが、やはりまだ4とは優位にズレがあります。

Conversion_ASI294MC_Pro_Factor_CFA_madmean


次に、あぷらなーとさんが解析してくれたようにdebayerした場合です。ノイズが平均化されてばらつきが少なく出ます。まずは標準偏差を使ってノイズ評価した場合。それでも結果は2.5程度と、まだノイズが大きく出すぎています。

Conversion_ASI294MC_Pro_Factor_RGB_std

最後に、前回正しいと判断したdebayerして平均偏差をノイズ評価に使った場合です。結果は4.06と、メーカー値の4程度にかなり近い値が「たまたま」出ています。

Conversion_ASI294MC_Pro_Factor_RGB_madmean

今回はモノクロで正しい値が出たものと、相当近い方法でより厳密に測定していますが、結果は前回と変わりませんでした。前回もすでに、測り方としては特におかしい方法だったわけではない、ということがわかります。でもやはりこの平均偏差を使うことと、debayerでノイズを小さく見積もることが、恣意的な操作がなされているようで、どうしても正しいと思うことができません。


考察

モノクロの結果だけ見ると、ノイズの評価には標準偏差を使うことで、メーカー値やSharpCapと同様の結果を出すことができるので、標準偏差を使った方が正しそうということがわかり、統計の観点から言ってもその後の解析もしやすそうですし、素直な気がします。debayerで滑らかになったものを評価するような恣意的なことも入り込む余地もないので、このモノクロの結果には特に疑問となるようなことはありません。

それではなぜカラーCMOSカメラの場合は標準偏差を使うとノイズが大きく出すぎたり、debayerしたものの方よりも、RGGBのアレイごとに分割したCFA分離の方のノイズがメーカー値よりも大きな値が出たりしてしまうのでしょうか?SharpCapのSensor Analysisの説明
if you have a colour camera it must be in a RAW mode to perform sensor analysis as the debayer process used to convert RAW images into RGB or MONO images causes sensor analysis to give incorrect results.
という記述があることから、やはり解析の際にはdebayerはしていないようにしているようにとれます。


補足

ここで少し気づくことがありました。下の写真はカラーのASI294MC ProでADU値が10000程度の時を測定している様子です。

IMG_6436

SharpCapでは16bit形式で値を出しているので、実際に記録された14bitに換算する場合は4で割ってやります。横軸は10000程度になることがわかります。

ノイズは4で割って、さらにdebayerした時に15くらい下がることを考えると、RGBともに200後半台なので、結果として50程度になることが予測できます。ノイズは2条分布で評価するので、この50を2乗して2500程度。先ほどの10000をこの2500で割ってやるとコンバージョンファクターになって、10000/2500=4程度となるわけです。でもよく見るとRGBの線の他にもう一本白い線があり、こちらの方がかなり小さいノイズになっています。たぶんこれLなんですが、でもなんで?RGBよりもばらつき具合が小さくなる理由が全くわからないです。

Lの標準偏差で評価した時のノイズが、RGBでdebayerして平均偏差を使った時のノイズと、数学的に等価になるとか証明できたら安心して校舎を使うことができますが、パッと考えてもなかなかイメージできません。あと、Lのノイズが小さすぎることも気になります。

(追記: 一晩寝て考えたら多分謎が解けました。もっと単純な話で、今晩帰ったら検証してみます。)
(さらに追記: ヤッリダメでした。詳しくはコメント欄を。何か根本的におかしなところがあるのか?)

まとめ


いずれにせよ、SharpCapの自動測定は何かRGBとは違う評価方法を使っているのかと推測できます。

まだまだ先は長いですが、コンバージョンファクターもそろそろ飽きてきました。この状態だとまだASI294MCのダークノイズの評価の準備がまだ整っていない気もしますが、徐々にちらの方に移っていこうと思います。