マッチングは、画像から検出した星像と、星表から抽出した恒星データとの、座
標及び明るさから成る2つのリストから、写像関数を求めることである。
もし画像中の各星像が星表中のどれにあたるかが分かっていれば、任意の2つの
星を選んで写像関数を計算することができる。
しかし、ここでは2つのリストの要素どうしの対応はとれていないため、
対応していそうな要素を大量に選んで写像関数を求め、その中から真の写像関数
を決定するという方法を取る。
この方法では、実際には対応していない要素から求めた写像関数の値が重複する
可能性は低く、正しい写像関数の値が最も頻繁に求められることを期待している。
具体的には、次のような手順で写像関数を定める。
- 星像のリストと星表のリストからそれぞれ3個の星を選び出す。
- もし星像のリストから選んだ3星の作る三角形と、星表のリストから選ん
だ3星の作る三角形が相似でなければ、これらの星は対応しないと判断できる。
相似なら次に進む。
- もし2つの三角形の対応する頂点の星の明るさが大きく異なれば、これら
の星は対応しないと判断できる。ほぼ同じなら次に進む。
- この時点で、星像リストからの3星と星表リストからの3星とは対応づけら
れる可能性があるとし、写像関数のパラメータを求める。
- すべての3星の組合せに対し、1〜4の処理を行う。
- 最も重複度の高いパラメータを正しい写像関数として採用する。
初めはテストデータを用いて実験を行った。
600 400 の大きさの中に200個の星を配置した仮想の夜空を作成した。
星の明るさの差は10等級とした。
また、夜空から任意の一部矩形領域をコピーして、人工の天体画像を作成した。
この画像は縦横がおよそ夜空の3分の1とした。
実際の撮影では誤差が生じるので、コピーする際に、各星の位置に±0〜3ピクセ
ルの誤差、各星の明るさに±0〜2等級の誤差を加えた。
更に、1〜4個の「新天体」も加えた。
こうして作成した天体画像と人工の夜空から写像関数を求める実験を行なった。
尚、予め利用者が指定すべき概略位置と概略の画像の範囲は、位置は写野1つ以
内のずれ、範囲は約2割の誤差を持たせた。
作成した画像が夜空のどこをコピーしたものかを正しく求められるように試行し
た結果、前述した手順を以下の通りに実装した。
- 三角形が相似であるかどうかの判定は、対応する辺から求めた3つの拡大
率が互いに2割の誤差内で一致し、また求めた3つの回転角が互いに±10度以内で
一致すれば良い。
- 3つの星が対応するかどうかは、等級がそれぞれ±1等以内であれば良い。
- 拡大率は と仮定する。即ち予め指定する概略の画像の範囲
は真の値に対して半分以下、または2倍以上違っていてはいけない。
- すべての3星の組合せに対してではなく、同じような明るさの3星が作る三
角形についてだけ処理を行い、計算量を減らす。
具体的には、画像から検出した星像を光量順に並べ、連続する3星に対して、そ
れぞれと同じような明るさの星を星表から選択する。
n個の星像が画像から検出された場合、星表から抽出した恒星数をmとすると、
計算量は
つまり から となる。
- 最も重複度の高いパラメータを探す手法を次の通りとする。
- 求められたパラメータは の4次元
空間に分布している。この空間を、 を10度毎に、 を10ピクセル毎に区切ってメッシュを作成し、各ブロックに入る
パラメータの個数を数える。
rは区切らないものとしたが、これは利用者が指定した概略の画像の範囲があ
る程度正しいことを前提としている。
- 最も個数の多いブロックと、それに隣接するブロックに属するパラメー
タのみを選択し、それ以外を削除する。
- パラメータの平均値と標準偏差を計算する。
- の標準偏差がそれぞれ よりも小さくなれば、平均値を正しい写像関数の値とする。そうでなけれ
ば、パラメータと平均値との差が標準偏差よりも大きいものを削除し、3 に戻る。
実験では、数十回の試行ですべて正しい写像関数が求められた。
よって、本手法が星の位置や明るさに揺れや測定誤差がある場合や、新天体のよ
うに片方にしか存在しないものがある場合にも柔軟に対応できることが分かった。
図 2: 仮想の夜空
図 3: 撮影したつもりの画像
次に実画像と実際の星表を用いて実験を行なった
実際の星表は全天の恒星を網羅しているが、予め利用者が指定した概略の位置、
概略の画像範囲から、付近の必要な星のみを抽出してマッチングを行なう。
尚、概略の画像の範囲は真の値の0.5倍から2倍であるとしているため、概略の位
置が必ず画像の中に入っていると仮定すれば、指定された概略の位置を中心に、
画像4枚分の領域の星を抽出すれば良いことになる。
また、実画像を扱う場合は、まず初めに、画像から検出した星像の光量を星表中
の恒星の明るさと同じ等級単位に変換しなければならない。
その手法は次の通りである。
- 画像から検出した星像リストを光量の明るい順にソートする。
- 星表から抽出した恒星リストを等級の明るい順にソートする。
- 恒星リスト中の最も明るいものの等級をそのまま星像リスト中の最も明る
いものの等級とする。
但し、星表は画像4枚分の面積があるため、実際には恒星リスト中の明るいもの
から4つ分の等級の平均値を用いる。
- 以下、明るさの順に、恒星リストから4星を選び、平均の等級を星像と等
級に割り当てていく。
この手法は星像の光量を直接は考慮せず、ただ順序関係だけから等級を割り当て
ている。
そのため多少の誤差が生じている。
将来は、割り当てが終った段階で、光量から等級への変換関数を最小2乗法で求
め、すべての星像の等級を再計算することを考えている。
ところで、実画像ではテストデータよりもずっと画像内の星数が多く、実験の結
果、前述の実装では誤った写像関数が多数求められてしまうことが分かった。
そこで、以下のように実装を変更した。
- 三角形が相似かどうかを判定する際の拡大率の許容範囲を2割から1割に変
更。
- 拡大率は と仮定。
- パラメータ空間に於いて、rも ごとに区切るように変更。
ここで、実画像に対する実験結果を以下に示す。
星表はTychoカタログを利用した。
左上の図が元画像、左の真ん中の図が画像から検出した星像、右側が指定した
概略の位置付近の星をTychoカタログから抽出して作成した星図である。
左下の図が、抽出した恒星データに求められた写像関数を逆に作用させて作成
した、画像と同じ領域の星図である。
左の真ん中の図と左下の図が一致すれば、正しい写像関数が求められたことに
なる。
- カシオペヤ座新星1995
- ヘール-ボップ彗星
久保庭敦男氏撮影
1996年2月22日 05:05:22〜05:12:20 (6分58秒)
稲敷郡茎崎町・東谷田川沿い
ボーグ125EDF4(f500mm)直焦点
EM−200(タカハシ),オートガイド
フジクローム400プロビア/ラボ現像・プリント
実験では、星数の多少に関わらずすべて正しい結果が求められている。
しかし、実際には以下のような大きな問題が2つあり、一般公開できないでいる。
- 非常に時間がかかる
どの実験でも、PentiumPro 180MHz のPCで3〜5時間ほどかかる。
但し、これはJavaでプログラムを組んだ影響が大きい。
テストデータを用いた実験プログラムはC++で作成したため、星数が少なかった
こともあるが、1分もかからずに結果が出ていた。
- 写像関数が明確に1つに定まらない
一番重複度が大きかったものは確かに正しい写像関数ではあったが、他の候補の
重複度に対して、正しいものが際だっていたという訳ではない。
重複度がわずか1〜2程度の差である場合も多々あり、かろうじて正解になったと
いう印象が強い。
但し、概略の回転角を指定できれば(例えば北が上になるように撮影していると
分かっていれば)、正しい写像関数の値はまず一意に定まる。
尚、4つの星を選んで四角形を作り、四角形が相似であるかどうかを調べる方法
も試してみたが、計算量の次数が1つ増えて膨大な時間がかかるようになり、し
かもパラメータが正しい値に収束しなくなってしまった。
また、本手法とは逆に、写像関数のパラメータ空間の各ブロックについて、実際
に画像から検出した星像リストに作用させて、そのうちのいくつが星表中の恒星
と対応するかを数え、最も多くの対応がとれたものを正しい値とする手法も試し
てみたが、計算時間が膨大にかかるため途中で打ち切ってしまった。
|