ほしぞloveログ

天体観測始めました。

カテゴリ:software > JSol’Ex

前回示したように、画像の一部でドップラーシフトの連続変化が見えるなら、頑張れば画像全体でも見えるはずです。


今回は、全画面でのドップラーシフトをアニメ化する方法を探ってみたいと思います。いい機会なので、JSol'Exの強力なスクリプト言語のImage Mathを使ってみようと思います。


1. 自動画像生成+マニュアルでアニメ化

まずは連続波長ずれ画像(静止画)を出力する一番簡単な方法です。

とりあえず、JSol'Exでserファイルを開いて、「Custum prosess」を選んで「Mode」を「Simple」にして、下の「Select all」ボタンを押し、右上の数字が並んでいるところに「-10;-9;-8;-7;-6;-5;-4;-3;-2;-1;0;1;2;3;4;5;6;7;8;9;10」などと入れてやって、-10pixelから+10pixlelまでシフトした画像を生成してくれます。
redshift_cut

autostrerchフォルダなどに出力された21枚の画像を、適当なツールを使ってアニメ化するというのが、まずは一つ目の簡単な方法になります。例えば、PixInsightのBlinkで動画化することができます。

実際に作って見ました。ブログに載せるために縮小してgif化してますが、これだけでも迫力があります。
Blink_10_blog

一旦はこれで作ったのですが、でもまだまだ不満が残ります。


Image Math

まず、どれだけ波長がシフトしているかの数字を画面内に入れたいのですが、なかなかいいツールが見つかりません。高々20枚ほどなのでPhotoshopなどでマニュアルで入れるのでも構いませんが、JSol'ExのImageMath機能を使うと、さらに細かいことが色々できるみたいです。せっかくなので、ここで使い方を一通り把握しておきたいと思います。

まず、マニュアルや解説に相当するページですが、以下の4つくらいでしょうか。

https://melix.github.io/astro4j/3.3.1/en/jsolex.html
https://melix.github.io/astro4j/3.3.1/en/imagemath.html
https://youtu.be/l6tb-UFC6Zs?si=oyHAQhvETiXK3iJe
https://youtu.be/8XKzFcmvqfI?si=GXIArv_YOCPATGgI

上の2つはバージョンごとにページがあるので、今使っているバージョンのものを見るといいでしょう。アドレス内の数値を自分のバージョンに合わせてください。いっそのこと最新バージョンの3.3.1を落とすのもいいでしょう。このJSol'Exですが、まだ開発絶頂期の範囲なのか、バージョンアップの頻度がものすごいです。私が使い始めたわずか2週間の間に、3.2.1から3.2.2、3.3.0、3.3.1と、3回もアップデートしています。

下の2つは動画ですが、1つ目は基礎からImageMathまでわかりやすく英語で解説してくれています。え?日本語でないからわかりにくい?いやいや、2つ目の動画はImageMath専用の解説ですが、フランス語です。私は大学でフランス語を選択してましたが、今では全くわかりません。作者が解説してくれているJSol’Ex関連のビデオは結構たくさんあります。

https://melix.github.io/blog/jsolex.html

でも見てみるとわかりますが、21本中英語版はわずか3本、他は全部フランス語です。なので英語にしてくれているものは大きな情報源になり、かなり助かります。でもフランス語でも画面を見ているとわかるところもあり、特にImageMathについてはソースコードを見るとわかることも多いので、多少は役に立つと思います。というか、他の方のものなども散々探しましたが、どうもこれくらいしか解説はないようです。


Image Mathを使ってみる

実際にImageMathを触るときは、まずはサンプルコードを見るといいでしょう。JSol'Exのメニューの「Tools」から「Image Math editor」を選びます。出てきた画面で「Sample scripts」を押すと、いくつかの例が出てきます。

IM_card

この中で一番わかりやすいのは「Technical card」でしょうか。Full modeで緯度とか経度が書き込まれるcardという画像が出ていますが、それと同じ画像を作るスクリプトです。中身はこんな感じです。

#
# Generates a technical card similar to the built-in one
#

[params]
gamma=1.5
cropFactor=1.2

[tmp]
contrast=sharpen(auto_contrast(img(0);gamma))
cropped=autocrop2(contrast;cropFactor)
globe=draw_globe(cropped)

[outputs]
techcard=draw_solar_params(draw_obs_details(globe))

まずはこのスクリプトを、そのままSaveボタンを押して適当な名前をつけてどこかに保存してみてください。

次にserファイルを開いて、「Custum process」に進んで、出てきた画面の右上の「Mode」を「ImageMath」にします。右横の「Open ImageMath」ボタンを押してエディタを開き、「Load」ボタンを押して先ほど保存したファイルを開きます。

もし先ほどのスクリプトを保存していない場合は、ここであらためて「Technical card」を選択してもいいですが、SaveしてLoadせずに進めると何も読み込まれない状態になってImageMathの処理がされないので注意です。それから、ここで開いたサンプルファイル一覧では、「Tools」から「Image Math editor」から開いた場合で見たサンプルファイル一覧に出てくるものより少ないものしか出てこないので、これも注意です。なので、サンプルファイルは基本的にはメニューの「Tools」から辿って開くようにした方がいいいです。

