« 2018年7月 | トップページ | 2018年9月 »

2018年8月

2018年8月11日 (土)

PixInsightで画像処理を始めよう ~ 第10回 嗚呼、星はいい(5) ストレッチ

【目次】

10-1. ストレッチの注意点
10-2. ArcsinhStretch
 (1) ArcsinhStretch の使い方
 (2) さらに明るく
10-3. PixelMath で合成
10-4. ここまでのまとめと動画の紹介


10-1. ストレッチの注意点

前回で色合わせまで終わりました。その画像を改めて見てみましょう。

10_01_beforestretch
図10-1. 前回までの画像(ストレッチ無し)

忘れている人もいるかもしれませんが、前回、前々回の解説で見てきた画像は、STF で見かけ上明るくしたものであって、実はこんなに暗い画像だったのです。右側にこの画像のヒストグラムを HT で示していますが、ほぼ左端にべたっと寄っていて、10倍に引き延ばさないと山の形がよくわからないくらいです。今回は、これをストレッチして明るくします。

ちなみに、この段階では画像はまだリニアですので、リニア画像に対してやるべき処理は今のうちにやっておいてください。例えば、第4回で紹介した Deconvolution も本来はリニア画像に対してやるべき処理の一つです。焦点距離の長い光学系で撮影した画像は Deconvolution をしておいた方が良いことが多いと思いますが、その場合にはここでやっておきましょう。ただ、今回の画像は 40mmのレンズで撮ったものなので、Deconvolution はせず、このままストレッチをすることとします。

さて、ストレッチする(明るくする)と言っても、その方法は様々です。皆さんは暗い画像をどのようにして明るくしていますか?一般的な画像処理方法としてよく解説されるのが、ヒストグラムの下に表示されているハイライトマークを左側に寄せる方法(ハイライトクリッピング)です。

10_02_ht_hlc
図10-2. ハイライトクリッピング

しかし、これには大きな問題があります。この HistogramTransformation (HT) で変換した次の画像を見てください。

10_03_hlc
図10-3. ハイライトクリッピングで明るくした画像

ご覧の通り、ギラギラになります。中央下端の領域はほぼ真っ白になってしまっていますね。中でも一番深刻なのは星です。次の画像を見てください。

10_04_hlc_readout_2x
図10-4. 星は完全に飽和している(2:1拡大)

ある程度以上明るい星は、R も G も B もすべて 1 に飽和してしまっています。図10-2 の設定からわかる通り、元画像で 0.043 より明るかったピクセルは 1 になって飽和してしまっているのです。天体写真で一番明るく写るのは星ですから、ハイライトクリッピングをすると、それが真っ先に飽和します。そして星が大きく写ってしまうようになります。

さらに、明るい領域が飽和してしまうほどに強くストレッチしているというのに、暗い領域は大して明るくなっておらず、依然として暗いままです。逆に言うと、コントラストは高いということになりますが、やはり飽和しているピクセルがある上に、暗い領域があまり明るくならないというマイナス面が大きいですね。

飽和するということは、色の情報がなくなるということです。星にもひとつひとつ色があります。せっかくあった色の情報が失われるような操作は避けなければなりません。また、もともと暗いピクセルをシャドウクリッピングしてもほとんど目立ちませんが、もともと明るいピクセルをハイライトクリッピングすると、非常に目立ちます。したがって、第3.5回でも述べた通り、天体写真の画像処理においては原則的にハイライトクリッピングはしません。

一方、ハイライトではなく、ミッドトーンのマークを左側に寄せて明るくする方法もあります。

10_05_ht_midtone
図10-5. ミッドトーンを左に

これで変換すると次のようになります。

10_06_mts
図10-6. ミッドトーンの位置を変えて変換

ハイライトクリッピングで明るくした画像と比較すると、平均的な明るさは実はどちらも大して変わらないのですが、随分と印象が違いますね。図10-5 の変換曲線を見るとわかる通り、この変換では、元々明るさが 1 だったピクセル以外は、変換後も明るさが 1 になることはありません。実際、図10-6 には飽和していそうなところは見当たりませんね。星はどうでしょうか。

10_07_mts_readout_2x
図10-7. 星にも情報が残されている(2:1拡大)

図10-4 と同じ星ですが、今度は飽和していません。さらに、暗い領域はやや明るくなって淡い星雲が若干浮かび上がっていることがわかります。つまり、飽和しているピクセルが無い上に、暗い領域が比較的明るくなるわけです。こうしたことから、ストレッチと言えばミッドトーンを動かして明るさを変えるストレッチが普通です。

