FLI USB-CCDカメラのConversion Factorの測定

(2009/9/8 :利川)

linuxで動かすまでのインストール作業はこちら

●セットアップ(2009/07/31 :小西、利川)
大澤くんのレポートを参照すると、ダンボール内にCCDカメラを入れて外界の光を遮断し、 懐中電灯の点灯部分にティッシュを被せ、光量をさちらずに都合のよい量に調節していた。
外界の光はダンボールで遮断するとして、懐中電灯の光量調整を色々試してみたのが以下

点灯部に被せたもの露出時間カウント
ティッシュ1sさちった
ティッシュ0.1sさちった
茶封筒1sさちった
布袋(黒)1s2050
雑巾1s17000
ACアダプタのランプ1s2000強
ACアダプタのランプ10s2200弱

シャッターを閉めたままの場合のカウントは2000前後であった。この結果から懐中電灯+雑巾の ダンボールフラットが最適であると判断した。
撮像、データ処理手順は以下のとおり

#50usec-2000usecで各3枚ずつ撮像
awk 'BEGIN{for(i=50;i<=2000;i+=50){for (j=1;j<=3;j++){print "./fliexp 1 1 e", i/1000};printf( "echo \"echo sleep 5\"\n");print "sleep 5"}}' | sh

#画像リストファイルの作成
#ls -l | awk '{print $(NF)}'
awk 'BEGIN{ns=702;for(i=0;i<119;i++)printf("ANOA%08d.fits\n",ns+i)}' > conversion.090731

#iraf
#ヘッダから積分時間の書き出し
ecl> hselect  @conversion.090731 EXPTIME yes > conversion.090731.exptime
#imstatで画像のなまえ、ピクセル数、平均、中間値、標準偏差をリダイレクト
ecl> imstat @conversion.090731 format- nclip=5 fields="image,npix,mean,midpt,stddev" > conversion.090731.imstat

#conversion.090731.exptime, conversion.090731.imstatの結合
paste conversion.090731.exptime conversion.090731.imstat > conversion.090731.plot

#gnuplot
gnuplot> plot "conversion.090731.plot" u 1:4
gnuplot> plot "conversion.090731.plot" u 1:5
gnuplot> f(x)=a*x+b
gnuplot> fit f(x)  "conversion.090731.plot" u 1:4 via a,b
gnuplot> plot "conversion.090731.plot" u 1:4, f(x)
gnuplot> plot "conversion.090731.plot" u 1:6
露出時間-カウントをプロットしたものが以下

都合により露出時間0s-1sと1s-2sの2回に分けて測定した。 結果、1sのところで不連続になってしまっている。
露出時間0s-1sと1s-2sの間にかなり時間が空いてしまったため、懐中電灯の電池の消耗によると考えられる。
→次回までに電池を買っておいて仕切りなおし

●測定(2009/08/05 :小西、利川)

上図のようにパターンがのる。明るいところと暗いところで2割ほど差があった。 →FITS画像はこちら
露出時間最長で、カウント30000に対し、σが1300くらい(170-180くらいが適当なのだが)
一様に光が当たるように、前回とライトの当て方を変える&imstatで光の当たり方がなるべく一様な範囲のみに指定する
撮像、データ処理手順は以下のとおり
#!/bin/sh

#10msec-3000msecで各3枚ずつバイアス、ダーク、撮像
#awk -v n=1 'BEGIN{for(i=20;i<=100;i+=10){for (j=1;j<=n;j++){print "./fliexp 1 1 e 0"};for (j=1;j<=n;j++){print "./fliexp 1 1 d", i/1000};for (j=1;j<=n;j++){print "./fliexp 1 1 e", i/1000};printf( "echo \"echo sleep 1\"\n");print "sleep 1"};for(i=100;i<=2200;i+=50){for (j=1;j<=n;j++){print "./fliexp 1 1 e 0"};for (j=1;j<=n;j++){print "./fliexp 1 1 d", i/1000};for (j=1;j<=n;j++){print "./fliexp 1 1 e", i/1000};printf( "echo \"echo sleep 1\"\n");print "sleep 1"}}' | sh


#画像リストファイルの作成
#ls -l | awk '{print $(NF)}'
cd ~/data/20090612
rm conversion.090805*
awk 'BEGIN{ns=1160;for(i=0;i<156;i++)printf("ANOA%08d.fits\n",ns+i)}' > conversion.090805

#ヘッダの書き出し
cat < conversion.090805.head
logout
EOF

#各リストファイルの作成
awk '$3==0{print $1}' conversion.090805.head > conversion.090805.bias
awk '$2=="DARK"{print $1}' conversion.090805.head > conversion.090805.dark
awk '$2=="TEST" && $3>0{print $1}' conversion.090805.head > conversion.090805.obj
awk '{print "sub"$1}' conversion.090805.obj > conversion.090805.sub
awk '{print "sub"$1"[384:640,384:640]"}' conversion.090805.obj > conversion.090805.sub.sect

#iraf
cat <<EOF|cl
#バイアス引き
imarith @conversion.090805.obj - @conversion.090805.bias @conversion.090805.sub
#imstatで画像のなまえ、ピクセル数、平均、中間値、標準偏差をリダイレクト
imstat @conversion.090805.sub.sect format- nclip=5 fields="image,npix,mean,midpt,stddev" > conversion.090805.imstat.sect

logout
EOF