Image Math editorの「Ok」ボタンを押し元の画面に戻って、「Unselect all」を押します。これでImage Mathの処理のみが行われるので時間の節約になります。JSol'Ex上に処理された緯度経度情報が入った画面が表示されると思います。その後のスクリプトの改造ですが、この画面の右下にImageMath scriptという場所があって、そこに先ほどのソースコードの内容が表示されていると思います。ここをいじっていきます。

手始めに、このモノクロのcard画像をカラー化してみましょう。

まず[param]、[tmp]、[output]の3つのパートに分かれているのがわかります。[param]は変数 (数値) の定義、[tmp]は内部的な画像処理で、[outputs]で指定されたもののみが実際の画像として出力保存されます。

改造のための情報を得るために、関数リファレンスページでコントロールキーとFキーを押すなどして「color」などとページ内検索します。どんなコマンドを使えばいいかはこの関数リファレンスページの関数一覧を一通り読むか、他のサンプルファイルを読み込んでみるといいでしょう。検索すると「COLORIZE」という関数が出てきます。使用例には

colorize(img: img(0), profile: "H-alpha")
colorize(range(-1, 1), "Calcium (K)")

などと書かれていますが、これを参考にします。例えば今処理しているcardスクリプトでは[tmp]の最後にglobeという画像が出来上がっているので、同じ[tmp]のところに

colorized=colorize(globe;"H-alpha")

という1行を追加して、colorizedという変数に画像を入れてみましょう。上の使用例と結構違っているので注意が必要です。それぞれの引数の間は「, (カンマ)」ではなくて、「; (セミコロン)」が標準みたいです。カンマでもいいみたいなのですが、サンプルコードでは全てセミコロンになっているので、私もセミコロンで統一することにしました。あと、引数のところの「img」とか「profile」は入れても入れなくてもいいみたいですが、入れるなら全て入れて、入れないなら全て入れないようにしないとダメみたいです。他のサンプルコードを見ると、入れない方が標準みたいです。

あとは、[output]の中の1行を

techcard=draw_solar_params(draw_obs_details(colorized))

のように書き換えて、先ほど作ったcolorizedを引き継ぎます。これでもう一度JSol'Ex画面右下のImage Math Scriptの「Run」ボタンを押して走らせるとカラー化された緯度軽度情報が入った画像が出来上がる位はずです。ただし、ここで書き換えたスクリプトはあらわにセーブしないと、再度立ち上げた時には元のモノクロの状態のスクリプトしか残ってないので、気をつけてください。

ちなみに、ここで出来たカラー画像ですが、フルモードなどで自動で作ったカラー画像とは色使いが違います。自動処理の方のカラー化はもう少し凝ったことをしているようです。


2. Image Mathで全画面ドップラーシフトをアニメ化

ここまででImage Mathの使い方のきっかけくらいは掴めたのかと思います。次は目的の全景のドップラーシフトアニメーションを作ってみましょう。といっても、これもサンプルファイルがあります。同様にImage Math editorで見えるサンプルリストの中から「Continuum animation」を選びます。以下のような内容です。

#
# Creates an animation of the continuum
#

[params]
# the animation will be created with images from [-shift;+shift]
shift=5
# autocrop factor
cropFactor=1.1
# contrast adjustment
gamma=1.2
# interpolation steps
steps=5
# delay between frames
delay=20

[tmp]
continuum=transition(range(-shift,shift);steps)
cropped=autocrop2(continuum;cropFactor)
contrast_adjusted=auto_contrast(cropped;gamma)

[outputs]
continuum_anim = anim(contrast_adjusted;delay)

このコードをそのまま使ってもいいのですが、前回のアニメであったような波長などの書き込みはありません。ここでは練習として、動画の各画像にテキストで波長を書き込んでみましょう。

使うコマンドはdraw_textです。[tmp]の最後に1行

text_added=draw_text(contrast_adjusted; 200; 2900; "Shift from Hα: %SHIFT%Å", 72; "FFFFFF")

を付け加えます。200とか2900は位置なので、自分の画像の大きさに合わせて適当に数字を変えてください。%SHIFT%はリファレンスマニュアルのdraw_textのところに書いてありますが、あらかじめ予約されている変数で、単位がÅに換算されたそれぞれの画像の波長のずれを表します。72はフォントの大きさです。こちらも適当に変えてください。FFFFFFは色で、RGBを各2バイトで表していて、この場合はRもGもBも255で一番明るくしてあるので白色になります。

[outputs]内では、最後の行を以下のようにtext_added変数を引き継いだ形に変更します。

continuum_anim = anim(text_added;delay)

基本的にはこれで走るはずですが、[params]内にある数値に少し触れておきます。
  • まず、shiftですが、これは[tmp]内のrange関数の引数に使われます。単位はピクセルなので、serファイルのHαの中心線から上下5ピクセルを処理します。ここは10くらいにしておくと楽しいでしょう。
  • stepですが、transition関数引数で使われていて、1ピクセルと1ピクセルの間を何枚補完するかになります。5の場合はかなり滑らかになります。ただし、先ほど表示したテキストの波長は間が補完されず、元画像の飛び飛びの波長しか出せないみたいなので、私はここは1にしました。
  • 最後delayですが、[output]のanim関数の引数で使われていて、フレームとフレームの間の時間で、単位はmsです。これはshiftとstepの数に合わせて調整しますが、私は1波長1枚としたので、ここでは200としました。