しかし、図10-5 の変換は非線形変換です。これまで何度も言っている通り、非線形なストレッチをすると、色が薄くなります。暗い領域をそれなりに明るくする上に、色を薄くしない。そうしたストレッチの方法はないものでしょうか。

目次へ戻る この節のトップへ戻る

10-2. ArcsinhStretch

PixInsight にはストレッチ用のプロセスが多数用意されていますが、ここでは ArcsinhStretch を紹介しましょう。

10_08_arcsinhstretch
図10-8. ArcsinhStretch

ArcsinhStretch に関しては、以前紹介した Image Processing Tips でも取り上げています。

10_09_ipts_pi_021_title
図10-9. PixInsightでの画像処理(その21)- ArcsinhStretch

(上図をクリックするとページを開きます。)

詳細は Tips の方をご覧いただくとして、ArcsinhStretch も基本的には非線形変換なのですが、R と G と B の比率を変えないようにストレッチします。ということは、色相と彩度が変わらないということです。つまり、色を変えずに明るくすることができる わけです。せっかく PCC で測光的な色合わせをしたのに、ストレッチで色が変わってしまったら台無しですから、その色を変えないように ArcsinhStretch でストレッチしましょう。

(1) ArcsinhStretch の使い方

ArcsinhStretch はパラメータの数が少ないことからもわかる通り、使い方は簡単です。別に決まった手順はないのですが、2つのパラメータのうち、まず Black point から入力しましょう。Black point とは、シャドウクリッピングをするポイントのことです。つまり、それ以下の明るさのピクセルは変換後に 0 になる、という値です。この大まかな値は、HT でヒストグラムを見て決めることができます。

10_10_arcsinhs_ht
図10-10. HT で Black point の大まかな値を決める

HT のシャドウマークを右に動かすと、 Shadows の値が変わりますが、これがそのときのクリッピングポイントです。そして、さらにその右側に、そのクリッピングポイントでクリップされる(変換後に 0 になる)ピクセルの数とパーセンテージが表示されます。これを見ながら、クリップされるピクセル数があまり多くなり過ぎない範囲でクリッピングポイントを決め、その値を ArcsinhStretch の Black point に入力します。次に、ArcsinhStretch のリアルタイム・プレビューを開いて、それを見ながら Stretch factor のスライダーを右に動かします。

10_11_arcsinhs_exp01
図10-11. Black point を入力し、Stretch factor を変更する

すると、画像が次のように明るくなります。

10_12_ahsedimage
図10-12. ArcsinhStretch で少し明るくする

なお、このとき Black point も横のスライダーを動かすことで調整することができます。しかし、これを大きくするとシャドウクリップされるピクセル数が増えます。ハイライトクリッピングと同様、シャドウクリッピングもピクセルの情報を捨てることを意味するので、あまり良いことではありません。

そこで、リアルタイム・プレビューを開く際、"Highlight values clipped to zero" を有効にしておくと、クリップされるピクセルがプレビュー内で強調表示されるので、どの程度のピクセルがクリップされるのか視覚的に分かるようになります。

10_13_clippedpixels
図10-13. クリップされるピクセルの強調表示(Black point を大きくし過ぎた場合)

このようにリアルタイム・プレビューを見ながら明るくしていきます。もちろん、一度でもっと明るくしても良いのですが、コントラストを上げるために、その都度 Black point の値を変えながら複数回にわたって少しずつ明るくするのがコツです。

今回は2回実行し、最終的に次のような画像が得られました。

10_14_afterahs
図10-14. 通常の明るさにストレッチ

図10-6 と比較すると、随分と鮮やかですよね。従来のストレッチに慣れていると、「ArcsinhStretch でストレッチすると色が鮮やかになる」と誤解しがちですが、そうではありません。上で述べた通り、ArcsinhStretch は色を変えずに明るくしているのです。つまり、ストレッチ前の 図10-1 自体がこういう色だったということなのです。従来のストレッチが色を薄くしていただけのことなのです。

目次へ戻る この節のトップへ戻る

(2) さらに明るく

通常は 図10-14 くらいの明るさでストレッチ完了として良いのですが、右上の淡い星雲 Sh2-27 が淡すぎて少しはっきりしません。そこで、今回はもうひと工夫しましょう。

その前に 図10-14 の clone(クローン)画像を作ります。画像左側の画像名のタグを PI の背景部分にドラッグ・アンド・ドロップすると、クローン画像が作られます。

