Deep Sky Memories

横浜の空で撮影した星たちの思い出

M16 わし星雲 (2021/6/9) / StarNet++ TF2 について

6月9日*1 は梅雨の晴れ間で新月期ということで天体撮影。体調は悪かったのですが、前夜、夜明け前にコンビニに行った時に木星がよく見えていたのに撮れなかった(温度順応待ってる間に夜が明けてしまうので)のが悔しかったので、無理して撮影しました。*2

土星木星が昇る深夜までに何を撮ろうかと考えて、M16 わし星雲を撮ることにしました。M16 は4年前スカイメモS時代にレデューサー付きで撮って以来で、8cm F6 直焦点で撮るのは初めてです。

23:00前から撮影して、6分露出で2コマ毎に PHD2 の手動ディザで22コマ撮りました。ガイドはマルチスターガイドのおかげで絶好調(RMSエラーの Total が1.0"以下)。ディザに時間を取られて*3 1:40 頃までかかりました。23:00前の2コマは低空で背景が明るかったのでボツにして20コマをスタックして仕上げました。

M16 わし星雲 (2021/6/9 23:01)
M16 わし星雲 (2021/6/9 23:01)
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折), LPS-D1 48mm / Vixen SX2, D30mm f130mm ガイド鏡 + ASI290MC + PHD2 2.6.9dev4 による自動ガイド / OLYMPUS OM-D E-M1 Mark II (ISO200, RAW) / 露出 6分 x 20 総露出時間 2時間 / DeepSkyStacker 4.2.6, Lightroom Classic, StarNet++ (7079110, TF2), Photoshop 2021 で画像処理

むむむ、やはり「わし」の翼は淡くてほとんど見えませんね… かなり頑張ってあぶり出してこれです。無改造デジカメではこんなものでしょうか。

M16 わし星雲 中央部 (2021/6/9 23:01)
M16 わし星雲 中央部 (2021/6/9 23:01)
撮影データは上に同じ。

中央部の「創造の柱」はそこそこよく写りました。ガス雲の中で星が生まれていることから付いた名ですが、これってアマチュアの機材でも赤外で撮ったら柱の中の星写るんですかね?

マスク処理用画像には StarNet++ を使いましたが、今回はまだ正式にリリースされていない TensorFlow 2 バージョンを使いました。

実行には Python の実行環境が必要です。以下最新の Anaconda 環境で、の使い方です。

  • conda install tensorflow で TonsorFlow をインストール。
  • github から starnet_v1_TF2.py をダウンロード。
  • dropbox から starnet_weights2.zip をダウンロード。
  • 適当にフォルダを作って starnet_v1_TF2.py と starnet_weights2.zip を展開して出てくるファイルを全部コピー。
  • 同フォルダに run.py を作成(後述)
  • python run.py {入力ファイル(カラーTIFF)} {stride} を実行

フォルダのファイル一覧はこんな感じになります(__pycache__ フォルダは実行後に生成されるものです)。

https://rna.sakura.ne.jp/share/starnet-TF2.png

run.py は以下のコードです。

import tensorflow as tf
from PIL import Image as img
import logging
tf.get_logger().setLevel(logging.ERROR)
from starnet_v1_TF2 import StarNet

import tifffile as tiff
import sys
import os.path as path

stride = int(sys.argv[2]) if len(sys.argv) > 2 else 128

starnet = StarNet(mode = 'RGB', window_size = 512, stride = stride)
starnet.load_model('./weights', './history')

in_name = sys.argv[1]
name, ext = path.splitext(in_name)
out_name = name + '_starless' + ext
starnet.transform(in_name, out_name)

サンプル(starnet_v1_TF2_transform.ipynb)を参考に書きました。モノクロTIFFの場合は mode = 'RGB' のところを mode = 'Greyscale' に書き換えてください。

元画像 hoge.tiff を引数に渡すと元画像と同じフォルダに foo_starless.tiff が出力されます。stride は StarNet++ 1.1 の stride と同じです。デフォルトは 128 です。進捗状況は一切表示されないのでひたすら待ってください… Core i5-6600 3.3GHz で30分くらいかかりました。

結果ですが、StarNet++ 1.1 で気になっていた星のあった場所の穴埋め部分に出る網目状のノイズが少なくなっている気がします。僕の撮る写真はどれも光害でガビガビなので実力がイマイチわかりませんが、どなたかよく撮れた写真で試してみてください…