出来たスクリプトは以下のようになります。

#
# Creates an animation of the continuum
#

[params]
# the animation will be created with images from [-shift;+shift]
shift=10
# autocrop factor
cropFactor=1.1
# contrast adjustment
gamma=1.2
# interpolation steps
steps=1
# delay between frames
delay=200

[tmp]
continuum=transition(range(-shift,shift);steps)
cropped=autocrop2(continuum;cropFactor)
contrast_adjusted=auto_contrast(cropped;gamma)
text_added=draw_text(contrast_adjusted; 200; 2900; "Shift from Hα: %SHIFT%Å", 72; "FFFFFF")

[outputs]
continuum_anim = anim(text_added;delay)

走らせた結果ですが、以下のようになります。ブログにアップロードできるように、元々出力された3040x3040のmp4ファイルを600x600のgifに落としています。無事に数値が入って、わかりやすくなりました。

step
  • 撮影日: 2025年6月18日7時13分
  • 撮影場所: 富山県富山市自宅
  • 鏡筒: Takahashi FC-76(f600mm、F7.9) 
  • 分光器: SHG700
  • 赤道儀: Celestrn CGEM II
  • カメラ: ToupTek G3M678M
  • 撮影: SharpCap Gain 200 (=6dB)、露光時間1ms、ROI: 3840x100、平均381fps
  • 画像処理: JSol'Ex

これでももう結構十分で、ここでフルサイズの画像をアップしてもいいのですが、追加でもう一つ手法を紹介します。


3. もっと簡単な全画面ドップラーシフトのアニメ化の方法

Image Mathをある程度見てみて、上の動画まで完成させた後に、もっとはるかに簡単に全景画像を作る方法があることを知りました。悔しいですが、紹介しておきます。

処理したいserファイルを、Quick modeで一度処理します。出てきた画像の上で、コントロールキーを押しながら左クリックで処理したい部分を選択します。そして右クリックして「Create animation or panel」を選択します。

anime_select

すると次のような設定画面が出るので適当に設定して「Generate」ボタンを押します。
anime_setting

時間がかかりますが、処理が終わると以下のような画像と動画ができます。
07_13_53-trimmed_0000_07_13_53-trimmed_custom-panel_cut

out

上の動画はブログ用に縮小しています。フルサイズの動画はここにおいておきました。どうもショート動画になってしまうようですが、かなりの解像度なのでぜひ全画面化や、さらに拡大して見てみてください。

この領域選択はどこでもできます。最初からこんな大きな全景範囲で処理すると大変なので、まずは小さなサイズで試してみるといいと思います。例えばプロミネンスなどです。

out

この便利な機能、マニュアルにも記述がないみたいです。


まとめ

今回は3通りの全画面の連続波長ずらしのアニメ化の方法を示しました。本当は2つ目までだったのですが、一旦2つ目までの記事をほとんど書き終えてから3つ目の画像の一部選択の方法があることを知りました。まさか全画面ではできないかと思っていたら、あまりに簡単にできてしまったので、悔しかったですが紹介することにしました。でもまあ、Image Mathの使い方がわかったからよしとしましょう。

次の記事はこのドップラーシフトの全景画像を使って、色々議論したいと思っています。


これまでSHG700を使った始動編として、基本的な太陽分光撮影の解説を、ハード面ソフト面に渡り記事にしてきました。今回からは徐々に応用編に入っていきます。と言ってもまだしばらくはJSol'Exの標準機能の範囲内の話です。でも、徐々にこれまであまり見ることがなかったものになってくると思います。

前回はSHG700始動編の(その5)でCaK線の撮影をしましたが、今回はもっと多波長で撮影してみました。


撮影途中で気付いたこともいろいろあるので、メモ代わりですが細かく書いておきます。


波長の選択

前回のCaKの分解能が悪かったので、まずはその再現性です。前回終了時の設定を何も変えずに、まずは1ショット撮影しておきました。その後、何が悪いのか見るために色々見てみると、輝線のピントがあった状態で、太陽光と背景の境目の縦線がボケボケでした。縦線は空間分解能に聞くはずなので、何か設定がおかしいようです。ちなみみ、撮影した動画ファイルからCaKの全景を再構築して見てみると、雲が通過していて全景を見るのが厳しかったですが、分解能は前回と変わらずやはりだめそうです。

CaKの分解能がダメそうだったので、次にHαに戻して分解能が回復するかを見ることにしました。その後、波長を順次短くしていっていくつかの代表的な波長を撮影し、再びCaKに再挑戦することにしてみました。

順序としては、
  1. Hα (6562.81Å)
  2. Na D1 (5889.95Å)
  3. Mg b1 (5183.62Å)
  4. Hβ (4861.34Å)
  5. Hγ (4340.47Å)
  6. CaK (3933.66Å)
としました。