10_15_clone
図10-15. clone(クローン)

これをもっと明るくするとどうなるでしょうか。

10_16_ahs_bright2
図10-16. さらに明るく

右上の Sh2-27 も少し浮き出てきました。しかし、これでは明るい領域がちょっと明るくなり過ぎていますよね。そこで、図10-14 と 図10-16 の「いいとこ取り」をして合成しましょう。

目次へ戻る この節のトップへ戻る

10-3. PixelMath で合成

まず、通常の明るさの 図10-14 をアクティブにして、メニューバーから IMAGE > Extract > Green Channel を選択します。

10_17_extractg
図10-17. G画像を抽出

すると、図10-14 の G 画像が出力されます。

10_18_ahs_normal_g
図10-18. G画像

STF と HT を使って、明るい領域をさらに明るくし、暗い領域はほとんど見えないくらいに調整します。そして、メニューバーの PROCESS の中から invert を選択して明暗を逆にします。

10_19_ahs_normal_g_mask
図10-19. マスク画像

これをマスクとして 図10-14(通常の明るさの画像)に適用します。マスクの適用は、下図のように、マスク画像名のタグを適用先の画像の左側の枠(タグ以外の場所)にドラッグ・アンド・ドロップして行います。

10_20_apply_mask
図10-20. マスクを適用

ところで、画像にマスクを適用して処理を行うと、「マスクの白いところだけ処理が行われる」と説明されることが多いですね。もちろんそれで間違ってはいないのですが、より正確に表現すると、マスクは「元画像と処理後の画像のブレンド比の分布」です。マスクを適用した画像に処理を行うと、元画像と処理後の画像をマスクの明るさに応じてブレンドすることになります。白い部分ほど処理後の画像の割合を多くしてブレンドします。したがって、マスクに明るさ 1 の真っ白な領域と明るさ 0 の真っ黒な領域しかなければ、「マスクの白いところだけ処理が行われる」のと同じことになるわけですね。このように、マスクとは「元画像と処理後の画像のブレンド比の分布」と理解した方が、画像処理におけるマスクの意味を理解しやすくなります。

さて、マスクを適用したら、次に PixelMath (PM) を起動します。

10_21_pixelmath
図10-21. PixelMath (PM)

PM は、自由度の高さが「売り」の PI の中でも最も自由度の高いプロセスで、自由に数式や論理式を書いてその通りに実行させることができます。ただ、何の補助機能もなく式を書けと言っても大変なので、Expression Editor という補助ツールが付いていて、PI が今読み込んでいる画像名や、PMで使用できる論理記号等をリストから選択して入力することができるようになっています。

その Expression Editor を使って、"RGB/K" と "Symbols" に次のように書きます。

 RGB/K: k*$T + ~k* [明るい画像名]
 Symbols: k=0.2

10_22_pm_expeditor
図10-22. Expression Editor

"OK" ボタンを押せば、PM に反映できます。

10_23_pixelmath_fin
図10-23. PixelMath に式と定数値を入力

"$T" は、処理対象の画像(元画像)を意味する変数で、PM ではこう書くことになっています。これからこれを通常の明るさの画像(図10-14)に対して実行するので、$T は 図10-14 を意味することになります。

"k" は単なる定数で、"~k" は k の invert つまり、"1-k" を意味します。したがって、RGB/K の欄に書いた式は、通常の明るさの画像と過度に明るくした画像とをブレンドするという意味で、k を小さくするほど明るい画像に近づくことになります。

先ほど、マスクもブレンドを意味すると言いました。そして、ここでもブレンドします。言ってみれば二重にブレンドするわけですが、マスクだけでブレンドすると、その比率を変えるのにマスクごと変えなければならなくなって面倒です。ですから、処理自体を「ブレンド」にして、そのブレンド比は自由に変えられるようにしたのです。こうすれば、k の値を変えて再実行するだけで、得られる画像を調整することができます。

図10-23 の PM を 図10-14 の画像に対して実行(いつものように左下の三角マークをドラッグ・アンド・ドロップ)すると、次のようになります。

10_24_combined
図10-24. 合成完了

明るい領域も、暗く淡い星雲も、ともに適度な明るさで表示されるようになりました。

