画像処理ソフト開発ごっこ

天体画像処理ソフト自作ごっこ③

★意外に難儀するカラー合成
Hα・OⅢ・SⅡのナローバンドフィルタとモノクロ冷却カメラを用いた三連装アクロマートでは、市街地でも星雲が容易に写せて非常に楽しいのですが、意外に難儀するのが画像処理終盤のカラー合成です。軸上色収差に関しては、「たまたま」古典的なアクロマートの色消し基準がC線(Hα)とF線(OⅢ付近)になってる関係で、先述の三波長についてほぼ補正できているのですが、流石に画面周辺部では倍率色収差などの影響でいわゆる色ずれが発生します。また、波長によって複数のカメラ(ASI294MMとASI1600MMなど)を使い分けている場合には、そもそもの画素数が異なりますので、そのままカラー合成することが不可能です。
これまでステライメージを用いてカラー合成する際には、画面中央付近の恒星と周辺部の恒星について画像上の2点間距離(何ピクセル離れているか)を測定して、そこから逆算することで画像の解像度が一致するように画像を拡大縮小してからカラー合成に持ち込んでいました。ステライメージの場合、L-RGB合成メニューからは倍率補正ができるのですが、RGB合成では倍率補正の機能が無いためです。
この作業は非常に手間が掛かる上に、そもそも2点の測定だけではその精度が悪い場合もあるため、結構難儀していました。なんとかこれを効率よく行えないものか・・・・

・・・というわけで

★無いなら自分で作っちゃえ!
MATLABで開発ごっこしている自作画像処理ソフト『邪崇帝主』に、カラー合成時の倍率補正機能を実装することにしました。
ここまで極力高度なツール群には手を出さず、基礎的な関数のみを用いてコードを書いてきたのですが、さすがに対話式ユーザーインターフェースそのものを自力で書くのは骨が折れます。そこで、昨年から追加購入していたツールボックス(オプションのパーツ群)の利用を解禁することにしました。

今回目指す仕様は下記のような物です

①Hα像を基準画像として定義する
②補正対象画像(OⅢやSⅡ画像)と基準画像の双方から、それぞれ2点以上の基準星を選択する
③並進ズレ・回転ズレに加えて、倍率ズレも推算する
④今後の伏線として、せん断(平行四辺形ズレ)やパースペクティブ(台形ズレ)やディストーション(歪曲収差)も補正可能な物を目指す
⑤補正が済んだ3波長の画像から自動的に12パターンの各種パレット合成を一気に生成する
⑥生成された合成画像は、それぞれ16bitのTIFFで自動保存する

要するに、「異なる波長の画像を同時に開き、そこから基準星をポチポチクリックするだけで、色ずれの無いSAO合成画像とかOSAリバース画像とかが自動生成される」という、なんとも邪悪な仕様です。


★基準星へのアンカー打点ルーチンの実装
使用するMATLABのツールボックスはImage Processing Toolbox」です。これを併用することで非常に簡単なコードを書くだけで様々な処理が行えます。
基準画像を「image_1」、変形対象画像を「image_2」とするとき

[mp,fp] = cpselect(image_2,image_1,'Wait',true);


とコードを書くと、アンカーを打つためのコントロールポイントツールが立ち上がります。そして基準星をクリックすることで配列fpの中に基準画像中のアンカー座標、配列mpに変形対象画像のアンカー座標がそれぞれ格納されます。

では、早速実装してみましょう。
天体画像処理ソフト自作ごっこ③_f0346040_00414741.jpg
これを実行すると・・・
天体画像処理ソフト自作ごっこ③_f0346040_00540232.jpg
このように基準星をしているるためのツールが立ち上がり、入力待ちとなります。
天体画像処理ソフト自作ごっこ③_f0346040_00550763.jpg
基準画像・対象画像ともに、全体像と拡大像が同時に表示できます。また、精密にアンカーを打つために任意の表示倍率に変更することができます。
天体画像処理ソフト自作ごっこ③_f0346040_01051511.jpg
十分な拡大率に調整して、基準星を複数クリックしてアンカーを打ちます。
原理上、並進ズレ・回転ズレ・倍率ズレの3要素の補正のためには2点指定するだけで解が求まるのですが、アンカーの数を増やすことで補正精度が向上します。(言うなればマルチスターアライメントですなぁ)ここでは4点を指定してみます。
ここで、配列fpと配列mpの中身をチェックしてみると
天体画像処理ソフト自作ごっこ③_f0346040_01210547.jpg
このように、指定した基準星の座標が格納されていることが分かります。
いやーそれにしても、使用している変数(配列)の中身を随時チェックできるのはインタープリタ系言語の強みですね。
上記の画面では、ASI294MMPで撮像したHα画像とASI1600MMPで撮像したOⅢ画像のアンカー測定を示しました。同様の処理をASI294MMPで撮像したHα画像とASI1600MM-Coolで撮像したSⅡ画像についても行います。


★画像のレジストレーション機能の実装
MATLABの「Image Processing Toolbox」にはイメージへの幾何学変換を容易に行うためにimwarp関数が用意されています。先ほどコントロールポイント機能で測定したアンカー情報を元にfitgeotrans関数で幾何学的変換内容を推算させ、imwarp関数で画像の変形と位置合わせする機能を実装してみましょう。

まず、使用する幾何学的変換の種類として、下記の5パターンのコードから選択できるようにしました。