この内、HγはJSol‘Exでの全景再構築時に選択肢として出てこないので、JSol‘Exのメニューの「Tools」から「Spectral ray editor」を選び、以下のように名前と波長を入れてやります。
スクリーンショット 2025-07-04 142837_cut
波長を入力するとそれに応じた色が勝手に付きます。でもこの色、ちょっと微妙で、出来上がる画像は設定通りになかなかならないことがわかりました。あとで画像と一緒に検討します。


ピント合わせの自由度

何度か波長を変えていくうちに、ピント合わせ方がある程度確立しました。前々回の記事でCaKに挑戦したときのピントは今思うと大幅にずれていたので、分解能が出なかったのも納得です。

まず自由度の数ですが、SHG700の部分に回折格子の回転 (固定ネジを緩めてラフに回転+マイクロメーターで微調整) と、レンズについているマイクロメーターが2つと、鏡筒のフォーカサーが1つで、合計4つあります。具体的に番号を振っておきます。
  1. 回折格子
  2. コリメーターレンズ
  3. カメラレンズ
  4. 鏡筒フォーカサー
調整を難しくしている一つの原因が、これらの自由度が独立ではなく、各自由度の調整が他の自由度に影響することです。ただし、順を追って調整することで、それぞれの位置が一意に決まることがわかってきたので、メモがわりに手法を書いておきます。ただし、今後もっといい方法が出てくるかもしれないので、とりあえず参考的な手順としてくらいです。また、この方法はSHG700で試しましたがSol'Exでも有効なはずで、また必要そうな精度も書いておいたので、どれくらい頑張って合わせれがいいかの目安にもなるかと思います。


波長を変えた時のピント合わせの具体的手順

A. まず最初に見たい波長を決め、回折格子の回転角度を決定します。
  1. 回折格子下部のネジを手で緩めて、回転台の切り欠き溝の真ん中を印刷されている目的の輝線にラフに合わせます。
  2. SharpCapの画面で見ながら、JSol‘ExのSpectrum browserで表示されるフランフォーファー線図と比較して、目的の波長の近くにいるか確認します。
  3. 似たような輝線模様が見つかったら、目的の輝線が画面の上下で真ん中になるように、回折格子についているマイクロメーターで合わせます。SharpCapで同心円と十字のレチクルを出しておくと合わせやすいでしょう。撮影時にはROIで上下100ピクセル内に輝線を入れる必要があり、そのために必要なマイクロメーターの精度は1-2目盛り程度になります。
付属のマイクロメーターは50目盛りが2回転すると1mm移動するので、1目盛りは10μmに相当します。回転角への変換係数がわからないので、角度の精度で議論はできないのですが、かなりの精度が必要なことがわかります。といっても、多少ずれていたとしても後からROIのTiltを変えてやることで、センサーのどこを見るかの位置調整ができるチャンスがあるので、ここではそこまで精度にこだわる必要はありません。ここで回折格子の回転角を決めたら、これ以上はもうこの自由度はこれ以上いじることはないです。というか、これ回折格子の回転角を以上いじってはいけません。もしいじると、また最初からやり直しです。

B. 次に、2のコリメーターレンズのマイクロメーターと、3のカメラレンズのマイクロメーターの2自由度を同時に動かします。
  1. SharpCapの画面を300%程度に拡大し、画面を右か左にスクロールさせて、太陽光が切れるところまで持っていき、ヒストグラムの一番右の線を左にかなり寄せて背景光の輝線が見えるようにします。
  2. 背景光で輝線がうまく出たら、さらに端に寄せて、スリットの境の光が見えるところと見えないところまで画面を持っていきます。ここで二段階目の調整をします。
  3. まずは3のカメラレンズのマイクロメーターを回して、画面の横向きの線のピントが合うようにします。
  4. 一旦横線のピントがあったら、次に2のコリメーターレンズのマイクロメーターを回して、縦の「光があるところとないところの境目」のピントを合わせます。
  5. ここを合わせると、3のカメラレンズのピントが少しズレるので、また3のカメラレンズのマイクロメーターを微調整します。この時に必要な精度は+/-2目盛りくらいです。かなりの精度が必要なことがわかります。
  6. 3を微調整したら、再び2のコリメーターレンズのマイクロメーターを微調整します。ここでの必要な精度は+/-7,8目盛りくらいでしょうか。こちらは多少大きく動かしてもいいでしょう。
  7. この2と3のマイクロメーターの調整を数回繰り返し、横の輝線と縦の光の境目の線の両方のピントが出るようにします。
うまく調整できると下の画面のようになるはずです。左の明るい部分が太陽の直接光で、真ん中の木線が見えている部分が背景光になります。

スクリーンショット 2025-07-04 092825
 
調整位置が決定したら、回折格子のマイクロメーターも含めて3つともこれ以上触ってはダメです。


C. 最後に、鏡筒のフォーカサーを調整します。
  1. ヒストグラムを調整するなどして、太陽の直接光の輝線が見えるようにします。
  2. フォーカサーのピントを調整すると、粒状斑や黒点などの瞬く縦線が濃く見えるところがあるはずです。
  3. 同時に、太陽光と背景光の境目のピントもぴったり合うはずです。
