clスクリプト

■overscan regionを使ったbiasつくり
procedure overscan ( file_name )
string file_name
struct *flist
begin
struct line
flist = file_name
while( fscan( flist, line ) != EOF ) {
imcopy( line//"[1:10,1:2048]", "c"//line, verbose=yes)
blkavg( "c"//line, "ac"//line, 2048, 1 )
blkrep( "ac"//line, "rac"//line, 2048, 1 )
}
end

■overscan biasをどうやって扱ったらよいか?
定義1:object フレームの間に撮影した0秒積分フレームをmedian平均したものをbias フレームという
定義2:各 object フレームに対して2048行x10列の overscan を1列に平均してそれを2048行x2048列に戻したものをoverscan bias フレームという
定義3:overscan bias フレームを平均化したものを平均化 overscan bias フレームという
実験1:各フレームの統計量
# NPIX MEAN STDDEV MIN MAX IMAGE
4194304 4253. 1347. 4174. 65425. bias フレーム
4194304 4210. 3.289 4199. 4238. overscan bias フレーム
4194304 4211. 1.632 4205. 4238. 平均化overscan bias フレーム
実験2:一般に使われるbiasフレームとoverscan biasフレーム,平均化overscan biasフレームの比較
NPIX MEAN STDDEV MIN MAX
{ (bias)-(overscan bias) }^2 / (bias)^2
4194304 4.564E-4 0.01933 0. 0.8758
{ (bias)-(averaged overscan bias) }^2 / (bias)^2
4194304 4.549E-4 0.01933 0. 0.8756
ほとんど変わらない.違いのバラツキは10%程度

うーん,どうみたらいいんだろう.この結果.

一番やなのはoverscan biasの見た目が揺れていること.でも,これが時変化を受けない一番よいbias引きだと思うんだけど.どうせ平均するんだからいいか笑 (結局時変化を無視)

やっぱり2次元の変動成分もあるらしい.CCDってアンプが1行に対して1つしかないんですよね?すると,2次元の変動成分はCCDの素子ごとの成分という訳か・・・困ったなぁ.

わかった!
(きっと)正しい bias subtruction
1. biasフレームに対してoverscan biasフレームをひく.
2. これを平均化(時間一定成分 と 2次元変動成分)> obias
3. object フレームに対してoverscan biasフレームをひく.
4. これから obias フレームをひく.
これでようやくはじめてbias引きが出来る訳ですね.
つか,2次元変動成分って熱雑音ってことかな?すると装置の冷却が十分に足りてない?たしか木曽の2kCCDはSuprimeと同じはずだよなー?Suprimeは熱雑音がないといっていたけど本当の所どうなんでしょ?笑

上のスクリプトを少しいじってつくった新しいスクリプトは無駄が多すぎてものすごく遅い.しかしだね,効率よくするためには結構勉強が必要で,なかなか出来んのだよ.