①t = fitgeotrans(mp,fp,'nonreflectivesimilarity');
このように書くと、最低2点のアンカーから並進・回転・倍率のズレを補正した変換になります

②t = fitgeotrans(mp,fp,'nonreflective similarity');
このように書くと、最低3点のアンカーを用いて、鏡像の補正も行う変換になります

③t = fitgeotrans(mp,fp,'affine');
このように書くと、最低3点のアンカーを用いて、せん断(平行四辺形歪み)の補正も行う変換になります

④t = fitgeotrans(mp,fp,'projective');
このように書くと、最低4点のアンカーを用いて、投影歪み(パース)の補正も行う変換になります

⑤t = fitgeotrans(mp,fp,'polynomial',3);
このように書くと、最低6~15点のアンカーを用いて、曲面歪み(ディストーション)の補正も行う変換になります。

このうち、今回は①を採用し、対象画像を基準画像に合わせて変形と位置合わせを実行し自動保存するルーチンを実装してみました。
天体画像処理ソフト自作ごっこ③_f0346040_01423046.jpg
こんな感じですね。
さて、もくろみ通り一発でアライメントできるでしょうか??

では、行きますよ
・・・ででん!
天体画像処理ソフト自作ごっこ③_f0346040_01545645.jpg
上記画像は
 左:アライメント処理無し
 中:ステライメージでアライメント
 右:今回のルーチンで処理
の3種について、AOO合成の結果を比較したものです

左は論外として、ステライメージのアライメントでは並進ズレと回転ズレは良好に補正されているもののカメラの違いによる倍率ズレが補正されていないのが分かります。しかし、今回実装したルーチンでは左のように無補正で見事にAOO合成ができました!!

これにSⅡ画像も加えてSAO合成してみましょう。
天体画像処理ソフト自作ごっこ③_f0346040_02054883.jpg
 左はステライメージでアライメント、右が今回のルーチンで処理です

今までの苦労が嘘のように一発で合成に成功しました!!


★となれば、アレをやってみたい!
ここまで来ると欲が出ます。
以前の記事に書いたように、ナローバンド3波長をカラー合成する際には、一般的なRGB合成による6パターンのパレット以外に、CMY合成することによる裏モード『リバースパレット』も面白いと感じています。特に、Hα領域が全面に広がっており、その上にOⅢやSⅡが乗っているような星雲の場合は非常に興味深い風合いになります。
実は、ステライメージのCMY合成は、そのロジックがよく分かっていないのですが、想定よりもケバケバしくなるという難点がありました(原色がサチってしまう仕様??)
あぷらなーとが考えるCMY合成は、次のようなロジックです。
①R画像の輝度を1/2にし、MとYに分離する
②G画像の輝度を1/2にし、CとYに分離する
③B画像の輝度を1/2にし、MとCに分離する
④CをRチャンネル、MをGチャンネル、YをBチャンネルと見なして合成する

これをMATLABで書くと、たとえばこんな感じですね。
天体画像処理ソフト自作ごっこ③_f0346040_02200134.jpg
さて、アライメントが完了した3波長分の画像を保存すると同時に、通常パレットに『リバースパレット』を加えた12パターンのカラー合成を一括処理して画面表示すると同時に、全ての画像を16bitTIFFで保存するルーチンを実装してみましょう。

すると・・・

ででん!!
天体画像処理ソフト自作ごっこ③_f0346040_02235236.jpg
ふはははは
またひとつ、長年の夢が実現したわ!!


あとは保存されたカラー合成画像から好きなバリエーションを選んでフォトショでちょちょいと加工すれば・・・
天体画像処理ソフト自作ごっこ③_f0346040_02392045.jpg
天体画像処理ソフト自作ごっこ③_f0346040_02392779.jpg

いやー、MATLAB素敵すぎ

邪悪な天体観測におけるメインストーリーが怪しげな機材を組むことだとすると、
画像処理ソフト開発ごっこは、さしずめ準主役級キャラのスピンオフ物語だなぁ。

天体画像処理ソフト自作ごっこ③_f0346040_02310911.png

・・・失礼しました。
意味が分かる方だけ鼻で笑ってください♪



Commented by UTO at 2021-01-09 20:22 x
こりゃあ、もう、あぷらなーとさんは、レベル5の一人で間違いないでしょ!!
リバースパレット1/2いい感じですねー。
Commented by B.S.Revolution at 2021-01-09 22:51 x
こんばんは。
すごく楽しそうですね。
リリースされるのを楽しみにしてます。
Commented by supernova1987a at 2021-01-10 07:32
> UTOさん
いやいや、真面目に勉強せずにレベルアッパー(MATLAB)に頼った『インチキLV5』です。
あ、でもパーソナルリアリティを追求するという意味では、「とある」の科学サイドっぽいですね。「とある邪道の色相反転(リバースパレット)」(笑)

冗談はさておき、カラー合成時のアライメント機能は自分的に「大成功」でした。さらに色々と遊んでみたいと思います。
Commented by supernova1987a at 2021-01-10 07:35
> B.S.Revolutionさん
ありがとうございます。
素人なりに色々と取り組んでいますが、ここにきて一気に進展した感じがします。
こちらはメカ系とエレキ系がさっぱり分からないのですが、近年の天文はソフト系だけでも色々と遊べるので楽しいです。
名前
URL
削除用パスワード
by supernova1987a | 2021-01-08 02:41 | 画像処理ソフト開発ごっこ | Comments(4)

あぷらなーとの写真ブログ


by あぷらなーと