流星観測(観望) @ 宝塚
Creginal page ]
格安の防犯カメラ(ATOM Cam 2)を利用して、夜空を撮影し流星を観測(観望)しています。
  ライブ

リアルタイムで観測(撮影)データに対して流星検知処理を行い、検知した流星に検知フレームを付加して、10分毎の静止画に変換して公開しています。
  • 撮影場所 : 兵庫県宝塚市
  • 撮影方向 : 南の空 (仰角≒30度~天頂。視野:地図の赤枠)
  • 更新時間 : 21:12 ~ 夜明け (晴れた夜、10分毎の自動更新)
  • 公開画像 : 10分間の動画を合成した静止画。
  ライブシステム構成と処理内容

※ ATOM Cam 2 の Version Up は、枯れ始めた頃に行っています。
  • ATOM Cam 2
    1. 撮影した動画(1分毎)をNASへ保存。
      • ATOM Cam 2の正規の機能を使用。
      • 動画がNASに保存されるまでに、48秒程度の時間がかかっている。
        例えば 00:00:00~00:00:59のデータは00:01:48に保存が完了する。
      • Jetson Nanoの負荷低減のために、直接Jetson Nanoへ保存せず、NASへ保存。

  • Jetson Nano (ARMマイコンキット)
    • 1分毎に起床して以下の処理を実施。

    1. NASから動画(1分間)を取得。 [smbclient]
      • smbclientを使用して指定時刻(2分前)の動画をget。
      • 動画がNASに保存されるまでの時間を考慮して、2分前から1分間の動画を処理する。
        例えば、00:00:00~00:00:59のデータは00:02:00に処理を開始。
    2. 取得した動画から静止画を作成。 [自作ソフト:C++ , OpenCV]
      • 1分間の動画を比較明合成。
    3. 取得した動画から流星を検知。 [自作ソフト:C++ , OpenCV]
      • 検知した時刻の画像に検知フレームを描画して保存。
      • 動画については、複数(4件以上)を検知した場合に、1分以内に処理が完了しないので、運用終了時にまとめて自動作成。
      • 検知方法と性能については下に記載。
    4. 10分毎に、公開用の画像(10分間の動画の合成)を作成。 [自作ソフト:C++ , OpenCV]
      • No.2で作成した画像 10枚と、No.3で保存した流星検知フレームの画像を合成。
    5. 10分毎に、作成したデータをサーバーへ保存。 [SFTP, FTP]
      • 自宅のFileサーバーとWebサーバー、プロバイダーのWebサーバーへ送信。
      • プロバイダーのWebサーバーの容量が少ないので、公開は10分間の静止画のみ。
    • 一連の処理をShellで実装。
    • 1分間のデータ処理に要する時間 : 34秒前後
    • 全自動で手間いらず^^ (誤検知の除去は目視で;;;)
    • 右の画面は最終テスト時のもので、16:17:00に起床して16:15の動画(15.mp4)を取得し処理を行っているもの。
      運用時は電源ONで起動し指定時刻にShutdown。
  流星検知の方法
  • 3フレームを使用したフレーム間差分。
    • OpenCVの解説書に載っている教科書通りの方法。
  • 条件付きで2フレームによる差分も使用。
    • フレームレートが15フレームなので、ほとんどの流星は1フレームや2フレームにしか映っていない。
    • 1フレームにしか映っていない流星は、ノイズと区別できなので無視。
  • Median filterを使用してノイズ除去。
    • 画像全体に目に見えないノイズが大量にあるので、ノイズフィルターによるノイズ除去は必須。
    • 除去性能と処理時間を考えて、フィルターの種類と除去する対象を決定。
  • 画面(画像)の端は検知対象外。
    • 画面(画像)の端は画質がボロボロでノイズ除去のレベルではなく、潔くデータを捨てる。
    • 日時(スーパーインポーズ)部分の画質もソコソコ悪いので、画面(画像)の下部は、日時から下を捨てる。
    • マスク画像を使うと処理が重かったのでエリア指定を使用。
  • 処理時間短縮のために処理するデータを大量削減。
    • マイコンで処理するために、処理するデータ量を1/9に削減。(8/9のデータを捨てた)
  流星検知の性能

マイコンで流星をリアルタイム検知するために、PC用に作成したソフトを大改造して軽量化。
その結果、当初 2分近くかかっていた処理を32秒程度にまで大幅に高速化することができた。
高速化の方法は、コードの可読性(冗長性)と検知性能の2つを犠牲にしたこと。
  • 検知できない流星
    • 暗い流星。光が途切れ途切れになっているものは、検知できない。
    • 画面の隅の流星。
  • 誤検知するもの
    • 明るく点滅する飛行機。
    • 朝陽や月光、車のライトなどの影響で一瞬明るさが変化するアンテナ。
    • 動きが速い雲。
    • 一瞬の画質の変化(格安の製品なので;;)
      • 月や雲の周辺が特に影響を受ける。
    • 強風で揺れたカメラの画像(星や雲)のブレ。
    • 鳥。 [右の写真]
  • 稀に誤検知するもの
    • カメラの電気ノイズ。
      • ノイズの多くは1フレームなので除外できるけど、稀に2フレームに入るノイズがある。
    • 人工衛星。
      • 太陽光を強く反射している場合、または、弱く反射している場合は、誤検知しない。
        しかし、天候の状態や反射の状態によっては明るさが一瞬で大きく変化する場合があり、この場合は誤検知する。
      • 日の入後から2~3時間と日の出前の2~3時間は、太陽光を反射した人工衛星が多くカメラに映る。
      • 光跡の中ほどで明るくなっているのは、ほぼ人工衛星でしょう。
      • 右写真の4本の長い光跡は全て人工衛星。(誤検知なし)
  流星観測向けに作った自作ソフトウェア
  • ATOM Camのファイル名を "MM.mp4" から "yyyymmddHHMM.mp4" へ一括変換したり、動画(MP4)を比較合成するソフトウェアなどを公開しています。
  これまでの流星観測(観望)データ

流星群や火球などの個別のデータは、以下のブログに掲載しています。(ライブ時のデータは2023年~)
Home ]  
(c)Creginal page