うまくいくと、下の画面のようになるはずです。
スクリーンショット 2025-07-04 092926

この段階で、縦線は見えるのに境目のピントが合わないとか、境目のピントを合わせると瞬く縦線が見えなくなる場合などは何かおかしいので、Bからやり直すことをお勧めします。ここでのフォーカサーの精度は使っている鏡筒に依るかと思いますが、微動減速装置が欲しくなるレベルです。まだ微動装置を付けていないので、ここのピント合わせに一番気を使います。

逆に言うと、SHG700にマイクロメーターが付いているために、回折格子と2つのレンズの調整がかなり楽になっているということです。この微調整の精度で、横向きの輝線のピントが波長分解能に効き、瞬く縦線や太陽光と背景光の境目の縦線のピントが空間分解能に効いてきます。画像の仕上がり精度にそのまま直結する部分です。Sol‘Exでは微調整の機構はないので、ここで苦労するのかと推測します。SHG700ではSol‘Exで大変だったところをきちんと改善しているのがわかります。

今回合わせたピントを合わせた状態で、前回分解能が出なかったCaKを改めて14枚スタックしてみました。見てもわかる通り、あからさまに分解能が増しているのがわかるので、とりあえずは子のピント出し方法でしばらくは続けていこうと思います。

IP_resize_lapl2_ap5118_IP


JSol'Exがよく止まる

今回、数多くの.serファイルをJSol'Exで処理して分かったのですが、処理中に結構頻繁にエラーが出ます。処理中にタスクマネージャーで見ていると、CPUパワーもメモリも9割以上使っていることが多いので、かなり重い計算をしているようです。撮影用のPCで画像処理もしているのですが、処理用のPCは別途もっと速くてメモリが多いものにするほうがいいのかもしれません。

エラーが出ると、途中で止まってしまったり、画像が最後まで生成されません。一見エラーが見えなくても、特にバッチ処理途中のエラーですでにログ上でスクロースされてしまっていてエラーじゃないと思っても、結局最後まで辿り着かずに止まってしまうこともあります。止まる確率は10%くらいでしょうか。バッチ処理ではいくつのserファイルは成功しても、一つでも止まってしまうものがあると、フォルダの中のどれが完了しているわからなくなるので、結局最初から全部やり直しています。複数のserファイルがあることになるので、全部が成功する確率は結構低くなってしまいます。完了したというメッセージが出ない時は、何か足りないファイルがあると思っていいでしょう。

JSol'Exのバージョン3.2.2がリリースされました。ちょっと重くなったように感じています。エラーの頻度も増したように思えて、最後までたどり着く率が下がった気がします。なので、私は今は3.2.1に戻して使っています。


特徴波長での画像

かなり寄り道をしてしまいましたが、今回撮影した各波長です。色はJSol'Ex標準にしています。細部出しとかも何もしていないので、拡大してみるとちょっと物足りないかもしれません。

各タイトルの波長の横に書いてある数字は、波長分解能になります。例えばHαなら
スクリーンショット 2025-07-05 101928
というように実測で0.091Å/pixelと評価できていて、実際に隣のピクセルとも有意な差が見えているので、分解能を0.091Åと言ってもよさそうです。この分解能は見ている波長によって変わってきて、波長が短くなるほど分解能が悪くなります。最初、あれ逆では?波長が短い方が精度がよくなって分解能もよくなるのでは?と思ったのですが、ピクセルサイズが決まっていてそこに短い波長を詰め込むと考えると、同じピクセルサイズなら見える波長の細かさは粗くなってしかるべきと理解できました。でも波長分解能の違いは、波長の違いの比のルートに比例するようです。1次でそのまま効きそうなので線形化と思いましたが、なぜルートに比例なのか?未だに疑問です。


1. Hα (6562.81Å), 0.091Å
09_39_22-trimmed_0000_09_39_22-trimmed_colorized_0_00
  • 撮影日: 2025年7月4日9時39分
  • 撮影場所: 富山県富山市自宅
  • 鏡筒: Takahashi FC-76(f600mm、F7.9) 
  • 分光器: SHG700
  • 赤道儀: Celestrn CGEM II
  • カメラ: Touptek G2M678M
  • 撮影: SharpCap Gain 200 (=6dB)、露光時間0.75ms、ROI: 3840x100、平均381fps
  • 画像処理: JSol'Ex、ImPPG

2. Na D1 (5889.95Å), 0.100Å
0000_08_24_28_colorized_0_00
  • 撮影日: 2025年7月4日8時24分
  • 撮影: SharpCap Gain 200 (=6dB)、露光時間0.75ms、ROI: 3840x100、平均381fps

3. Mg b1 (5183.62Å), 0.106Å
0000_08_34_13_colorized_0_00
  • 撮影日: 2025年7月4日8時34分
  • 撮影: SharpCap Gain 200 (=6dB)、露光時間0.75ms、ROI: 3840x200、平均221fps

4. Hβ (4861.34Å), 0.108Å
03_Hbeta_0001_08_44_26_colorized_0_00
  • 撮影日: 2025年7月4日8時43分
  • 撮影: SharpCap Gain 200 (=6dB)、露光時間0.75ms、ROI: 3840x100、平均381fps