ところでまた黄色カブリが発生しました。以前 RedCat 51 で出たのと似たようなカブリです。RedCat 51 のせいじゃなくて E-M1 Mark II のせい?フラット処理はしているのですが、フラットの品質があまりよくなかったせいか、星雲をあぶり出すため強い処理をすると浮かんできました。

今回はカラーバランスをいじって誤魔化しましたが、E-M1 Mark II のせいだとすると困るなぁ… これは CMOS カメラ買えということですか!?

*1:初出時タイトルと冒頭の部分で6月10日としていましたが誤りでしたので訂正しました。

*2:翌日潰れました…

*3:赤緯軸が移動先で止まらずハンチングを起こすので安定するまで時間がかかる…

Galaxy Annotator v0.9 (スタイル設定機能強化版)をリリースしました

銀河専用アノテーションツール Galaxy Annotator について、当初から要望がありながら先延ばしになっていたスタイル設定機能の強化を一通り実装したバーション(v0.9)をリリースしました。

スクリプトの修正は galaxy-annotator.py のみです。

機能強化の内容ですが、まず style.jsonSVG 1.1 でスタイルシートに書ける設定(スタイルプロパティ)は、JSON の文法でですが、原則何でも指定できるようになりました。文字の透明度、文字の装飾、点線の設定等々。スタイルの文法チェックは一部を除いて行っておらずほぼ素通しですので、書き間違いにはご注意ください。*1


もう一つの機能強化は、個別の銀河毎のスタイル設定機能です。galaxies.json の銀河オブジェクト内に style.json と同じ書式でスタイル設定を記述すると、それがその銀河だけに優先して適用されるスタイル設定になります。

大きな銀河のラベルは大きな文字にしたい、銀河が密な領域で個々の銀河のラベルの配置(後述)を変えてラベルの衝突を避けたい、等の場合に手動になりますが galaxies.json の方で調整ができるようになりました。

もう一つの機能強化は、ラベルの配置設定機能です。marker のスタイル設定の label-position と label-vertical-align でラベルの配置を指定できるようになりました。百聞は一見に如かず、ということでこんな感じになります。

https://rna.sakura.ne.jp/share/galann/label-position-all.jpg

https://rna.sakura.ne.jp/share/galann/label-vertical-align-all.jpg

これをうまく使うとラベルの衝突や大きな銀河でラベルが銀河から離れすぎる問題にある程度対処できると思います。詳しい仕様は添付文書の「ラベルのレイアウト」を参照してください(リンク先は最新版)。

マーカーの大きさを自動調整する機能も追加しました。マーカーの大きさは size で視直径の何倍にするかを、min-r で最小の半径を設定できるのですが、小さな銀河に合わせて大きめの size を指定すると、写真の主題になる大きな銀河ではマーカーが大きくなりすぎる問題がありました。

銀河の大きさに合わせて size を賢く自動調整していい感じの大きさにしたいところですが、設定パラメータが分かりやすいように新たな設定項目 min-size, min-size-r を追加して、以下のような単純なルールで調整するようにしました。

  • min-size はマーカーの倍率の最小値。
  • マーカーの倍率は銀河の(長)半径に応じて、半径 min-r で size 倍、半径 min-size-r で min-size 倍になるようリニアに変化する。
  • min-size プロパティと min-size-r を省略した場合は銀河の半径によらず常に倍率ば size 倍。

最後にちょっとした機能追加ですが、desc のスタイルに line-height を追加しました。1.05 とか指定すると行の高さが 5% アップします。フォントによって行間が詰まり過ぎる場合に使ってください。

以上色々仕様が拡張しましたが、デフォルトでは今までと同じスタイル設定になるようにしたつもりです。バージョン 1.0 未満のベータ版みたいなものなので、互換性の維持は必ずしも約束できませんが、あまりに変なところがあったら直すかもしれません。

全部で700行にも満たない小さなスクリプトですが、かなり仕様が複雑になってきたので、なぐり書き状態のままでは品質の維持が難しくなってきました。ラベル配置のあたりは設定の組み合わせが45通りあってテストが大変でした… しばらくはモジュール化や自動テストの追加といった作業が続くと思います。

v1.0 に向けた目標ですが、コマンドの実行方法をもう少し簡略化する方法を考えたいと思います。導入方法についてはだいこもんさん(id:snct-astro)の記事のおかげで少しはわかりやすくなったとは思うのですが、*2

https://snct-astro.hatenadiary.jp/entry/2021/05/29/010041

本格的に色々試そうとすると、今は個々のコマンドの引数が多くて中間生成物の依存関係も把握しておく必要があり、なかなか扱いづらい面があります。