ちなみに、今節の最初で G画像をマスクの元としました。通常、マスクを作るときには、L画像を元とすることが多いのですが、今回 G画像を元としたのには少々わけがあります。図10-14 や 図10-16 には、右上に赤い星雲(Sh2-27)が淡く写っていましたね。この星雲は、L画像や R画像、さらには B画像にも写っていました。ところが、G画像にはほとんど写っていないのです。赤い星雲がほとんど写っていないということは、invert すればそこはほぼ真っ白になります。それをマスクにすれば、赤い星雲を効率的に浮かび上がらせるような合成ができます。このように、マスクの元とする画像を目的に応じて変えるというのも、細かいですがコツの一つではないでしょうか。

目次へ戻る この節のトップへ戻る

10-4. ここまでのまとめと動画の紹介

今回の内容でストレッチまで終わりました。ストレッチではハイライトクリッピングは原則としてすべきではないということ、そして、PI には、色を変えずに明るさを増幅させる ArcsinhStretch というプロセスがあるということを紹介しました。ArcsinhStretch は色を変えないので、普通のストレッチより色を鮮やかに保ったまま明るくすることができます。ここでもう一度その効果を見てみましょう。

10_26_comp
図10-25. ArcsinhStretch の効果

一つは ArcsinhStretch でストレッチしたもの、もう一つは STF のオートストレッチ(とHT)を使ってストレッチしたものです。オートストレッチはいわば「普通の」ストレッチです。両者の全体的な明るさはほとんど変わりませんが、色合いの違いは一目瞭然ですね。逆に言うと、普通のストレッチはこれだけ色を落としてしまっていたというわけです。皆さんも、ストレッチで色を薄くしてしまっていませんか?

デジタル画像において、おそらく「現像」の明確な定義は存在せず、どんな形であれ、画像化すればそれを現像と言うのでしょうが、第6回で述べたように、とくに、debayer(カラー画像化)、色合わせ(色調補正)、明るさ調整の3つは大抵含まれますよね。いわゆる「RAW現像」ができるプログラムでRAW現像した場合も、プログラム内部でこの3つの処理は必ず行われます。この3つをやらないと、人間が普通に写真だと思える画像にはならないからです。その意味で言うと、debayer は前処理(第7回)の段階でやり、色合わせは第9回でやりました。そして今回ストレッチをしたということで、ここまでがとりあえず「現像」に相当すると言ってもそれほど間違ってはいないと思います。天体写真の出来は、前処理を含めてこの「現像」までの比較的早い段階の処理でその9割以上は決まってしまいます。

第7回の DBE、第8回の PCC 、そして今回の ArcsinhStretch は、いずれもなかなか他のプログラムにはできない処理でしょう。中でもとくに、PCC や ArcsinhStretch なんかは属人的なテクニックや「慣れ」を必要とする要素がありません。他のプログラムだと、ここまでの段階でトーンカーブをよく使うと思いますが、あれこそ天体写真の画像処理を難しくしている元凶だと思います。トーンカーブを使った処理は属人的なテクニックや慣れが多分に必要ですし、もう一回やってくれと言われても「もう二度とできませんっ!」てなことがありますよね。画像処理で非常に重要な早い段階での処理に、誰がいつ何度やってもほぼ同じ結果が得られるようなユニークで強力なツールが使える、というところが PI の大きな魅力となっています。

なお、この入門とは素材の画像が違いますが、第7回から今回までの「DBE での光害除去」、「PCC での色合わせ」、「ArcsinhStretch でのストレッチ」の操作を簡単に紹介した動画があります。文字を読むより動画を視聴する方が理解しやすいかと思いますので、こちらも是非ご覧ください。

● 『天体写真を PixInsight で画像処理 Post processing 前編』

  • 「PixInsight ではこんなことができる」 といったような紹介を目的とした動画です。今回の入門よりもざっくりとした内容ですが、だいたい同じようなことを言っています。20分弱ですので、気楽にご覧ください。

目次へ戻る この節のトップへ戻る

つづく

2018年8月21日 (火)

PixInsightで画像処理を始めよう ~ 第11回 嗚呼、星はいい(6) 星ハロ除去

【目次】

11-1. ここから先はレタッチ
11-2. 盛大な星ハロ
11-3. 星ハロのマスクを作ろう
 (1) Starmask(スターマスク)を作ろう
 (2) ハロのHue(色相)値を確認しよう
 (3) カラーマスクを作ろう
 (4) ハロマスクを作ろう
11-4. Morphology(モルフォロジー)
11-5. 星ハロ除去
11-6. もうひと声
 (1) 青い星
 (2) 緑色の星?


11-1. ここから先はレタッチ

前回でストレッチまで終わり、これで現像がひとまず終わったことに相当すると言いました。この段階でも、撮って出し画像と比べればとても同じ写真とは思えないほどに綺麗になっているはずなので、初心者のレベルなら、ここまででも十分ではないかと思います。