5. Hγ (4340.47Å), 0.111Å
04_Hgamma_0000_08_56_44-trimmed_colorized_0_00
  • 撮影日: 2025年7月4日8時56分
  • 撮影: SharpCap Gain 200 (=6dB)、露光時間1ms、ROI: 3840x100、平均381fps

6. CaK (3933.66Å), 0.113Å
05_CaK_0003_09_14_06_colorized_0_00
  • 撮影日: 2025年7月4日9時14分
  • 撮影: SharpCap Gain 400 (=12dB)、露光時間1.5ms、ROI: 3840x100、平均381fps

こうやって見ると、波長ごとに模様がかなり違うのがわかります。でもNa D1を見てもわかるように白色光とあまり変わらず特徴が無かったりもします。というか、ほとんどの波長はこのNa D1みたいに白色とほぼ同じに見えるようです。

実は他に、He-D3 (5875.62Å)というのが結構面白そうな模様を出しそうなのですが、Spectrum browserで確認したところ、あまりに淡そうなので今回は諦めました。
スクリーンショット 2025-07-05 090320

またいつか挑戦してみたいと思います。


JSol'Exでの色付け

実はJSol’ExではHαの色だけ、特別な処理をしています。Hαだけ他のものに食らえて派手すぎです。即別な処理を外して、JSol’Ex標準のルールに従って色付けすると、Hαといえど下のようにかなり地味になってしまいます。
09_39_22-trimmed_0000_09_39_22-trimmed_colorized_0_00

私は結構派手な色使いも好きなので、他の波長もHαでやる場合と同じように特別な処理をして派手目にしようとしてみました。でもうまくいきません。どうやらバグみたいで、Spectral rays editorでcolor curveオプションをオンにして色をいじってみるとわかるのですが、青を濃くしてしまうと、serファイルでカラー画像を出した時に変更できるstretchingの所で選択できる「Linear stretch」と「Curve stretch」で初期状態での色遣いが違ってしまっていて、しかもLinear stretchで調整したものは保存できないようです。Hαは青をほとんど出さないので、バグとして認識されていないのかもしれません。

というわけで、もう少し派手目に色付けするとして、Photoshopで自分でやってみました。参考にしたものはMLastroのこのページの一番下にある各波長の色付けです。

6colors

と、こんなカラフルな太陽画像はどうでしょうか?


まとめ

SHG700関連記事も応用編に入り、徐々に分光撮影の威力が発揮されてきました。全波長で本当に0.1Åオーダーで撮影できてます。これは結構すごいです。しかも今回は1枚画像での処理で、JSol'Exのオーとストレッチと色付けだけで、スタックや細部出しもしてません。必要なら、特定の波長は枚数を撮ってもっと凝った処理にしてもいいのかと思います。コンスタントな撮影ももう少し落ち着いたら続けて見たいと思います。

新しく撮影したものを含む、手持ちの撮影ストックはこれくらいです。これまで撮影した画像を使いまだ試したいことがあります。次回、次々回と、ドップラーシフト関連の記事になるかと思います。



前回の「太陽分光SHG700始動(その3): 連続分光撮影」に引き続き、太陽分光撮影シリーズの4回目です。


今回は撮影したserファイルを処理する太陽全景画像再構築ソフトの説明をします。


JSol'Ex

撮影した.serファイルから太陽全景画像を再構築するソフトはIntispecINTISpectroheliograph reconstruction softwareJSol'Exなどがあるようですが、MLastroではJSol'Exが勧められているので、ここではJSol'Exを使ってみます。


JSol'Exの日本語での解説記事はほとんどないみたいなので、いろいろと試してみました。

ダウンロードしたらインストールしますが、インストール先がデフォルトでは自分のユーザーディレクトリの中の隠しフォルダのAppsData以下になるようなので、実行ファイルがどこにあるかなど戸惑うことがあるかもしれません。私は天文関連のアプリはショートカットをデスクトップに置いているので、実行ファイルを探すのにちょっと苦労しました。ちなみにショートカットは、エクスプローラー上で実行ファイルを選択して、シフトキーとコントロールキーを同時に押しながら、デスクトップに放り込めばできますね。


serファイルからの簡易画像生成

JSol'Exを立ち上げて、まずは手持ち機器の登録をしましょう。メニューの「Equipment」の「Spectrograph editor」で分光器を登録します。Sol'ExやSHGはバージョンごとにわかれてあらかじめ登録されているので、通常は特に変更の必要はないです。もしカスタムなどしている場合はここで設定するといいでしょう。

もう一つ、メニューの「Equipment」の「Setup editor」で鏡筒とカメラを登録します。「Latitude」と「Longitude」は設定しなくていいみたいなので、私は空白にしています。
スクリーンショット 2025-06-24 215035


処理を開始するために、serファイルを読み込みます。メニューの「file」から単体のserファイルなら「Ooen ser file」、複数のserファイルをまとめて処理したいなら「Batch mode」になります。

スクリーンショット 2025-06-24 145332

簡単には出てきた画面で、下の「Quick mode」ボタンを押せば簡易処理になり、全景を再構築した画像と、それをオートストレッチした画像のみが保存されます。
スクリーンショット 2025-06-24 205206


