StarNet V2がPixInsightのリニア画像のコンテナ処理に対応

星消しツールの「StarNet」が2023年2月12日にアップデートされ、PixInsightでプラグインとして使われる際、リニア画像のコンテナ処理に対応したようだ(公式サイトのNews参照)。

ただ私自身の使い方としては、加算平均合成処理(Image Integration)とストレッチを行った後に適用するケースがほとんどになる。つまりノンリニア画像を1ファイルだけ処理することになるので、今回の更新はあまり関係無い。

しかし、星の中を時間と共に移動していく彗星の処理だけは例外となる。彗星核基準で加算平均合成すると星は線になるので、その後にStarNetで星消しは出来なくなる。したがって合成前に星消しを行う必要があるが、その場合の処理対象はリニア画像であり、それは複数コマ存在する。数コマ程度ならば一つずつ手作業で処理しても大した手間ではないが、10コマを超えるとさすがにコンテナを使ってまとめて処理したくなる。

まずコンテナを使わずに一コマのみのリニア画像をStarNetで処理する場合、処理対象の画像をワークスペースに表示して、それをSTF(Screen Transfar Function)用いてストレッチ表示する。おそらく多くの場合は自動ストレッチを使うことになる。それから「Process」-「All Processes」-「StarNet2」でStarNetのGUIをワークスペース上に呼び出し、「Linear data」にチェックを入れて、左下の三角マークを処理対象画像にドラッグ&ドロップする。星マスク(starmask)も欲しい場合はCreate starmaskにチェックを入れる。Strideと2x upsampleは既定のままで良く、上手くいかない場合のみ変えて試行錯誤する。

一コマのみのリニア画像をStarNetで星消し処理する

このときStarNetの星消し処理で、星と星雲の区別をおこなう閾値などはSTFの設定に依存するようだ。つまりSTFの調整次第で星消しの結果が変わってくる。

例えば、下の画像はSTFを自動ストレッチ設定でStarNet処理したもの。

リニア画像をSTFの自動ストレッチ表示状態でStarNetで星消し

これは上手く星が消えている。

ところが、STFの自動ストレッチを行わずデフォルトのまま、つまり元の暗い画像のままの状態で、旧バージョンのStarNetで処理ですると下の画像のようになる。

リニア画像をSTF調整なし(デフォルトのまま)、旧バージョンStarNetで星消し(処理後に自動ストレッチ表示)

いくつかの星が残ってしまった。これを複数コマ彗星核基準で合成すると残った星が線になってしまう。

つまり、旧バージョンStarNetはSTFのストレッチ表示を適切に行う必要がある。ただこれはほとんどのケースで自動ストレッチで良いようなので、大した手間ではない。


さて問題となるのはコンテナ処理の場合である。コンテナは複数の処理対象ファイルと出力ディレクトリをコンテナGUI(Process-Image Container)にて登録し、それをワークスペース上にアイコン化して一旦保存する。StarNet処理はStarNetのGUIウィンドウ左下の三角マークをそのコンテナのアイコン上にドラッグ&ドロップして処理する(下図参照)。

コンテナに登録した複数ファイルをStarNet処理する

この場合、StarNet旧バージョンではSTFによるストレッチ調整が入らず無調整のままで処理されてしまう。実際にStarNet旧バージョンでコンテナ処理した結果が下図。

StaNet旧バージョンで、リニア画像をコンテナ処理(処理後に自動ストレッチ表示)

単体ファイルをSTF無調整で処理した時と全く同じで、星が残ってしまった。

試しにワークスペース上に単体のファイルを表示してSTFを自動ストレッチにした状態で、その横でコンテナに対してStatNet処理するなどいろいろ試したが、やはりダメだった。

ここまでが旧バージョンの話。


今回(2023/2/12)のアップデート版では、上記のようにコンテナを使ったStarNet処理をする際、自動的にSTFのストレッチ処理が入るようになった。なお、コンテナ使用時だけでなく画像単体への処理の際でもSTFが無調整(初期状態の暗い画像)のままの場合には同様に自動ストレッチが適用されるようだ。