11_01_afters_comp
図11-1. 撮って出し画像との比較

ここから先の処理は、すべての天体写真に絶対に必要な処理というわけではありません。できた画像を見て、必要に応じてやれば良いものと思ってください。

また、ここから先はレタッチ(加工)であり、レタッチソフトでもだいたい同じことはできると思います。いや、むしろレタッチソフトの方が本職なので、何も無理して PI を使わなくても良いと思いますが、ここから先も強力なツールは用意されているので、このまま PI で処理を続けましょう。

ただ、はじめにお断りしておきますが、今回は「入門」からは完全に逸脱します。あまり馴染みのないプロセスを見たこともないような手法で使うという怒涛の連続スマッシュが飛んでくるので、初心者にはちょっとキツイかもしれませんが、ご容赦ください。

目次へ戻る この節のトップへ戻る

11-2. 盛大な星ハロ

それでは、ストレッチが終わった画像を改めて見てみましょう。

11_02_afterstretch
図11-2. 星ハロ(全体と2:1拡大)

前回、前々回の段階で既に気付いていた人もいると思いますが、拡大すると、比較的明るい(かと言って輝星ほど明るくはない)星の周りがマゼンタになっていたり、赤くなっていたりするのがわかります。これはいわゆる「星ハロ」ですね。写野全体に等しく出ているわけではなく、中央部分に集中しているように思えますが、かなり盛大に出ています。これは、R(赤)のピントが合っていなくて、R の星像が肥大化していることが直接の原因です。

11_03_bloatedr
図11-3. Rの星像が肥大化している(RとGとの比較)(中央部を2:1拡大)

そのため、元々青かった星の周りがマゼンタになり、元々黄色やオレンジ色だった星の周りが赤くなっているのです。このように、R/G/B でピントの位置が僅かに違うというのはよくある話です。高級な光学系ならここまで酷くなることはないでしょうから、必要のない方は今回はまるっと読み飛ばしてください。ただし、そんな高級な光学系ばかりを使って楽をしていると、いざという時の処理テクニックが身に付きません。一度はこういう苦労をしておいた方が良いと思いますよ(笑)。とにかく、写ってしまっている以上は仕方がないので、この星ハロを何とかして除去しましょう。

星ハロの除去方法にも幾つかあります。例えば、レタッチソフトの中には「フリンジ除去」と呼ばれる機能があるものもあります。それを使うのが一番手っ取り早いのですが、それだと星の元の色の復元は難しいですよね。また、星ハロ以外の部分、例えば星雲の色にも影響を及ぼさないか、ちょっと不安です。

では、どうやるのか。しかも、ただ除去するだけではなく、星の元の色もなるべく復元するにはどうすれば良いのか。今回は最もオーソドックスかつ直接的な方法でやります。

目次へ戻る この節のトップへ戻る

11-3. 星ハロのマスクを作ろう

先ほど、R の星像が肥大化しているのだと言いました。だったら R の星像を小さくすれば良い のです。これから、そのための準備をしましょう。

(1) Starmask(スターマスク)を作ろう

まず第一段階は、スターマスクを作ることから始めます。要するに、星だけを抜き出してマスク化するのです。スターマスクを作る方法にも幾つかあり、PI にはその名もずばり StarMask というプロセスもあるのですが、今回はこれは使いません。いきなり入門レベルを逸脱します(笑)。

代わりに、第4回でも登場した MultiscaleLinearTranstorm (MLT) を使います。MLT は色んな用途で使える便利なツールでして、おそらく開発者は意図してはいなかったと思いますが、スターマスクを作るのにも使えます。

まず、メニューバーから IMAGE > Extract > Lightness と辿って、対象画像の L画像を抽出します。ツールバーにも "Extract CIE L* component" というアイコンがあるので、それを押しても抽出できます。

11_04_extractl
図11-4. L画像を抽出

11_05_l_image
図11-5. 抽出されたL画像(中央部を2:1拡大)

これがスターマスクの土台となります。左枠の画像名のタグをダブルクリックすれば、画像名を変えることができますので、スターマスクだとわかる名前に適宜変更しておくと良いでしょう。

続いて、MLT を次のように設定します。

11_06_mlt_for_starmask
図11-6. スターマスク作成用に MLT を設定(例)