依存関係のある生成物をまとめて記述したプロジェクトファイルを用意すれば後は設定変更に合わせて必要な処理だけ再実行して最終生成物が自動的に更新される、みたいなことができれば、と思っています。このへんができると GUI 化も視野に入ってくるのですが…

あと、銀河以外の天体のアノテーションについても考えていますが、HyperLeda とは別のデータベースに対応する必要があるため、これはもう少し先になると思います。

*1:なお、SVG のショートハンドプロパティ(複数のプロパティをまとめて記述できるプロパティ)の font プロパティについては、描画には反映されますが、ラベルのレイアウトが崩れます。これはレイアウトのために font-size プロパティを使用するのですが、font プロパティから font-size 値を抽出していないからです。これは当面制限事項とさせてください。

*2:どうもありがとうございます。

皆既月食は見えませんでしたが… (2021/5/26)

5月26日の皆既月食、一応前の晩からベランダに赤道儀を設置して極軸を合わせておいたのですが、くもりの予報だったので連続写真の撮影は諦めて、なんとか雲の隙間から皆既中の月を撮れないかと粘ったのですが、ダメでした。

皆既の終わりの30分後の21:02頃から微かに雲の向こうに月の明かりが見えてきたので、さらに粘っていたら、21:20頃から雲越しに半分くらい欠けた月がぼんやりと姿をあらわしました。

雲はかなり厚く、8cm F6 + 2xテレコンでは暗すぎてどうにもならないので、テレコンを外し、雲越しでもひときわ輝いて見えるアリスタルコスと月の縁を使ってピント合わせ。少しでもハッキリ見えてきたところで連写、を繰り返してなんとか撮れたのがこれでした。

月食 (2021/5/26 21:28)
月食 (2021/5/26 21:28)
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折), OLYMPUS EC-20 2x TELECONVERTER (合成F12) / Vixen SX2 / OLYMPUS OM-D E-M1 Mark II (ISO800, RAW) 露出 1/60s x 24/32コマをスタック処理 / AutoStakkert!3 3.0.14, RegiStax 6.1.0.8, Photoshop 2021, Lightroom Classic で画像処理

連続で100コマ以上連射した部分からスタックしようとしたのですが、雲の通過のせいか stabilization がうまくいかずそのままスタックするとブレたような画像になってしまったので、比較的画像が安定している連続32コマから24コマをスタックして、ピント合わせの時に見えていたアリスタルコスや虹の入江の形もなんとか見えるように仕上げられました。

月食の間はベランダに置いたタブレットと部屋の中のPCで、サイトロンジャパン×天文リフレクションズ共催のライブ配信「5.26皆既月食ライブリレー」を流していました。東北と北海道の方は結構晴れていたようでネット越しではありましたが皆既の赤い月を見ることができました。

部屋ではもう一台のPCで名取天文台の皆既月食オンライン観望会も流していました。こちらは YouTube にダイレクトに配信していたからか画質も良く、素晴らしい映像が楽しめました。*1

18:30頃からベランダに出たり入ったりしていたのですが、さすがに疲れてきたので20:00頃からは ASI290MC に付属の魚眼レンズを取り付けたものをカメラ三脚に据え付けてベランダに出して、部屋のPCから空の様子を監視できるようにしました。おかげで雲がわずかに薄くなってきたのにもすぐ気付けたというわけです。

というわけで残念な結果にはなりましたが、配信でワイワイ盛り上がりながら部分月食とはいえリアルでも月食が見れたので、まあこういうのも悪くないな、という一日でした。

*1:ライブリレーの方は仕組み上 zoom の会議室映像を YouTube に再配信する形だったので画質の方は悪くはないけどもう一つ… という感じでした。

Galaxy Annotator v0.8 (距離精度向上版)をリリースしました

銀河専用アノテーションツール Galaxy Annotator の距離表示機能ですが、やはり近距離の銀河の距離の精度が悪すぎるのが気になり出したので対応版(v0.8)をリリースしました。

スクリプトの修正は leda-votable-to-galaxy.py のみです。距離表示を使わない人はスキップして構いません。

元々距離表示は億光年単位の遠方の銀河の距離を表示するために作った機能なので、赤方偏移(視線速度)のみを元にして距離を計算するという仕様だったのですが、近距離の銀河ではデタラメの数字になってしまうのがやっぱり我慢できなくなりました。M33 が9100万光年になったり大マゼラン雲(PGC17223)が1400万光年になるのはいくらなんでも…