カスタム出力設定

高機能なJSol’Exを活用するために、きちんと設定して出力画像の種類を増やしましょう。

まずは先ほど設定した、自分の機器を選択します。上記画面の「Observatoin details」を選択し、Instrumentで「MLAstro SHG700」を、Telescopeで自分の機器、ここでは先ほど設定した自分の「FC-76」を選択します。
スクリーンショット 2025-06-24 215918


保存する画像のフォーマットは「Miscellaneous 」で必要なフォーマットにチェックを入れます。あとでスタックとかする場合はfitsやtifなどのRAWフォーマットにしておいたほうがいいかと思います。画像アップ用でJPEGやPNGを一緒に選択しておいてもいいかもしれません。

保存フォルダの形式を、同じく「Miscellaneous 」で「Batch」にしておくといいでしょう。あとでスタックする場合には、複数serファイルからできた同じ種類の画像がまとまって一つのフォルダに入ります。

スクリーンショット 2025-06-24 145715

ここからがJSol'Exの真骨頂になります。serファイルを開いて設定などした後に、まずは右下の「Full process」を押してみましょう。時間は余分にかかりますが、いろんな種類の画像が生成されます。

でもこの「Full」だと一部されない画像もあるので、「Custum process」を押して、さらに「Select all」にしたほうがいいかもしれません。これにすると、波長を少しずらした(デフォルトだと-3,0,3,15pixel)画像も合わせて生成されます。
スクリーンショット 2025-06-24 205325

波長の違いは見てるだけでも楽しいので、ぜひ試してみてください。波長をどれだけずらすかは、自分で設定できます。画面内の数値を適当に変えたり、増やしたりしてみてください。


出力される画像例

どんなファイルが生成されるのか見ていきましょう。以下に示す保存される場所は、File name patternを「Batch mode」で保存した場合になります。

まず基本はdiskフォルダとautostretchフォルダの中にある、再構築された全景です。diskの中は単に再構築しただけのRAWに近いもの、autostretchはそれをストレッチしたものです。ここではストレッチされたものを示します。
07_13_53_0000_07_13_53_autostretch_0_00

これらのフォルダには上記のHαの中心波長のみでなく、そこからずれた波長の画像も保存されています。例えば+/-3pixelずれたものです。波長への換算はざっくり0.1Å/pixelなので、それぞれ-0.3Åと+0.3Å程度ずれた画像になります。
07_13_53_0000_07_13_53_autostretch_3_00

07_13_53_0000_07_13_53_autostretch_-3_00

高々0.3Åのずれですが、中心波長画像と比べると見た目でかなり変わっていることがわかります。まず、中心波長の方が全体的に渦のような縞々が少ないように見えます。わたしはこれまでこの縞々がHα線で見る時の真骨頂かもしれないとずっと思っていたのですが、どうも本当の中心はもっとのっぺりしているのかもしれません。その代わりに、中心はちょうでは白いもやみたいなものが全体に見えます。これがなんなのか?ちょと興味があります。

他にも15pixel = 1.5Åだけ中心波長から離れた画像も保存されます。これだけズレるとほとんど白色光に近い画像になり、黒点がよく見えるようになります。
07_13_53_0000_07_13_53_autostretch_-15_00

どれだけずらすかは自分で設定することができます。先ほどのCustum processで数字で指定してある部分です。

cardフォルダの中には黒点番号、緯度経度と自転軸の傾きが書き込また画像が保存されています。太陽の自転軸は、地球の公転面に対して約7度傾いています。この画像にある自転軸は地球から見たときの見かけの自転軸です。地球は太陽の周りをまわっているので、太陽の自転軸の「地球から見たときの見かけの」傾き角は、季節によって変化します。
07_13_53_0000_07_13_53_card_0_00

このサイトで見かけの自転軸の傾き角を計算することができます。2025/6/17 22:13:53(UTC)だと-8.44度と計算されるので、画像に表示されている角度と同じですね。ちなみに、地球の自転軸の傾きもあるので、見かけの傾きは7度以上になることがあるので、今回の-8.44度は間違ってないです。

diskフォルダの中にあった、+/-3ピクセルずらした画像から、ドップラーシフト画像を生成することができます。dopplerフォルダの中に入っています。
07_13_53_0000_07_13_53_doppler

上記のような画像は任意のずれから画像を生成することもできるので、色々試してみると面白いでしょう。

実はドップラーシフト画像で気づいたのですが、最初に試した時に赤と青が反転してしまいました。本来は上の画像のように、左側が奥から手前に回転し、右側が手前から奥に回転するので、左は波長が縮んで青の短い側にに、右は波長が伸びて赤の長い側なるような色を付けるのが正しいです。なぜ色が反転したのか、探っていくとJSol'Exでserファイルを開いた時の「Process parameters」で色を入れ替えたり、上下や左右のフリップを指定できることがわかりました。
スクリーンショット 2025-06-24 205206
スクリーンショット 2025-06-24 145523