MLT のリスト部分に表示されるレイヤーの数は、右上の Layers から選択することができます。ハロが発生している星の大きさに応じて Layers の値を適宜変えてください。一番下の R のチェックを外すのがミソです。Layer 1 のチェックを外しているのは、第4.5回でも述べたように、どうせこれはノイズ主体のレイヤーだからです。これを先ほどの L画像に対して実行して STF でオートストレッチすると、次のようになります。

11_07_aftermlt
図11-7. MLT実行後(中央部を2:1拡大)

ほぼ星だけが残ります。しかし、星以外のものも残っていると思いますので、STF のシャドウ及びミッドトーンを動かすことによってこれを消し、星だけが残るようにします。これを HT を介して反映すれば、スターマスクの完成です。(STF は見かけ上の明るさを変えるだけなので、HT を通して反映させる必要があることを思い出してください。)

11_08_starmask
図11-8. starmask(中央部を2:1拡大)

目次へ戻る この節のトップへ戻る

(2) ハロのHue(色相)値を確認しよう

準備の第二段階は、星ハロの色の範囲を数値的に確認することです。PI のウインドウの下枠に三角マークがありますよね。ここから Readout のオプションが選択できます。この三角マークを押して、Readout Data > CIE L*c*h* を選択してください。

11_09_readoutoptions
図11-9. Readout Options

CIE L*c*h* とは、色空間の一種で、L は明るさ、c は彩度、h は色相をそれぞれ意味します。この状態で画像の任意の点をマウスで長押しすると、そのピクセルの L/c/h の値をそれぞれ確認することができます。L と c は 0~1 の値ですが、h は 0~360 の値で表現されます。これで星ハロの色相を確認します。

11_10_hue
図11-10. Readout で星ハロの色相を確認

今回の画像の場合、マジェンタのハロの色相値は 320 以上、赤のハロは 40 以下であるようでした。ハロ部分の色相値がわかったら、その色相値のピクセルだけを抜き出したマスクを作りましょう。

目次へ戻る この節のトップへ戻る

(3) カラーマスクを作ろう

準備の第三段階です。第10回にも登場した PixelMath (PM) にここでも再登場してもらいます。この PM に次のように書いてください。

RBG/K: k * iif((CIEhd($T)>mag)||(CIEhd($T)<red), CIEc($T), 0)
Symbol: k=2, mag=320, red=40

11_11_pm_for_halomask
図11-11. PixelMath

iif(x, a, b) というのは、x が正しければ a の値を、正しくなければ b の値を返しなさい、という意味の論理式です。Excelの関数なんかでもよく見ますよね。で、その中に書かれている CIEhdr() というのは、そのピクセルの色相値を返す関数で、CIEc() は彩度の値を返す関数です。したがって、この式は、この画像の中で色相値が mag より大きいかまたは red 未満のピクセルを抜き出し、その彩度の値を輝度に置き換えて画像を作りなさい、という意味です。ここではこれをカラーマスクと呼ぶことにしましょう。なお、iif(x, a, b) や CIEhdr()、CIEc() は Expression Editor から選択・入力することができます。

図11-11 の PM を 図11-2 に対して実行すると、次のようなカラーマスクが得られます。

11_12_colormask
図11-12. カラーマスク

目次へ戻る この節のトップへ戻る

(4) ハロマスクを作ろう

さあ、準備の最終段階に入ります。このカラーマスクには星ハロが含まれています。しかし、色相値の条件だけで抽出すると、星ハロ以外のピクセル(例えば星雲)も同時に含まれてしまいます。このカラーマスクから、星ハロだけを抜き出すにはどうすれば良いでしょうか。ピンときた人もおられるでしょう。そうです。(1)で作ったスターマスク(図11-8)にはハロを含めた星だけが抜き出されていますから、スターマスクとカラーマスクをかければ(掛け算すれば)良いのです。

「2つのマスクを AND 条件で合成したければ単純に掛け算すれば良い」という発想は、ピクセルの明るさを 0~255 の範囲で考えるレタッチソフトに慣れてしまっていると、すぐには浮かびにくいかもしれませんね。その点、PI のようにピクセルの明るさを 0~1 の範囲で考えているとすんなり発想できます。

(1)で作ったスターマスクと(3)で作ったカラーマスクを PM を使って掛け合わせると、次のような画像ができます。

11_13_halomask
図11-13. ハロマスク

これが、星の中でハロとして異常な色となっていた部分だけを抜き出したマスク画像です。これをここではハロマスクと呼ぶことにしましょう。明るさは適宜調整してください。

目次へ戻る この節のトップへ戻る

11-4. Morphology(モルフォロジー)

