2016-12-19 1 views
1

最初に少し背景。これは、新しく打ち上げられた宇宙船のソフトウェアパイプラインを作る際に直面している問題です。 ボード上の望遠鏡は特定のターゲットを見ています。しかし望遠鏡が正確には安定していないと思うかもしれませんが、わずかにぐらつきます。したがって、異なる時間の瞬間には、空のわずかに異なる部分が見えています。Python(Astronomyパイプライン)で次のタスクを実行するための代替アルゴリズムはありますか?

これを修正するには、空のどの部分が特定の時刻(tと言うことができます)を見ているかを示すラボ作成テンプレート(基本的に2次元の0と1の配列)があります。それはこのように見えます。ここ

Template

白い部分は、実際に観測された望遠鏡の一部を意味します。この配列は実際には2400x2400です(正確さのために、情報が失われる可能性があるため、また、0と1の配列ではなく、他の効果のために実数です)。望遠鏡のぐらつきを知ると、このテンプレートが同じ量だけ動くこともわかります。したがって、x方向またはy方向(場合によっては宇宙船が回転している場合は回転する)で配列をシフト(np.rollを使用)し、蓄積する必要があります(空のどの部分が観測されたかを知るために)。しかし、このプロセスは非常に時間がかかり、時間がかかります(追加とロールのnumpy実装でも)。さらに、パイプラインで少なくとも500回1秒かかる必要があります。回避する方法はありますか?アルゴリズムを探していますソリューション多分全体の問題にアプローチする根本的に新しい方法すべてのヘルプは大歓迎です。またいずれかの部分が、私は喜んで、さらにそれを説明します私に知らせて不明である場合 同じトピックに関連する前の質問:。。。。 Click Here

私たちはPythonでパイプラインを実装しています(おそらく悪い選択です)

答えて

0

一部の計算(マスクなどの適用)にシフトされた配列の内容を使用する場合は、物理的に移動する必要はありません。変更されたインデックススキームを使用して同じ要素を処理します。回転が行われるとき例えば

は、事実上、この方法は、いくつかのより複雑になり、計算 代わり A[y][x]

A[y][x-dx]に使用し、右方向にdxだけ配列をシフトするが、それでも解ける(1はリアルのための時間を比較する必要があります配列の回転と座標の再計算)

関連する問題