天体写真の画像処理には欠かせないノイズリダクション。とくに露出時間に制約のある遠征派にはなくてはならない機能ですが、最近、思うところがありノイズリダクションのかけ方を変えました。少しゆるめたのです。
理由の一つめは大切な構造を消してしまっていたこと。下の比較をみてください。やっちまってます。明らかに何かが失われています。これは致命的ですね。言い訳すると今回の左側はたまたま強くかけた・・・そんなことないか。いつもやっちまってた気がします。
理由の二つ目は、背景のツルツル画像の違和感です。なんか気持ち悪い。なぜだか考えてみました。ツルツルな背景にするには本来は十分な露出時間や暗い空がなければならない。とすると背景だけでなく天体もそれなりの解像度があると直感的に思うはずです。背景に見合わないクオリティ天体の画像があることで、バランスを欠きなんとなく人工的な気持ち悪さを感じるのだと思います。Zoom会議で背景が高級なリビングなのにヨレヨレのトレーナーを着ているみたいな感じとも言えます。また目を閉じてみると見える映像は真っ暗ではなくて、私の場合、色のついたノイズだらけ。眼視ではつねにノイズがある映像を見ているからかもしれません(実はこれ、音でも同じ感覚があります。レコードからCDになったときノイズレスがなにやら不安でした。あれ、いまは慣れてるなぁ)。
またノイズリダクションをかけるタイミングも悩ましい。いまは途中ではやらず画像処理の仕上げとして最後にかけることにしています。画像処理中にノイズリダクションしてしまうと、まだ見えていない構造を消してしまわないか、という懸念がその理由です。これは議論のあるところで、早めにノイズリダクションしないと強調処理によってノイズも強調されるという心配はあります。一方でノイズリダクションを先にすることでできた処理の痕跡を強調してしまう可能性もあります。このテーマについては、我らがだいこもんが「ノイズ処理は、画像強調の前に行うべきか、後に行うべきか?」と気合の入った検証をされていて、どこでノイズリダクションをかけても大差ない、という結論をだしています。私はそれに乗っかり、プロセスの一番最後にしました。でもすぐに方針を変えるかもしれません。それくらい微妙な問題です。
では、ここからはTGVDenoiseによるノイズリダクション処理方法をみていきましょう。
TGVDenoiseを使う
ノイズリダクションはDeNoise AIが有名ですが、私には効果が大きすぎて上の天体とのバランス問題から合わなかったことと(これはパラメータを詰めれば改善するかもしれません)、アプリ移動の手間の削減にPixInsightで処理してしまいたいこともあります。
Process – NoiseReductionメニューからTGVDenoiseを起動します。
主に設定するパラメータは次の3つです。
- Strength・・・ノイズリダクションの強度の設定
- Edge protection・・・構造体の境界部分をどの程度保護するか設定。小さい数字であるほど細かく保護するがノイズも一緒に保護される。大きい数字ほど滑らかになるが細かい構造が失われる
- Local support・・・処理の強さを輝度情報を使って設定。マスクではないですが、マスクに似ている
標準偏差をEdge protectionに指定する
Edge protectionは、背景のざらざらに相当する大きさは滑らかにし、それ以上の構造は保護するというアプローチをとります。つまりざらざらのギリギリの数値を設定したい。そのために背景の標準偏差を測定し、その値をEdge protectionとして設定します。標準偏差はいわばざらざらの平均値。なにやら難しそうですが、操作は簡単です。
まず明らかに背景とわかる部分に小さなプレビューを設定します。
ここでProcess – ImagesメニューからStatisticsを起動します。これは画像の各種統計データを確認するツールです。起動したら作成したプレビューを設定します。
そのままでは標準偏差(stdDev)が表示されていないので、スパナボタンを押します。表示された画面でStandard deviationを設定し、OKを押して閉じます。
するともとのStatisticsにstdDevが表示されます。
R, G, Bごとに値が違いますね。ここでは一番ざらざらが大きいBの値を採用することにしました。2.94e-02を、TGVDenoiseのEdge protectionに設定します。
Local SupportのためにSupport Imageをつくる
ノイズは暗いところが目立つので、暗い部分に強く、明るい部分に弱く設定します。通常のマスクを画像自体にかけてもよいのですが、TGVDenoiseではLocal Supportという独自の機能が搭載されています。マスクをかけた場合、TGVDenoiseの外で機能するため処理が全部終わってからマスク処理がかかりますが、Local Supportの場合はTGVDenoiseの内部処理ごとにマスクのように機能します。その分だけきめ細かく効くのかもしれません。
Local Support設定には、まず画像のL成分を取り出します。これにはツールバーのExtract CIE L*Componentボタンを押すか、Image – ExtractメニューからLightness (CIE L*)を実行します。
すると元の画像のL画像が生成されます。
Support Imageとして使うために背景をより暗く、星雲部分を明るくします。これにはHistogramTransformationを利用します。シャドーを通常よりも右にして背景を黒にし、またミッドトーンを左にして明るくします。
こんな感じにできました。
これをTGVDenoiseのSupport Imageに設定します。Local Supportにチェックをいれ、<target image>をクリックすることで設定することができます。
これでLocal Supportの設定ができました。
Support Imageを作らなくても、Local Supportにチェックをいれると、TGVDenoiseはL画像を内部で生成してくれます。しかしこのときはMidtones, Shadows, Highlightsの設定が必要になります。HistogramTransformationを見ながらの方が簡単なのでSupport Imageを作成することを推奨します。
Support Imageのコントラストの上げすぎに注意
いろいろな画像でTGVDenoiseを試していると、TGVDenoiseがうまくいかない場合がありました。
処理後の画像のコントラストが低くなり、なんというかのっぺりしています。とくに黒い部分がグレーに潰れました。これ、Support Imageのコントラストの上げすぎが原因でした。Support Imageとして取り出したL画像はHistogramTransformationでシャドーを切り詰めミッドトーンを下げてコントラストを上げていまました。するとこの画像のようにのっぺりしてしまったのです。試しに、取り出したL画像になんの処理もせずに、そのままSupport Imageとして設定したところ改善しました。
TGVDenoiseはSupport Imageの明るさに応じてノイズ処理の強度を変化させます。そのためSupport Imageの暗い部分が明るくしてしまった結果、ノイズ処理が一様になりのっぺりしたのかもしれません。処理結果がおかしいときは、Support Imageを変えてみてください。
Strengthの調整はなんども試す
次はノイズリダクションの強さを決めるStrengthの設定です。TGVDenoiseは処理時間が長いことと、何度もやり直しをするためにPreviewで試してみます。またCIE L*a*b* modeにします。これにより輝度情報のLは弱く、色相のChorominanceは強めに設定できます。しかし実はRGB/Kでも変わらないという情報もあります。既定値のまま実行してみましょう。
これはダメですね。Strengthを弱めてみましょう。
LightnessとCrominanceの右端の数値を0から−1にします。これは10のn乗のn部分なので、−1では強さを1/10にしたことになります。
では実行してみます。
さきほどよりもいくぶん良くなりましたが、まだ強すぎるようです。次に−2で既定値の1/100にしてみます。
実行してみます。
これなら良さそうです。この設定で肝心なノイズリダクションは効いているのでしょうか。背景部分のPreviewを作り実行してみます。
これも大丈夫そうです。この設定で◼️ボタンを押して全体に設定します。今回は10のn乗部分を変更しましたが、左側の数字(5.00となっている部分)で、より細かく設定もできます。仕上がりはこんな感じです。
ついやりすぎてしまうノイズリダクション。でも多少ざらざら感を残した方が落ち着きも感じられるように思います。これは天体と背景のバランスの問題なのか、そもそも一定のノイズに安心感があるのか?観賞用としての写真ですので、良い頃合いを見つけたいものです。模索は続きます。