JPG画像の流星を検出する 〜非エンジニア星景カメクラMacユーザーに捧ぐ〜
アストロアーツ屋上chの記事でPython+OpenCVで流星群画像を仕分けるという記事が書かれました。
これを使って見たところ私は職業柄この手のものに慣れているため簡単に使えたのですが、エンジニアではないカメクラは難しいんじゃないか?と思ってクリーンインストール後のmacOSからの利用手順を書いてみました。
決して面白い読み物では無いかと思いますが、やってみたいと思った方はぜひ実践してみてください。
前提
この記事は下記のような方を対象としています。
・非エンジニアのMacユーザー
・星景写真を取るカメクラ
・◯◯流星群の写真を何百・何千枚と撮っちゃう人
もちろん対象でない方に読んでいただいて構いませんが、手順を確実かつ少なくすることを主眼にしているため「Pythonの環境構築でそれはないだろう」などのツッコミはご容赦ください。
全体の流れ
■最初にやること
こちらは自身のMacで(おそらく)一度だけやれば良いことです。
・macOSの環境構築
・Pythonの環境構築
・流星検出プログラムダウンロード
・流星検出プログラム用のライブラリ追加
■検出したいときにやること
前述の最初にやることが出来てれば、◯◯流星群で撮影した後にやるメインとなることです。
・検出対象となるJPGファイル準備
・流星検出プログラム実行
・パラメーター調整
macOSの環境構築
macOSの環境構築ではXcode関連を入れていきます。
まずはXcode本体です。こちらはApp Storeから検索してインストールするだけです。
ただ環境にもよりますが1〜3時間くらいかかるので終わるまで放置です。
次にコマンドラインツールをインストールしますが、ここからちょっと手順がめんどくさいです。
まずSpotlight検索でたーみなると入力してターミナルを起動します。(もちろん知ってる人はアプリケーションから起動してもOK)
ターミナルが起動されたら
xcode-select --install
と入力(↑のコピペでOK)しEnterです。
そうするとポップアップが表示されるのでインストールをクリックします。
しばらく待つと終わるので完了をクリックします。
ちゃんと入ったか確認のために
xcode-select --version
と入力しEnterしてみましょう。
なんかバージョンっぽいのが出たらOKです。
続いてライセンスの利用許諾をagreeします。
sudo xcodebuild -license
このように入力しEnterします。
するとパスワードを聞かれるのでmacOSにログインしているユーザーのパスワード入力しEnterします。
なんか出てくるのでEnterします。
次に長いの(使用許諾の文章)が出てきたら Space をどんどん押すと次に進むので最後まで読みます(遠い目)。
最後まで来たら agree と入力してEnterします。
これでmacOSとしての環境構築は完了です。
Pythonの環境構築
続いてPythonの環境を構築していきます。Pythonの環境構築はいろいろな方法があるのですが、今回はmacOSに最初から入っているPython3を活用しながら進めていきます。
まずはpipをupgradeします。
sudo pip3 install --upgrade pip
このように入力しEnterします。(パスワードを聞かれたら先程と同じように入力しEnterします。)
ワーニングが出てますがupgradeできます。Successfully installedと表示されればOKです。
Pythonの環境構築は一旦これだけでOKです。
流星検出プログラムダウンロード
環境の準備が出来たので今回使うプログラムをダウンロードします。
アストロアーツの屋上chのPython+OpenCVで流星群を仕分けるの記事を開きます。
記事を開いたら今回のプログラムに関する技術的な説明がされていますが、非エンジニアな皆様はすっ飛ばして↓この部分まで来てGitHub Gistの部分をクリックします。
するとプログラムが管理されているWebサイトにたどり着きますので、そこから右上側にあるDownload Zipをクリックして圧縮されたZipファイルをダウンロードします。
ダウンロードするとブラウザにもよりますが、zipファイルであれば展開してください。展開されるとこのような機械的な名前のフォルダが現れると主ます。
このフォルダの名前をわかり易い名前に変更します。今回はプログラム名に合わせてdetect_meteorとしています。
これで必要なプログラムは手に入りました。
流星検出プログラム用のライブラリ追加
ダウンロードしたプログラムを動かすためにはあと少し準備が必要となります。検出の処理で必要とするライブラリを環境に追加します。
それではまたターミナルを使います。開いたターミナルにcd<space>と入力します。(cdはchange directoryで今いるフォルダを移動する意味です)
cd
そこにFinderからターミナルへdetect_meteorフォルダをドラッグ・アンド・ドロップします。するとcd<space>の続きにディレクトリのパス(macOS上のアドレス)が表示されるのでEnterします。
Enterしてdetect_meteorフォルダの中に移動できたらこのように入力してEnterします。
sudo pip3 install -r requirements.txt
するとパスワードの入力を求められるので、macOSにログインしているユーザーのパスワードを入力しEnterます。
すると色々出てきますが今回必要なライブラリが追加されます。
下から4行目ぐらいにSuccessfully installedと表示されているのを確認しましょう。
これで必要なライブラリの追加ができました。
ここまでが最初の準備として必要な手順です。いまここまでやっておけば、次のペルセウス座流星群の撮影後にはここまでの手順は不要で、以降の手順だけで大丈夫(なはず)です。
検出対象となるJPGファイル準備
今回の検出プログラムはJPGファイルのみが対応されています。RAWのみの撮影をされている場合は、検出用にまとめてJPG変換を実施しておく必要があります。(Lightroomの書き出しでOK)
流星検出プログラム実行
やっとここまで来ました。
長かったですね。この記事はここまでの手順をなんとか非エンジニアにやってもらうために書いたようなものです。
先程までの手順でターミナルはdetect_meteorにいる状態かと思います。その状態で以下のように入力し、検出したいJPGファイルが保存されているフォルダをFinderからターミナルへドラッグ・アンド・ドロップします。
python3 detect_meteor.py
ドラッグ・アンド・ドロップすると検出したいJPGファイルが保存されているパスが入力した後ろに表示されているかと思います。その状態になったらEnterします。
↑このように表示されました。
detected: 2/13 と表示されていますね。これは13枚の画像のうち2枚の画像で流星が検出されました。ということです。
その下にJPGファイルが2つ表示されていますね。これが流星が検出されている画像のファイル名です。(私のがファイル名は日時と機材名を入れてるのでちょっと長いです)
このファイル名が欲しかった流星が写っているはずという情報ですね!
パラメーター調整
先程2枚の流星が検出されたJPGファイルがリストされました。
実は流星が写っているのは2枚だけではないのです。なぜ検出されないかの1つの理由が流星として判断する線の長さのようです。
この長さの閾値がプログラムの説明には書いてませんが、パラメーターとして調整可能です。
このように先程の実行時に入力した後ろに--line-threshold 60と入力してみました。これが長さの閾値でデフォルトでは100だったところを60にしています。
python3 detect_meteor.py ../meteor_photos --line-threshold 60
そうすると detected: 7/13 と7枚の画像に流星が含まれていると判断されました。
このパラメーターは実際の撮影状況(おそらく画角や露光時間)によって、流星の長さに違いがでるのでそれぞれの条件で試してもらうのがいいと思います。
いかがでしたでしょうか?
かなりニッチな記事かつ長くて面白くない記事だったかと思いますが、何百枚・千枚以上のという枚数を撮影してしまった人には有用かと思います。
試してみたいという方はこの手順を頭から順に試してみて、トライしてみていただければと思います。(この手順で動かなかったという方は、TwitterでDMいただければベストエフォートで対応するかもしれません。)
この記事が気に入ったらサポートをしてみませんか?