下の画像は新バージョンのStarNetでリニア画像をコンテナを用いて処理したもの。

StaNet新バージョンで、リニア画像をコンテナ処理(処理後に自動ストレッチ表示)

新バージョンではSTFを介していないにも関わらず星がきれいに消えている。

自動ストレッチの自動適用時にはProcess Consoleに下記警告が出るようだ。

Warning: Linear data option is enabled, but STF is an identity function!
Using Auto Stretch to transform the image!

これで大量のリニア画像をまとめてStarNetで星消し出来るようになった。

なお自動でストレッチ処理が入るといっても、それは(おそらく)StarNet処理の閾値決めなどに使われるだけで、出力される星消し画像およびstarmask画像はリニアのままである。


さて、これで問題解決というわけではない。なぜなら、今回の新バージョンで自動適用されるストレッチは「自動ストレッチ」なので細かな調整が出来ない。そのために不適切な星消し処理となる場合がある。例えば今回の彗星画像をStarNet新バージョンで自動ストレッチ処理する際、Create starmaskにチェックを入れて星マスクを作成すると下の画像のようになる。

StaNet新バージョンで、リニア画像を処理時のstarmask(処理後に自動ストレッチ表示)

彗星の一部がstarmask(星マスク)側に取り込まれてしまっている。つまり、星消し後の彗星画像から、本来彗星として残るべきものが除去されてしまっている。星消し画像の彗星部分を切り出したのが下記画像。

StaNet新バージョンで、リニア画像をデフォルト設定で処理(処理後に自動ストレッチ)

オリジナル画像(↓)と比べると、彗星の一部(特に核の下の方)がうっすらと暗く欠けてしまっているのが分かる。

星消し前オリジナル画像(自動ストレッチ)

これについてはGUIではなく「Edit InstanceSource Code」で設定を変える必要がある。StarNet2のGUIウィンドウ下部の白抜き四角のマークをクリックして、ソースコード編集画面を出す。

Edit InstanceSource Code
ソースコード編集画面

ここでGUIに無い項目も変えられる。変えるべきは「shadows clipping」と「target background」の2つだが、正直言ってこれらをどう変えれば良いのかわからない。そこで今回はt「shadows clipping」はそのままで「target background」のみ変えてみることにした。デフォルトの0.25から値を色々変えてみたが、今回の画像では「target background = 0.08」が最も妥当なようだった。編集は値を打ち換えると灰色のチェックボタンが緑色になるのでそれを押すと上書き保存される。

設定を変えて実行した結果の星マスク(starmask)が下の画像。

StaNet新バージョンで、リニア画像を「target background = 0.08」で処理時のstarmask(処理後に自動ストレッチ表示)

星マスク側に彗星の一部が入り込む現象は無くなった。また、星消し画像のは下の画像となる。

StaNet新バージョンで、リニア画像を「target background = 0.08」で処理(処理後に自動ストレッチ表示)

彗星の一部が欠けたような現象は無くなった。ただし左辺に近い部分の輝星の一部の跡がうっすら残るようになった。一コマのみなら後でPhotoshopなどで修正できるが、コンテナを用いた大量のファイルを手作業で修正するのは現実的ではない。このあたりの閾値の調整は、星の消え具合と彗星(星雲)の残り具合を見ながら試行錯誤で決めるしかなさそうだ。

そのためコンテナ処理を行う前に、まず一コマだけの画像でこのパラメータ決めを行う必要がある。その際、STFでのストレッチ表示は行わずオリジナル(初期状態)の暗い画像表示のままで行う必要がある。新バージョンのStarNetでも一コマ処理の際にSTFでストレッチ表示を掛けてしまうとそちらが優先されて、コンテナ処理時と合わなくなってしまうので注意が必要だ。

コメント

タイトルとURLをコピーしました