HyperLeda では mod0 という項目があり、ここに赤方偏移以外の方法で測定した距離*1が距離指数(distance modulus)の形で入っています。ここでの距離は光度距離なので光路距離に変換してあります。*2

これに伴い近距離の距離表示の不具合(100万光年未満の距離表示がゼロになる、距離に関わらず100万光年より下の桁が四捨五入されてしまう)を修正しました。

また、今まで遠方の銀河でも100万光年の桁まで表示するという変な丸め処理をしていたのですが、v0.8 からはシンプルに有効桁数(デフォルト3桁)より下の桁を四捨五入して丸めるようにしました。有効桁数は -p オプションで任意の桁を指定できます。

v0.7 までの計算方法と丸め処理は互換性オプションを指定すると v0.8 今でも利用できます。ただし不具合までは再現しません。

ということで、これで M33 は286万光年、大マゼラン雲は16.4万光年と表示されるようになりました。v0.8 で対応予定だったアノテーションのレイアウトやスタイル指定の機能追加は v0.9 以降でやります…

実は v0.8 での M33 のアノテーション処理の作例を貼ろうと思ったのですが肝心の名前と距離の表示が画面の外に出てしまって役に立たない事が判明。やはりレイアウト関係をなんとかしなくては…

とりあえずしし座4重銀河のサンプルを。

しし座4重銀河(NGC3189, NGC3193, NGC3187, NGC3185) (2021/3/14 20:45) (17等までの銀河をアノテーション処理(v0.8))しし座4重銀河(NGC3189, NGC3193, NGC3187, NGC3185) (2021/3/14 20:45) (17等までの銀河をアノテーション処理(v0.8))
笠井 BLANCA-80EDT (D80mm f480mm F6 屈折) / Vixen SX2, D30mm f130mm ガイド鏡 + ASI290MC + PHD2 2.6.9 による自動ガイド/ ASI290MM (ゲイン75) / 露出 2分 x 60コマ 総露出時間 2時間 / DeepSkyStacker 4.2.2, Photoshop 2021, RegiStax 6.1.0.8, Lightroom Classic で画像処理, GalaxyAnnotator v0.8 でアノテーション処理.

距離の精度改善で以下のように変わりました。

  • NGC3193: 6600万光年 → 1億900万光年
  • NGC3190: 6400万光年 → 7870万光年
  • NGC3185: 6000万光年 → 7830万光年

このくらいの距離の銀河でも結構差がありますね。

*1:複数の測定結果を加重平均したものです。

*2:近距離では光度距離も光路距離もほとんど差は出ませんが念の為。

Galaxy Annotator v0.7 (Windows 対応版)をリリースしました

銀河専用アノテーションツール Galaxy AnnotatorWindows の Anaconda 環境でうまく動かないという問題が報告されたので、対応修正版(v0.7)をリリースしました。

Windows の Anaconda 環境で python スクリプトの出力をリダイレクトすると UTF-16 で出力されてしまうようで、leda-votable-to-galaxy.py の出力が文字化けする(UTF-8 で保存されない)という問題がありました。

この問題に対応するため leda-votable-to-galaxy.py, leda-get-votable.py の出力先ファイルは第2引数で指定できるようにしました。今まで通り第2引数なしでリダイレクトで出力することも可能ですが、上記のように Windows 環境では文字化けすることがあるので第2引数の指定を推奨します。

また、Windows 環境では galaxy-annotator.py に文字化けしていない JSON ファイルを指定してもエラーになるため、これも対応修正を入れました。

いずれも Windows 側での環境設定で回避可能なようですが、簡単ではないようなので(特に Anaconda の標準環境である PowerShell では)対応することにしました。

なお、Windows では python スクリプトをそのままコマンドとして実行できないので以下のようにして実行します。

python leda-votable-to-galaxy.py wcs.fits votable.xml

Linux, macOSUnix 系のOSならスクリプトに実行パーミッションを付ければそのままコマンドとして実行できますが、混乱を避けるために README.md の例は全部上の形式に変更しました。

アノテーションのレイアウトやスタイル指定に関する要望もいただいているのですが、そのあたりは v0.8 で対応予定です。

Galaxy Annotator v0.6 (不具合修正版)をリリースしました

昨日公開した Galaxy Annotator の不具合修正版(v0.6)をリリースしました。

写野に等級データのない銀河があると、-m オプションを指定した leda-votable-to-galaxy.py がエラーで落ちるというものです。v0.6 でもデフォルトはエラーで止まる仕様ですが、どの天体でエラーになったか出力するようになりました。

