ATOM Cam 2で流星観測
完全防水の激安ネットワークカメラ ATOM Cam 2
暗視性能が高く、一部天文民の間では星空観察カメラとして需要があるとかないとか
そしてこれを夜空に向ければ動体検知機能で流星が捕らえられる!というお話です
(私の環境では全く検知してくれませんが。。。)
ATOM Cam 2(姉妹品のATOM Cam Swingもほぼ同じ)で一晩中空を撮っていると、そこそこ流星が写ります。
FTPでファイルを取得したい
ATOM Cam 2はネットワークカメラということで、スマートフォンで画像(動画)を見ることに特化しています。
そのため、PCでFTP接続をしてファイルをダウンロードできません。
これは「撮った画像を後から解析する」場合、カメラを回収し、中のSDカードを取り出すしかないことになります。
ベランダ等に置いていてアクセスが容易ならともかく、私のように自宅の屋根の上に置いている人にとって、それはとっても面倒です。
世の中には同じようなことを考える人はいるわけで、そういう人は大概私より遥かに先を言っています。
ATOM Cam 2のSDカードにFTPで接続する atomcam_tools というツールがGitHub上に公開されています。
これをATOM Cam 2のSDカードにコピーすると、PCからFTP接続でSDカードに記録されたファイルにアクセスすることができるようになります。
(他にもWebUI, telnetができるようになります)
ここで取得できる動画ファイルは(ATOM Cam 2の仕様上)「1分単位で保存されたファイル」になります。
つまり、1時間分なら60ファイル
一晩(19時から翌朝5時まで)だと660ファイルにもなります。
これをひとつずつ再生すると11時間もかかってしまいます。
(私は2台持っているので、倍の22時間!とても見てられない!)
倍速再生するとコマ間の短い流星などは見つけられない可能性があり、それも避けたいところです。
動画から静止画を比較明合成したい
そこで1分動画から静止画を切り出し、それを比較明合成して静止画にし流星を見つけるという方法をとります。
ffmpegコマンドを駆使すれば可能なのですが、これが結構CPUパワーを必要とします。
そこで同じようなことを考える諸先輩方の作られた SimpleMeteorDetector を使います。
これはPythonで作られているので、PC上に環境を作る必要があります。
ちょっとしたプログラミングの知識があれば可能かと思います。
このツールは流星をマーキングもしてくれるのですが、ATOM Cam 2の画像はそこそこノイズがあるのと、市街地で撮影しているためか、ちょっとした雲や飛んでいる虫、人工衛星や月明かりの反射などなど結構拾います。
そのせいか、肝心の流星を拾わなかったりしますので、空の暗いところでデジイチ、ミラーレスカメラなどで撮った画像で使用するのが良いのかもしれません。
これで1分動画を比較明合成し、1枚の画像にします。
連続で見るだけですので2台分1320枚の画像であっても10分もあればチェックでき、流星チェックが非常に楽になりました。
自動で流星を検知したい
静止画を見ることで楽に探していたのですが、静止画だと人工衛星と流星の区別がつかないという問題があります。
動画だと、軌跡の長さや速度、明るさの変化の仕方などでなんとなく区別できるのですが、静止画だと「火球か!」と思っても途中で明るさが変わっただけの人工衛星ということがよくありました。
それを回避するために1分動画を全て比較名合成するのではなく、1秒単位ぐらいの短い時間で比較明合成して前後の画像と比較すれば。。。
となんとなくイメージはついていました。
ですが、それをイチからプログラミングするのは非常に面倒だなぁ、、、と思っていたところ、同じようにATOM Cam 2を使っている知人から meteor-detect というツールを教えてもらいました。
このツール、 atomcam_tools の導入が前提となっていますが、非常に優秀でRTSP配信をリアルタイムで解析して流星検知ができるのです。
私がやりたいのは撮影済みの動画ファイルからの流星検知ですので、そちらの機能を使ってみました。
これもPythonで書かれていますので、PC上に環境を作る必要があります。
処理時間としては1時間分60ファイルを処理するのに私の環境(MBP、Core i7 2.7GHz、メモリ16GB)で20分ぐらいでした。
このツールを実行すると検知のために作った比較名合成ファイルとその部分の切り出し動画が出力されます。
難点?として実行時のパラメータで1時間単位のフォルダを指定をする必要があるので、数時間分を処理する場合は複数回実行する必要があります。
まぁその辺はシェルでファイル一覧を取得し、ループで回せば良いだけなので十分カバーできます。
あとは冒頭に挙げたような継続時間が数秒になるような流星は複数の流星として検知されてしまうので、検知画像チェックに際には注意が必要かもしれません。
それでも明らかな人工衛星は除いてくれるので、これで今年のペルセウス座流星群は楽ができそうです。
もっと言えばこういった流星画像とそうでは無い人工衛星や飛んでいる虫などを機械学習させて振り分ける。。。
というのが理想なのですが教師データを集めるのも大変だし、そもそも機械学習に関する知識があまり無いのでチャレンジできずにいます。
どっかで勉強してやりたいなぁ