How to calculate pattern of psf


psfを撮った画像から、13個の位相パターンの内どれに相当するかを計算する方法を考えます。

0.下準備

計算しやすいように(+バイナリファイルにして軽くするために)画像はFITS形式を使います。mplayer ではfits に保存できないので、まず、以下のようにしてFITS 形式の画像を得ます。

mplayer -msglevel all=2 -vo jpeg -contrast -10 -frames 10 /dev/video0

でvideo capture board の画像をjpegに保存し(サチるのでコントラストを下げている)、
convert 00000001.jpg 00000002.jpg 00000003.jpg 00000004.jpg 00000005.jpg 00000006.jpg 00000007.jpg 00000008.jpg 00000009.jpg 00000010.jpg -average test.jpg

で10枚の画像を平均化して1つのjpeg画像にします。これを、

convert test.jpg test.fits

でFITS 画像に変換し、これを使って位相パターンの計算を行います。

1.パターンの計算

単純にピークを見付ける、というようにすると、laser 1(1番長い波長)の画像がサチっている為に実際のとはずれた所をピークとみなすので、うまくいきません。
そこで、ある一定以上のカウントを持つ部分を1、それ以下の部分を0として考えることにします。(下の図を参照)



1/0の値に置換えた図をx軸方向に圧縮してprofile を作り、その部分の面積(上の図の桃色の部分、以降便宜上EWと呼びます)比等で位相パターンを計算することにします。
ちょっとずれてきています。
位相を計算するポイントは、

  1. ピークがいくつあるか
  2. 2つのピークの位置関係
  3. EWの比
です。
1/0を決める境界値は120とし(明るさは0--255で表されている)、EWの比(2番目/最大)から求める位相パターンの値は以下の各点を端点とする線分を使って計算します。
また、テンプレートの図(こちら)を計算した結果(但し境界値はそれぞれ最大fluxに対して7.5%になる様に調整している)も載せています。
端点0123456
EW比00.050.250.450.60.80.9
テンプレート図01.22.33.34.35.16.4

改良すべき点:



2.パターンの計算その2

上の方法では、放物面斜めになっていたときに正しく位相を判定することができないようです。
そこで、ピークとみなした位置から一定の範囲内で、明るさのモーメントを計算し、重心を探すことでピークを検出するようにしました。

3.Capture Board からjpeg画像の取得

mplayer は画像取得までに時間がかかるので、v4l2を用いて画像を取得します。
ピクセルフォーマットはHM12です。
これをjpeg、グレースケールに変換し、保存します。
これで、大体10枚の画像を取得するのに2秒以下で済みます。
これをconvert でFITS形式に変換します。



back
back to the Home