図11-13 のハロマスクを見ると、星のハロの部分だけがドーナツ状に抽出されていることがわかりますね。このように星ハロだけを抜き出したマスクができたら、これを R画像に適用し、肥大化して星ハロとなってしまった部分だけを消すわけです。

それには MorphologicalTransformation (MT) を使います。

11_14_mt
図11-14. MorphologicalTransformation (MT)

MT は、その名の通り Morphology(モルフォロジー)という操作によって処理を行います。モルフォロジーには、主に Dilation(膨張)Erosion(収縮) という2つの操作があります。膨張(収縮)は、「対象ピクセルの周辺のピクセルの中で最大値(最小値)をとるピクセルの値を対象ピクセルの値として置き換える」という操作です。

11_15_morphology1
図11-15. モルフォロジーの原理

例えば 図11-15 を見てください。9個のピクセルの真ん中のピクセルの値をモルフォロジーによって変換するとします。この周囲(この場合は3×3)のピクセルの最大値は "0.5" ですので、Dilation では "0.5" に置き換えます。一方、最小値は "0.1" ですので、Erosion では "0.1" に置き換えます。これがモルフォロジーです。

普段、レタッチソフトの使用に慣れている人なら、聞いたことがある処理だと思います。そうです。多くのレタッチソフトに「明るさの最大値」「明るさの最小値」といった処理があると思いますが、あれです。

なぜこれが膨張や収縮と言われるのかというと、図11-16 を見てください。周辺ピクセルの最大値で置き換えていけば、点は大きくなり、線は太くなります。逆に、周辺ピクセルの最小値で置き換えていけば、点はより小さくなり(あるいは消滅し)、線は細くなります。この原理を利用して、星を大きくしたり小さくしたりすることができるわけです。

11_16_morphology2
図11-16. モルフォロジーの効果

ちなみに、MT では、その「周辺ピクセル」の範囲を明に指定することもでき、それによって、星の大きさを変えるだけでなく、形を変えることもできます。この辺りのテクニックは Image Processing Tips にも書いてありますので、興味のある方はご覧ください。

10_09_ipts_pi_021_title
図11-17. PixInsightでの画像処理(その6)- MorphologicalTranstormation (MT)

(上図をクリックするとページを開きます。)

目次へ戻る この節のトップへ戻る

11-5. 星ハロ除去

いよいよハロを除去します。R画像にハロマスク(図11-13)をかけて MT で Elosion(収縮)を実行します。

11_18_rmhalo_r
図11-18. R画像にハロマスクをかけて Erosion(中央2:1拡大)

随分と星が小さくなりましたね。どれだけ収縮させれば良いかは画像によっても違いますので、適宜 Amount で調節してください。こうして星像が小さくなった R画像を、G画像および B画像と合成します。(3色の合成には、9-2節でも登場した ChannelCombination プロセスを使います。)

11_19_rmhalo_rgb
図11-19. RGB合成(中央2:1拡大)

あれだけ盛大に出ていた星ハロが一気に目立たなくなりましたね。目立たなくなったばかりか、星像が小さくなり、しかもマゼンタだった星が青っぽくなりました。前にも説明した通り、マゼンタだった星は本来は青っぽい星だろうと考えられるので、本来の色に近づいたとも言えます。

目次へ戻る この節のトップへ戻る

11-6. もうひと声

うるさく目立っていた星ハロが除去できて、これでも別に悪くないと思うのですが、この画像の場合にはちょっと気になる点が2点ほどありますので、ついでにそれらも修正しておきたいと思います。

(1) 青い星

マゼンタだった星が本来の青い色に近づいたとは言っても、正直なところ青というより紫ですよね。こんな色の星も存在しないだろうと考えられるので、これに手を入れます。

紫もマゼンタも主に R と B を混ぜることでできますから、言ってみれば同族の色です。こうしたマゼンタ系の色を簡単に除去する方法があります。そのためにちょっとだけ発想を転換しましょう。

先ほども言いましたが、マゼンタは R + B です。ということは、RGB色空間においてその反対の色は G ということになりますね。このような反対の色のことを「補色」と言うこともあります。この補色の関係を利用しましょう。

まず、図11-19 の星ハロ除去後の画像を invert します。

11_20_rmhalo_invert
図11-20. invertした画像

この画像で緑色っぽく見える部分が、元の画像ではマゼンタぽかったところです。この中で星にだけ処理を行いたいので、これに再びスターマスクをかけます。ただ、ここで使うスターマスクは、星ハロ除去後の画像を元に作り直した方が良いでしょう。(ハロを除去した分、最初の画像より星像が小さくなっているため。)