でも色を入れ替えるだけだとなぜか画像も左右反転してしまったので、左右フリップもオンにしてやっと正しいと思われる色と向きになりました。ちょっとややこしいので、一度自分で試すといいでしょう。画像の上下左右は、黒点が出ているならcardフォルダの緯度経度が書いてある画像に黒点番号も書き込まれているので、この番号の位置が黒点の位置とあっているかどうかも確かめることができます。

doppler-eclipseフォルダには、プロミネンス部分を強調してドップラーシフトでどちら向きに進んでいるかわかる画像も含まれています。
07_13_53_0000_07_13_53_doppler-eclipse

太陽表面及びプロミネンスのドップラーシフトはいつか求めてみたいとずっと思っていました。というか、このドップラーシフトを試したくて今回のSHG700に手を出したと言っても過言ではありません。以前Phoenixで波長をシフトさせて自転のドップラーシフトが見えないか考えたのですが、波長分解の敵にちょっと厳しいと判断しました。今回のような波長分解能のいい分光撮影で、やっと実現したことになります。でも0.3Åの波長シフトで十分見えるのなら、今考えるとPhoenixでも見える気がします。画像は残っているので、今度見直してみようと思います。

他にも、colorizedフォルダには自動的にカラー化された画像も保存されたりしています。
07_13_53_0000_07_13_53_colorized_0_00


さらなる画像生成

上の画像はほぼデフォルトで出力されるものの一部です。ほかにも紹介しきれないマイナーが画像もありますし、設定を変更できるのでさらにパラメーター違いの画像を各種出力できます。

でもそれでもここまでは「Simple」というモードに過ぎず、serファイル選択後に「Custom process」を押し、「Mode」で「ImageMath」を選ぶと、スクリプト形式でどんな出力にするかを指定して、画像を演算などすることで一連の画像を出力することもできます。

説明はここにありますが、さすがにこのページの説明の範囲を超えてくるので、興味がある方は各自で試してみてください。

マニュアルは簡易版がここ


詳しいものがここにあります。


他にも波長を変えた際の画像のアニメ化ができるみたいです。serファイルを処理終了後、右上画面の横タブの「Redshift」を選びます。
スクリーンショット 2025-06-24 213843

でも、一度試したのですがメモリ不足で止まってしまいました。そのうち、もう少し余裕のあるPCで試してみようと思います。ちなみに、serファイル処理後は上記のように画像が表示されていて、画像上のボタンやスライドなどでこの状態で設定を変えることができます。変えた設定は保存画像を変更するので、次の処理をするまではあらわに保存せずとも自動的に更新が保存されます。


画像以外の解析など

JSol'Exには.serファイルからの画像出力だけでなく、他にも便利な機能がいくつかあります。一つはフラウンホーファー線のリファレンス機能です。これまでHαで撮影してますが、それでも一番最初はどの輝線がどの波長を表しているのか、画像からだけだと全くよくわかりません。それでもHα線はメジャーなので、他の人が撮影した画像と比較とかして特定できるかもしれませんが、他の画像、例えば太陽撮影で次にメジャーなCaK線は一気に比較画像を探すのが難しくなります。そんな時に「Spectrograph editor」を使うと、自分で撮影した画像と比較することができます。メニューの「Tools」->「Spectrograph editor」を選んで、出てきた画面で見たい輝線を選択します。自分で撮影した画像を並べて、画面内の+/-で幅を揃えて同じような模様を探します。今回自分のセットアップで撮影した場合、上下幅が18nmに相当することも、輝線を探すときの手がかりになりました。

ちなみに、画像をロードしてJSol'Ex内で比較することもできるようなのですが、まだ実験レベルの実装らしくていまだにやり方がわからず、私は下のように画面を横並べにして比較しています。
スクリーンショット 2025-06-18 151746

吸収線をグラフ化してリファレンスと比較する機能もあります。serファイルを処理終了後、右上画面の横タブの「Profile」を選びます。
スクリーンショット 2025-06-24 204301_cut


このグラフを見ると、1点がスキャン1回ぶんになっているようで、グラフから読み取ると0.118Å/pixelのようです。光学的な波長分解能は0.18Å/pixelと計算できているのですが、実効的にはどの程度かはもう少し考えて判断したいと思います。


さらなる情報

JSol'Exは相当高機能なソフトです。今回紹介した機能はわかりやすいものばかりで、まだ複雑な機能は私も全然使い切れていません。ImageMathの所でも紹介しましたが、マニュアルは詳しいものが用意されているので、とりあえずはそれを読むことかと思います。

簡易版


詳細版



このページにチュートリアルビデオがたくさんありますが、問題は言語で、英語のものがわずか3本、あとは全部フランス語です。私はフランス語はよくわからないので見るだけですが、それでもいくつかのファイルは参考になります。




まとめ

JSol'Exはすごい高機能ですね。とにかく、ドップラーシフトがこうも簡単に出てくるのは期待以上でした。元々は自分でソフトを書かなくてはと思っていたくらいなので、ちょっと拍子抜けしたくらいです。いつかみたジェットを、今度は分光撮影してみたいです。多分波長のシフトとなって出てくると思っています。

こういったソフトが出てくるのも、Sol‘Exで文化を切り開いてくれたおかげでしょう。今後もありがたく使わせていただきたいと思います。













このページのトップヘ