PCとATOM Cam 2で流星検出

ATOM Cam 2 をベランダに設置して録画を続けると、どんどん撮影された動画がたまっていきます。
明るい市街地での撮影でも、まれに流星が写っていることがあるのですが、動画を全部人の目で見返して探すのは早送りでも大変です。
ATOM Cam 2は元々監視カメラなので、映像で動きがあると自動で検知してその部分だけ録画してくれる機能もあるのですが、流星の光をきれいに拾ってくれるかは信用しきれず、ひたすら動画を溜めていく日々でした。

そんな中で、さんたさん@北の大地の天文指導員 さんが書かれたこの記事を読みました。
ATOM Cam 2で流星観測 | さんたさん@北の大地の天文指導員

PC上のソフトウェアにATOM Cam 2の動画を解析させて、効率よく流星が映っている動画を探そう、というものです。
必要なことはすべて さんたさん@北の大地の天文指導員 さんがまとめてくださっていますが、自分が必要なところに限定してまとめなおしてみました。


自動検出ソフトウェア meteor-detect
githubで、kin-hasegawaさんが公開されている meteor-detect を使用します。
githubのREADMEにはこう書かれています。素晴らしいソフトウェアを公開いただいている Hasegawa様に感謝します。

https://github.com/kin-hasegawa/meteor-detect

meteor-detect
ATOMCamのストリーミング及びデータからの流星を自動検出
Automatic meteor detection from movie files(MP4) and streaming devices(RTSP)

無保証、無サポートです。

元々、人に公開する目的で作ったのではなく、ソースコードのコメントも自分のためのメモ程度で極めて不親切。 予告なしに仕様変更、機能追加(削除)を行います。


Windows PC上に環境を構築する
自動検出のプログラムを動かすための環境をWindowsに構築していきます。
■Python のインストール

  1. Python Releases for Windows から、Python 3.9.13 - May 17, 2022の Download Windows installer (64-bit) をダウンロードします。(Python 3.10系ではまだ動きません。3.9系で。)
  2. ダウンロードしたインストーラ(python-3.9.13-amd64.exe)を実行します。
  3. "Install Python 3.9.13" の画面で、ウィンドウの下部にある "Add Python 3.9 to PATH"にチェック を入れてから、"Install Now"でインストールします。ユーザーアカウント制御の画面で変更の許可を求められたら「はい」をクリックします。
    python39
  4. インストールの最後に "Disable Path length limit" が出てくるのでクリックして、ユーザアカウント制御の画面での変更を許可し、Closeでインストーラを閉じます。
    python39-2

■Pythonで自動検出プログラムを動かすための初期設定
meteor-detect の説明書きに書いてあるとおり、必要な設定を行っていきます。

  1. Windows PCで、コマンドプロンプトを開きます。(キーボードで、Windowsキー+ R を同時に押して、出てくる小窓に cmd と入力してEnter)
  2. コマンドプロンプトの画面が開いたら、下の通り順番に入力します。
    pip install ffmpeg
    pip install opencv-python
    pip install imutils
    pip install youtube_dl
    pip install pafy

■meteor-detect をダウンロード
Windowsでgit環境を用意してもよいのですが、ここは単純に公開されている現在のバージョンをPCにダウンロードすることにします。

  1. githubの meteor-detect のリポジトリから、緑色の code と書いてあるボタンをクリックして、"Download ZIP"を選びます。
  2. meteor-detect-main.zip がPCにダウンロードされるので、右クリックして「すべて展開」を選択します。
  3. 展開された meteor-detect-main のフォルダを、PC上のわかりやすい場所に移動させます。(例えばCドライブ直下など)

■解析させたいATOM Cam 2で撮影した動画の準備
私のATOM Cam 2は、"ATOM Cam 2 を有線LANでPoEで使うには" でforkした有線LAN専用版の atomcam_tools で動作させています。
撮影した動画は、自動的に自宅内のNASにたまるようになっていますが、このあたりは必須ではありません。
"SDへのローカル録画”を有効にした標準のATOM Cam 2では、撮影したSDカードをPCで開くと1時間単位のフォルダの中に1分刻みで動画ファイルが作られます。
解析させたい日付の録画をフォルダごと、meteor-detect-main のフォルダ内にコピーします。
(atomcam_toolsを使っていたりNASに録画している場合は、わりとWindowsのコマンド実行に詳しいと思うので省略)
例えば、2022/8/3の録画をコピーすると次のようになります。
meteor3

■meteor-detect を実行します。

  1. Windows PCで、コマンドプロンプトを開きます。(キーボードで、Windowsキー+ R を同時に押して、出てくる小窓に cmd と入力してEnter)
  2. meteor-detect-main のフォルダに移動するコマンドを入力します。\はキーボードや画面上では半角の¥です。
    cd C:\meteor-detect-main
  3. 例えば 2023/7/25 PM22時台の動画をスキャンするには、下記の通り入力します。"-d" の後が日付西暦4桁、"-h"の後が時刻24時間表記です。
    .\atomcam.py -d 2022725 -h 22
  4. ここまでの手順に問題がなければ、meteor-detect が動画を順次読み込み流星を探し始めます。PCのスペックにもよると思いますが、私の環境では1分の動画の解析に20秒程度、1時間分の解析で20分程度で終わります。ずっと画面を見ている必要もなく、解析中はほかのことができるので楽ちんです。
    > C:\meteor-detect-main>.\atomcam.py -d 20220725 -h 22
    # 20220725\22
    # 20220725\22\00.mp4
    # 20220725\22\01.mp4
    # 20220725\22\02.mp4
    # 20220725\22\03.mp4
  5. 流星のようなものを検出すると、コマンドプロンプト上に 時刻とともに "A possible meteor was detectd."が通知されます。下記の例では、2022/7/25の54分台の動画の開始から3秒のところに流星のようなものがあるよ、と教えてくれています。
    # 20220725\22\53.mp4
    # 20220725\22\54.mp4
    2022/07/25 22:54:03  A possible meteor was detected.
    # 20220725\22\55.mp4
    # 20220725\22\56.mp4
  6. 同時に、meteor-detect-main フォルダ内に、動画から切り出した静止画のJPGと、切り出した動画のMP4が生成されます。流星じゃないものもあります。
    20220725225403
  7. もう少し長い動画が欲しい場合は、検出したオリジナルの1分ごとの動画を確認します。

■応用
README記載の通り(メモ帳で開けます)いろんなことができるソフトウェアですが、同梱されているマスク画像を参考に、自分のカメラ画像用のマスク画像(判定に使用させたくないエリアを白で塗って、判定させたいエリアを黒く塗った画像)を作っておくと、地上物による誤判定をだいぶ減らすこともできます。

■期間を指定しての解析
簡単なスクリプトで期間指定して解析させる方法を別ページにまとめました。