そして、SCNR プロセスを起動します。

11_21_scnr
図11-21. SCNR

元々これは緑のノイズを減らすために開発されたツールなのですが、ここでこれを利用します。 "Color to remove" で Green を選択し、先ほどスターマスクをかけた invert画像(図11-20)に実行します。このとき、Amount を適宜調整してください。少し小さめに設定した方が良いことが多いと思います。ちょっと分かりにくいかもしれませんが、実行すると、緑色だった星が赤茶色っぽく変わるはずです。

11_22_invert_scnr
図11-22. SCNR実行(中央2:1拡大)

そうしたら、スターマスクを外して再び invert します。すると、紫だった星の色が青っぽく変わります。

11_23_purple2blue
図11-23. 紫だった星の色が青に(中央2:1拡大)

HαやO-III等、特定の波長域だけを狙ったナローバンド撮影をし、それらを R/G/B に割り当てて疑似色合成する所謂「ハッブルパレット」で画像処理すると、星の色がマゼンタになることがあるようで、それを除去するためにこうした技法を使う人がいるようです。

ちょっとした春風亭コワザですね。(はい?)

目次へ戻る この節のトップへ戻る

(2) 緑色の星?

ハロを除去した画像をよ~く見ると、ところどころに緑色の星が小さく写っています。第9.5回で説明した通り、本来、緑色の星は存在しないはずです。これは何でしょうか。

実はこれらの星は、元々は黄色かオレンジ色の星だったと考えられます。星ハロ除去前の R 画像に写っていた星をもう一度良く見てください。リング状に写っている星が沢山見受けられますよね。

11_24_r_image
図11-24. R画像には星がリング状に写っていた(中央2:1拡大)

これは所謂「リングボケ」ですね。こういうボケ方をする光学系にはときどきお目にかかりますが、R だけこれほどピントを外しているということは、やはりもう少し R 側にピントをずらした方が良かったかもしれません。

いずれにしても、点状の光がリング状にボケると、その穴の部分は光が弱くなります。つまり、この部分は R が薄くなっているわけです。黄色やオレンジ色の星の場合、B(青)の光はほとんど含まれておらず、R(赤)と G(緑)の光が多く含まれます。このうち R がリングボケによって薄まった結果、G だけが目立つようになったというわけです。ということは、この緑色の星の部分に R を足してやれば、元の色に近づくはずですよね。

ただ、こんな症状に悩まされている人はあまり多くないと思われるので、ここでは手順をざっくり説明するだけにしたいと思います。

リングボケの穴を埋める
モルフォロジーを知っている人ならピンとくるでしょうが、モルフォロジーの closing を使うとリングボケの穴を埋めることができます。ただし、MT ではなんと closing と opening の表記が逆になっているので注意が必要です。「誰かつっこまないのかよ」といつも思うのですが、PI ユーザはスルースキルが高いようです(笑)。
リングボケの穴だけを抽出したマスクを作る
穴が埋まった画像から元のリングボケの画像を引けば、穴だけを抽出したマスクを作ることができます。
緑色になってしまった星だけのマスクを作る
②のマスクと 11-3節の技法を使って、リングボケの穴であり且つ緑色になっている部分だけを抜き出したマスクを作ります。
R を足す
③のマスクを 図11-23 の画像にかけて、CurvesTransformation (CT) で R だけを増幅します。

この手順の処理で緑色の微光星を黄色やオレンジ色に戻すことができます。

11_25_rest_gstar
図11-25. 緑の微光星を元の色に復元(中央2:1拡大)

これで、ひとまず星ハロを除去することができました。今回の一連の星ハロ除去処理について、除去前と除去後の画像を比較することでその効果を見てみましょう。

11_26_rmhalo_all
図11-26. 星ハロ除去の効果(全体を1:4縮小)

11_27_rmhalo_x1
図11-27. 星ハロ除去の効果(中央等倍)

まあ、こんなところでしょうか。除去前の星ハロが盛大だった分、効果が分かりやすいですね。

今回の内容は少々ハードだったかもしれませんが、いかがでしたでしょうか。この画像の場合はあまりに酷くて無視するわけにはいかなかったので説明することにしましたが、優秀な光学系を使っていれば大抵不要な処理だと思います。日頃こうした症状に苦しんでいる方に何かしらの参考にしていただければ幸いです。

目次へ戻る この節のトップへ戻る

つづく

« 2018年7月 | トップページ | 2018年9月 »