#mean,median,stddevをlogになおす
awk '$4>0&&$5>0{print log($3)/log(10),log($4)/log(10),log($5)/log(10)}' conversion.090805.imstat.sect > conversion.090805.imstat.sect.log10

#gnuplotでフィット
cat <<EOF|gnuplot
set term png
set output "conversion.090805.png"
f(x)=0.5*x-0.5*b
fit f(x) "<awk '\$1>3.55' conversion.090805.imstat.sect.log10" u 1:3 via b
plot "conversion.090805.imstat.sect.log10" u 1:3, f(x)
q
EOF
で、横軸:log(カウント)、縦軸:log(σ)でプロットすると、

露出時間を増やし、カウントが増えたときに傾きがsteepになり、1/2でfitできない
(原因)
flatで割っていないため、pix間の量子効率ムラがでている:カウント↑だと ムラ↑
これを避けるためには同じ露出時間で2枚ずつ撮り、引き算する。 すると、ポアソンムラ×√2のみ残る。

●再測定(2009/08/12 :小西、利川)
セットアップは下の写真参照


撮像、データ処理手順は以下のとおり
#!/bin/sh

#20msec-10000msecで各3枚ずつダーク、撮像
awk -v n=3 'BEGIN{for(i=20;i<=200;i+=10){for (j=1;j<=n;j++){print ""};for (j=1;j<=n;j++){print "./fliexp 1 1 d", i/1000};for (j=1;j<=n;j++){print "./fliexp 1 1 e", i/1000};printf( "echo \"echo sleep 0\"\n");print "sleep 0"};for(i=200;i<=10000;i+=200){for (j=1;j<=n;j++){print ""};for (j=1;j<=n;j++){print "./fliexp 1 1 d", i/1000};for (j=1;j<=n;j++){print "./fliexp 1 1 e", i/1000};printf( "echo \"echo sleep 0\"\n");print "sleep 0"}}' | sh


#画像リストファイルの作成
#ls -l | awk '{print $(NF)}'
cd ~/data/20090612
rm conversion.090812*
awk 'BEGIN{ns=1324;for(i=0;i<408;i++)printf("ANOA%08d.fits\n",ns+i)}' > conversion.090812

#ヘッダの書き出し
cat <<EOF|cl
hselect @conversion.090812 "\$I,DATA-TYP,EXPTIME" yes > conversion.090812.head
logout
EOF

#各リストファイルの作成
#bias(t=0s)のリスト(今回は撮っていない)
awk '$3==0{print $1}' conversion.090812.head > conversion.090812.bias
#darkのリスト
awk '$2=="DARK"{print $1}' conversion.090812.head > conversion.090812.dark
#普通の撮像のリスト
awk '$2=="TEST" && $3>0{print $1}' conversion.090812.head > conversion.090812.obj
#生画像からbias(dark)を引いたもののリスト
awk '{print "subdark"$1}' conversion.090812.obj > conversion.090812.subdark
#生画像からbias(dark)を引いたもので、光量が一様な部分の抜粋
awk '{print "subdark"$1"[420:680,350:610]"}' conversion.090812.obj > conversion.090812.subdark.sect


#量子ムラ対策処理につかうリストファイルの作成
cd /home/anir/data/20090612
awk 'NR%3 == 0' conversion.090812.sub > conversion.090812.sub3
awk 'NR%3 == 2' conversion.090812.sub > conversion.090812.sub2
sed -e 's/sub/flt/g' conversion.090812.sub3 > conversion.090812.flt
awk '{print $1"[420:680,350:610]"}' conversion.090812.flt > conversion.090812.flt.sec
awk '{print $1"[420:680,350:610]"}' conversion.090812.sub3 > conversion.090812.sub3.sec

cat <<EOF|cl
#同じ露出時間の画像どうしで引く
imarith @conversion.090812.sub3 - @conversion.090812.sub2 @conversion.090812.flt
#元画像のカウントの平均値、中央値をimstatでかきだす
#imstat @conversion.090812.sub3.sec fields="mean,midpt" format- nclip=10 > conversion.090812.mean
#引き算した画像の標準偏差をかきだす(元の画像のポアソンムラ×√2となっているはず)
imstat @conversion.090812.flt.sec fields="stddev" format- nclip=10 > conversion.090812.std
logout
EOF

#標準偏差を元の画像の値に直す(√2で割る)
gawk '{print(($1)/1.414213)}' conversion.090812.std > conversion.090812.std.0

#mean,median,stddevをlogになおす
paste conversion.090812.mean conversion.090812.std.0 | awk '$1>0&&$2>0{print log($1)/log(10),log($2)/log(10),log($3)/log(10)}' > conversion.090812.imstat.sect.log10
#gnuplotでフィット
cat <<EOF|gnuplot
set term png
set output "conversion.090812.png"
f(x)=0.5*x-0.5*b
fit f(x) "<awk '\$1>4.00' conversion.090812.imstat.sect.log10" u 1:3 via b
plot "conversion.090812.imstat.sect.log10" u 1:3, f(x)
q
EOF
横軸:log(カウント)、縦軸:log(σ)でプロットした結果


(結論)
fitした直線のy切片=0.5*log(conv.)
y切片の値 :0.265192±0.001766
y切片の値 :0.5*(0.265192±0.001766)

よって、
conv.=3.391±0.0275[e/ADU]
conv.=1.841±0.007[e/ADU]
となる