そして -s オプションでエラーになる天体をスキップする(出力に含めないようにする)か、-i オプションでエラーになった天体もエラーを無視して出力するかを選べるようになりました。

エラーになるのはほとんどが小さくて暗い銀河ですし、赤方偏移データもない(距離が計算できない)場合が多いので、基本 -s オプションでスキップしても構わないと思います。表示したい銀河を個別に選びたい場合は -i オプションで全部出力してから、出力した JSON ファイルを手で編集することになります。写野が広いと大変ですが…

あと、等級のチェックの際に it (I magnitude)がなければ vt (V magunitude)を使っていたのですが、念の為それもなければ bt (B magunitude)も使うようにしました。


ところで、タイミングの悪いことに今朝から astrometry.net に障害が発生していて(画像のアップロードはできるものプレートソルブのジョブが開始しない)、Galaxy Annotator を試そうとした人が試せない*1という状況でした。今は復活していますがWebサービスだとこういうことがあるから困りますね。

wcs.fits はローカルにインストールした astrometry.net でも出力され、Galaxy Annotator でも利用できる事を確認しました。All Sky Plate Solver (ASPS) も wcs.fits を出力できるそうで、まだ試せていませんが、たぶんこれも利用できると思います。ASPS も中身は astrometry.net のコードを使っているようなので。*2

astrometry.net も ASPS もインデックス(星表データ)のダウンロードが大変でなかなかローカルにインストールするのもお勧めしづらい状況です。astrometry.net はインデックスを全部インストールしたら 30GB 越えました…

ASPS は機材の焦点距離等に合わせてインデックスを選別してインストールする機能があるのですが、ネットワークエラーでダウンロードに失敗するたびダイアログが出て処理が止まるので放置してるとインストールが終わりません…

あと、出力した SVG がブラウザ以外だと Inkscape ぐらいでしか開けないという問題ですが、PixInsight でも開けるそうです。*3

*1:過去に astrometry.net を使ってても wcs.fits をダウンロードして取ってある人は滅多にいないでしょうからね…

*2:ぐらすのちさん(id:fornax)の見せてくれたFITSヘッダを見る限り使えそうです。

*3:PixInsight は持っていないのですが、だいこもんさん(id:snct-astro)に教えていただきました。

WIKISKY.ORG で遠方銀河の距離を表示するスクリプトを作成しました

WIKISKY.ORG で銀河をクリックして表示される画面に何億光年等の距離情報を表示するための Greasemonkey スクリプトを作成しました。github で公開しています。

v1.0 のダウンロードはこちらから。

スクリプトが3つあるので全部 Greasemonkey にインストールしてください。インストール後は、WIKISKY.ORG で天体をクリックすると表示される個別天体画面に以下のように天体名の下に距離表示が出るようになります(ポップアップブロックの警告が出たら許可してください)。

https://rna.sakura.ne.jp/share/ltdv4wikisky-pgc169105.png

WIKISKY の個別天体画面がタブで開いた時に立て続けに二つタブが開いてすぐ閉じます(ちょっとウザい…)。一つは HyperLeda (のミラー)で、もう一つは Ned Wright's Javascript Cosmology Calculator です。HyperLeda から取得した赤方偏移データを Cosmology Calculator に渡して計算した光路距離を元のページに表示する、ということをやっています。

HyperLeda のサーバーが CORS (Cross-Origin Resource Sharing) に対応してくれればタブを開かずに XHR でデータを読み込めるのですが… Cosmology Calculator については JavaScript のみの実装なのでコードをコピーすればページを開かなくてもよいのですが、著作権の問題がある(OSSではない)のでこうしています。

天体写真に写った銀河の距離情報を一度に取得してアノテーションまでしたい!というニーズに対しては昨日のエントリで紹介した Galaxy Annotator を使ってください(要 Python)。

というか、本当は LightTravelDistanceViewerForWikisky (LTDV) の方を先に作っていて、それで表示した何億光年とかを書き込んだ天体写真を Twitter で見せびらかしていたら、だいこもんさん(id:snct-astro)に、アノテーションは自動じゃないのか、みたいに残念がられてしまったので Galaxy Annotator を作ったのでした…

LTDV は、これはこれで気軽に距離を調べられるので便利に使えると思います。ていうか、今 http://nova.astrometry.net/ が落ちてる(閲覧はできるが画像をアップロードしてもジョブが開始しない状態)ので…