|
ここでは、
BatchPreProcessingでPreprocessが終ったモノクロCCDの画像L,R,G,B4枚を、海外の先駆者が推奨している手順にしたがって仕上げていく過程を解説しています。PIではリニアデータで行うProcessとノンリニアで行うProcessが混在しているので、各Processの仕様が分からないうちはこの手順に従った方が無難です。
ノンリニア変換はHistogramTransformationというProcessで行いますが、これは一般的にDDPと呼ばれる作業と似ています。ただし変換曲線はソフトごとに異なるようで、PIのHTではSI7のDDPより、ハイライトが飽和しにくい設定になっています。したがってSI7でDDPを行ったデータをPIで使う場合、ここに示す変数値がそのままでは使えない事もあると思います。
またFitsデータは0から1の範囲に変換されているので、16bitで0-65535を使うソフトと併用する場合は注意が必要です。
|
STF1 |
STF2 |
|
まず、最初に使うプロセスは、ScreenTransferFunction(STF)です。
STFは使用頻度が高いProcessですが、これ自体データを書き換える機能を持っていません。STFで行う全ての操作は画面上の「見た目」を操作しているだけであることが特徴です。したがって何回STFを操作してもその画像の履歴(HistoryExplorer)に記録が残りません。逆にSTFをどんなに慎重に調整してもその状態の画像を保存して残す事も出来ませんので注意が必要です。
まずはAutoStretchボタン(STF1)を押してみます。すると殆ど真っ黒だった画像の星雲や銀河が見えるようになります。これは画像の線形データをDDPのような方法で中間領域を圧縮し、256諧調の画面でも見やすくしてくれるためです。ただし繰り返しますが画像が持っているデータそのものは何も変わらないので、この状態で保存しても画像は暗い線形データのままの状態です。
右下のResetボタン(STF2)で効果をオンオフ出来ます。
実際にレンジを切り詰めるProcessは他に用意されているので、STFは基本的には作業用に画像を確認するためだけのツールです。カラー画像を扱う際には、カラーバランスをNewInstanceとして他の画像やProcessに渡す事も出来ます(後述)。
STFで画像の状態を確認し、PreProcessingに問題が無ければ先に進みます。問題があった場合、PIのBPPでは処理過程の画像が全て保存されているので、状況に応じて途中から手動で処理を修正していくことも可能です。 |
ChannelCombination1 |
ChannelCombination2 |
ChannelCombination3 |
|
続いて使用するプロセスはChannelCombinationです。このプロセスは種々のカラー合成に使用可能ですが、この場合はRGBを選択し3枚の画像を指定して、左下の丸ボタン( ChannelCombination1)を押します。すると暗い画像が1枚生成されるのでSTFを使って状態を確認します( ChannelCombination2)。
ChannelCombinationにはカラーバランスの調整やフィルター係数を指定する機能はないので、生成された画像はモノクロのRGB画像それぞれが持つ輝度情報をそのまま反映したものになります。そのため背景色は、空の状態やデバイスの種類で異なりますが、大抵は左のような赤系か、あるいは緑系になるような気がします。それ自体はここでは問題にせず、先に進みます。
STFにはLinkRGB Channelsというボタンがあり( ChannelCombination3)、これをOFFにすると一応カラーバランスが整った画像を確認することも出来ます。ただし、実際にカラーバランスを整えるのはこの先の作業になるので、このボタンはONにしてSTFで色調をいじらない方が混乱しません。
参考:
LinkRGB ChannelsをOFFにした状態ではSTFで色調補正を行うことも可能です。そのデータをインスタンス(後述)で他のプロセスに渡して画像データに変更を加えることもできるのですが、データの非線形圧縮後(DDPのようのもの)に微調整として行うもので、リニアのデータに対して使うべきではないと思われます。 |
|
必要があればここでクロップ(コンポジットでずれた周辺部分を切り取る作業)を行います。
|
Crop1 |
|
RGB画像の縁に重ね合わせのズレを見つけた場合、次のDBEを行う前に、ずれた周囲を切り取るDynamicCropを行う必要が有ります。
(PIでStarArignmentを行い位置合わせをした画像は大きさも調整されているので、ビニング画像もこの時点では意識することなく扱う事ができます。)
DynamicCropで領域を指定し、実行すれば左のRGB画像は切り取りが完了します。しかしそれでは折角位置合わせが終了しているL画像と合わなくなってしまいます。
そこでRGB画像で領域指定が完了したDynamicCrop画面の左下三角をL画像にドラッグ&ドロップする事で、RGBでの領域指定をL画像のCropに反映させる事が出来ます。これで、両者のCrop後に再度位置合わせをやり直す必要がなくなります。
|
|
フラット補正を行った画像でもカブリなどはあるので、DynamicBackgroundExtractionを行います。
|
DBE1 |
|
次に行う処理はDynamicBackgroundExtraction(DBE)です。
(状況によってはBackgroundNeutralization(BN)を先に行った方が進めやすいこともありますが、まずは基本に忠実に。)
DBEでは、まず対象となる画像でクリックします。すると画像上に十字線が表れてDBEが操作可能になります(DBE1)。
とりあえず注目すべき変数は
Tolerance:大きくすると背景調整の自由度が増す。小さすぎると十分に調整できない。
ShadowsRelaxation:大きくすると明るいpixelを除外して、よりSky Backgraoundを作りやすくする。
の2つです。
|
DBE2 |
|
サンプルを配置する上でMinimum Sample Weightを大きくすると配置できない領域が減りますが、この値自体がサンプルに意味を与える物ではないとなっています。Toleranceと上手く組み合わせて使う事で、より良いバックグラウンドモデルを作れます。
DBE2ではGenelateボタンでサンプルを自動配置していますが、必ず自動配置しなければならないわけではなく、自分で必要な場所にサンプルを置く事も除去する事も可能です。
サンプルを配置したら、DBEを実行してみます(DBE2-1)。
DBEでは配置されたサンプルの情報を元に、バックグラウンドモデルを作成し、これを元の画像から減算か除算することになります。
減算(Subtraction)はカブリなど画像を明るくする光害等に対して有効です。
除算(Division)は周辺減光など光学系による減光で(減光部分の星も暗くなっている場合)に有効です。
この設定では背景モデルも出力されるので、自分が配置したサンプルからどのような背景モデルが作られるのか観察してより現実的なモデルをつくるサンプル配置を試行錯誤していくことになります。 |
DBE3 |
|
Samples per Rowを20にしてみました(DBE3)。サンプルが沢山配置されます。
サンプルが少ない:画像の細かな凹凸を無視した大きな曲面のモデルとなる。
サンプルが多い:密度に応じて画像の細かな凹凸の影響を受けたモデルとなるが、それが良好なモデルとは限らない。
サンプルの密度はさまざまな考えがありますが、自分が処理している画像の特徴に最も適した配置を選ぶべきで、多いほうが良いとか少ない方が良いという一面的な判断は出来ません。 |
|
Samples per Rowを20で、Tolerance=2.000としてみました(DBE4)。
DBE3と比較して、銀河の周辺より近くまでサンプルが配置されています。 この状態でDBEを実行するとDBE4-1のような画像となります。
このような配置では銀河周辺の淡い部分が減算され消失してしまうことが分かります。
DBE4-2がこのサンプル配置で作成された背景モデルで銀河領域が明るく、背景部分にも微妙な凹凸が見られます。 |
|
次は極端な例ですが、サンプルを6個のみ手動で配置した場合です。 Toleranceはデフォールトです。
この背景モデルでは画面全体のカブリが緩やかに表現され、中央部の銀河の影響を全く受けていないことがわかります。
目的に応じたサンプル配置という意味がご理解いただけるでしょうか?
|
DBE6 |
DBE6-1 |
|
この例はデモでお見せした、サンプルサイズ(Sample Radius)の違いが背景モデルに及ぼす影響です。
サンプルサイズを大きくするとDBE6に示すように右上のサンプル内のPixelが多くなります。この場合1つのサンプルの特徴を構成するPixel数が多いのでPixel単位のばらつきの影響を受けにくくなります。その結果、隣接するサンプル同士のばらつきは画像の局所的な色むらの影響を受けにくく、凹凸の少ない背景モデル(DBE6-1)が作成されます。 |
DBE7 |
DBE7-1 |
|
サンプルサイズを極端に小さくするとDBE7の右上のようにサンプルを構成するPixel数が少なくなるので、DBE6と比較して1つ1つのサンプル間のばらつきが大きくなります。その結果、DBE6と全く同じサンプル配列位置でも生成される背景モデルは細かな凹凸を持ち、補正される画像もその影響を受けます。
DBE7-1では背景の色むらが強調されてしまいましたが、使い方によっては小さなサンプルを高密度で配置して細かな凹凸に対応するモデルを作る事も可能になります。
この場合も大きければ良いとか、小さい方が良いという事ではない認識を持って、状況に応じた使い分けをすることが大切です。 |
|
DBEで背景を平面に補正する事が出来たら、次は背景をニュートラルグレーに近付けます。
|
BN1 |
BN1-1 |
|
BackgroundNeutralization(BN)は指定したサンプル領域で、R,G,B各チャンネルの平均値を整えて背景をグレーに整えます。
まず画面上のツールボタンの中のPreviewボタンを押して、領域を指定できる状態にします。
対象となるRGB画像上で、なるべくカブリや色むらの無い領域を選択します。選択領域にはPreview01と名前が付きます。これをSelect Reference
Imageで選びBNに取り込みます。
これで左下の四角ボタンを押して実行します。
BNではLower, Upper Limitを指定できます。万が一背景領域のPixelがデフォールトの0.1より大きい場合はUpperLimitを上げる必要があります。
BN1-1に示すようにPIでは画面上マウスポインタの位置の情報が画面下にまとめて表示されます。このR,G,Bの値が0.1を越えていなければLimitの調整は必要有りません。
※PIでは0-65535の16bit情報が0−1のデータに変換されているので、全て値は1以下となります。 |
BN2 |
|
BNの実行後、STFのAutoStretchを行い状態を確認し、メニューからPreviewの削除を選択して、使用したPreview領域を消去します。
ここでBNのウィンドウを閉じる事になりますが、PIではプロセスを閉じても、PIを終了するまでは設定した値が保持されます。次にBNを開いた場合、今回の設定がそのまま残っているので、注意が必要です。 |
|
Previre領域を複数個所同時に使用したいときにはScriptのPreviewAggregatorを使用します。
|
Aggregator |
|
Script->Utilitiesの中にあるPreviewAggregatorを選択し、予め選択しておいたPreview領域の中から使いたいものにチェックを入れます(赤○の部分)。
実行すると選択したPreviewを1枚の画像に合成したAggregatedという画像が生成されるので、これを普通のPreviewと同様に使います。
複数の領域を使うということは一見良さそうに思えますが、特徴の異なる領域が寄せ集められるとBNやColorCalibration(CC)の効果が十分に発揮できない場合もあります。Aggregatorを使わずに良質なサンプルを1ヶ所指定する方が良い場合もあります。状況をみて使い分けが必要です。
|
|
BNが終了した画像にColorCalibration(CC)を行います。
|
|
ColorCalibration(CC)はPIの特徴的なプロセスの1つで、適切に行えば撮影デバイスに関わらず、与えられたサンプル内で最良の色調に整えてくれます。その後は色彩強調するだけでカラーバランスを全くいじらずに完成する事も可能かもしれません。一点、問題があるとすれば「それは本当の色調か?」という事です。製作者サイドはこの点について明確な回答を持っているようです。個人的な意見ですが、一定の基準に従って画像処理ソフトが整えてくれる色調は、アマチュアがフリーハンドで試行錯誤して作り出す色調より、再現性があることを含めて客観的な答えであるような気がします。
CCには3つの方法があります(いずれもバックグラウンドは同様に領域指定して行います)。
1、ホワイト・リファレンスイメージを指定して、その領域その物を使ってカラーバランスを調整する
2、ホワイト・リファレンスイメージを指定して、その領域内の恒星を使ってカラーバランスを調整する
3、ホワイト・リファレンスに使える適切な領域が無い場合、Region of Interestをチェックし領域を指定する
(この場合ホワイト・リファレンスの領域は指定しないとなっていますが・・・)
備考、この3つ以外にもRGBのスライドバーを直接操作する(SI7と同じようなもの)方法も一応用意されていますが、開発者側としてはお勧めではないようです。 |
CC1 |
|
今回は、対象が銀河なので、1番目の方法を使います(1は基本銀河を領域に指定する場合に適しているような解説がありました)。
背景領域はAggregatedを用いてみました。勿論1つのPreview領域でもかまいません。
1番目の方法を使う場合はStructure Detectionのチェックをはずします。2番目の方法を使うときはここにチェックを入れます。きちんと動作しているか確認したい場合はOutput
White Reference Maskにチェックを入れます。すると領域内をどのように使用したか確認する事が出来ます。 |
CC2 |
|
実行後、STFで調整し画像を確認します。銀河をホワイト・リファレンスイメージに指定した場合、銀河全体はかなり白く見えます。この時点で不用意にRGBチャンネルのトーンカーブやレンジ切り詰めなどを行わない事が大切です。まずはCCが出力した結果のまま先の処理を行い、問題があればCCの領域を選択しなおすかCCの方法を変更するなりしてカラーバランスを最適な状態にするというトライアル・アンド・エラーがPIらしい処理と思われます。ある程度経験を積むと、この画像では「こんな感じ」というのが分かってきます。 |
|
ここで画像をノンリニアに圧縮しSTFなしでも画面上で見える状態にします。
|
HT1 |
|
ステライメージ等ではデジタル現像と呼ぶ処理です(PIにもDigitalDevelopmentはありますが)。使用するプロセスはHistogram Transformation(HT)です。HTを起動したら処理する画像を選択します。
HTでの圧縮時に注意する点は
1、処理で切り捨てたシャドウ・ハイライト部分は復元できない。
2、数回に分けて行っても問題ない。
3、STFのAutoStretchがONだとPreviewが正しく表示されない(データに影響はありません)。 |
HT2 |
|
HTには大きく分けて2通りのやり方があります。1つ目はSTFのデータをインスタンスとしてHTに渡して、それを画像に反映する方法です。この方法はSTFのAutoStretchの情報をそのまま渡すことも出切るので非常に簡便ですが、AutoStretchはバックグラウンドのレベルが比較的高めで、しかもシャドウ部分がギリギリまで切り詰められているので、実行後に再度調整することが難しくなります。
この場合、ヒストグラムの拡大機能を使って実行前にSTFから渡されたデータを調整することも可能ですが、その時間をかけるなら次の方法をお勧めします。
2つあるヒストグラムの下はこれから行う処理の情報、上のヒストグラムは実行後の状態を示しています。 |
HT3 |
|
2つ目の方法は、HTのReal-Time Previewを見ながら手動でミドルトーンとシャドウを調整する方法です。
基本的にはミドルトーンを左側に、シャドウを右側に動かして階調幅を圧縮していきます。このとき解説に因れば天体写真を処理する場合には右端のハイライトを左にスライドする意味は無い(やるべきではない)となっています。またミドルトーンは左右どちらにも調整可能ですが、シャドウは一旦実行するとその時点でシャドウマークの左側は切り捨てられて再現できなくなります。 |
HT4 |
|
HTが完了した状態です。これでSTFなしで画像を見ることが出来ます。
右端のハイライトを動かさずに処理する事で、16bitデータのハイライトを最大限飽和させずに表現する事が可能となるようです。
処理完了後にHT右下のResetボタンを押して上下のヒストグラムが同じになる事を確認する習慣をつけた方が良いです。
ヒストグラムを注意深く観察するとGのピークが若干右よりである事が分かります。これはこの画像にGノイズが非常に多いことを示しています。
|
SCRN前 |
|
STFの便利な?使い方
HTが終った画像はSTFを使わなくても画面上で見ることが可能ですが、このときSTFのAutoStretchを使用するとさらに強調した画像を見ることが出来ます。
この方法を使うと、HTでGのピークが右に寄っていた原因となる緑の色むら?を確認する事が出来ます。この操作でも元の画像データは変更されないので、ノイズ除去の参考画面として使用することが可能です。
|
|
次はRGB画像のGノイズを選択的に除去します。
|
SCNR後1 |
|
SCNRはRGBそれぞれのチャンネルが用意されていますが、基本的に利用するのはGチャンネルのみです。Amountは0.8-1.0程度がよいでしょう。解説によれば宇宙には惑星状星雲など幾つかの対象を除いてGreenの光源は存在しないので、背景にあるGノイズは強めに除去してかまわないと言うことです。
HTで非線形圧縮を行った画像をもう1度STFでAutoStretchしたSCNR前とSCNR後を比較すると、グリーンのノイズが選択的に除去されている事がはっきり分かります。解説ではこのノイズ除去は色調に影響しないとなっていますが、除去後の背景は若干RBが強く、ヒストグラムでもGのピークが左にずれている事が分かります。
|
SCNR後2 |
|
SCNRでずれた背景を修正するにはSTFとHTを使用する方法が確実だと思われます。
まずSTFを右下のResetボタンでリセットします。その後Link RGB ChannelsをOFFにします。この状態で緑のスライドを左に動かすと対象となる画像の色調が変化するのがわかります。
(もし画像が変化しない場合はSTFのターゲットが目的の画像になっていないためです。画像をクリックしてからSTF右下Track Viewボタンを押してみて下さい。)
肉眼的に背景がグレーになった状態でSTFのインスタンスをHTにドラッグ&ドロップします。するとHTの上のヒストグラムがSTFで調整した状態に変化します。このピークがしっかり揃うようにSTFを微調整しまたHTにドロップし、ヒストグラムをしっかりそろえます。
このHTのインスタンスを対象となる画像にドラッグ&ドロップすることで、背景の微調整を行う事ができます。 |
SCNR後3 |
|
ドロップした状態です。画像の背景が若干グリーンに偏っています。これは対象画像のバランスがHTで調整されたため、調整に使ったSTFのバランスで過補正に表示されているためです。
必ずSTFとHTをそれぞれ右下のResetボタンでリセットしてから、色調とヒストグラムの確認を行います。
※この後行うACDNRなどのノイズ除去でRGBのピークはずれるのでこの時点でのGの変化にあまり神経質にならなくてもよいかもしれません。
|
|
この後、色彩強調やノイズ除去を行うことになりますが、作業を行う上で便利な機能をご紹介しておきます。
|
Preview1 |
|
1つ目はプレビュー機能です。
時間のかかる処理で、プロセスの変数設定を調整するとき一々全画面で試していると時間がかかります。そこでツールバーのNew Preview Modeをクリックし画像上でプレビュー領域を指定します。するとPreview01というタグと緑の枠が表示されます。BNやCCではこの領域を指定するだけでしたが、このタグをクリックすると選択したプレビュー領域を見ることが出来ます。
このプレビュー領域に対して、プロセスのインスタンスをドロップしてやると、プレビュー領域だけで処理を行うことができます(勿論Applyでも良いですが、私はインスタンスを放り込む方が好きです)。これで計算量を減らし瞬時に結果を確認することが出来るので、ノイズ除去、色彩調整、デコンボリューションなど試行錯誤が必要で時間のかかるプロセスでは便利です。
このプレビュー画像は、通常の画像に対して行うのと同様に拡大・縮小も普通に行えます。
欠点はプレビューのUndoはツールバー左端の通常のUndoボタンではなく、プレビュー専用のUndoボタンを使う必要はがあり、間違いやすいことです。
そこで・・・
|
Preview2 |
|
プレビューでは、同じプレビュー領域を複数作って切り替えて効果を判定する方が、間違いを減らしやすいだけでなく多数の画像の中から最良の物を選ぶことも出来て便利です。
プレビューのタグを同じフレームにドラッグ&ドロップすると複製が作られ、画面上にドロップするとクローンを作成することが可能です(ただしPreviewのクローンには”_clone”が付きません)。
プレビューの複製とクローンの違いは、フレーム上に作った複製はプレビューの複製ですからMenu -> Preview -> \ Delete
Allで一括消去できますが、画面上に作るクローンは1枚の画像として扱われるのでプレビュー削除で消すことは出来ません。
|
Display Channels |
|
2つ目は、Displayチャンネルの選択機能です。
ツールバーの左側にデフォールトでRGBが表示されたリストボタンがあります。これをクリックすると選択されている画像を、目的のチャンネルで表示することが可能です。勿論チャンネル分割で一旦各チャンネルに分けて作業するわけではないので、この状態で何か処理を行っても画像全チャンネルに効果が及びます。
使い方としては前述のプレビューと組み合わせて、プレビュー領域で、チャンネル毎に使用するプロセスの効果を確認するような操作が簡単に出来ることです。特にノイズ除去では、Labチャンネル別に効果を設定できるので非常に効果的です。
メニューのImage -> Displayでも同じ操作を行えます。
|
|
では、色彩強調を行います。
|
CT1 |
|
色彩強調ではCCのカラーバランスを壊さないようCurvesTransformation(CT)の右端「S」(Saturation)を使います。このプロセスではRGBやLabでの調整も可能ですが使い過ぎに注意しましょう。
Real-Time Previewで彩度を確認しながらカーブを凸に変形させて色彩強調の程度を調整します。
実行すれば色彩強調は完了です。 |
CT1 |
|
このとき背景部分の彩度を維持するために、他のソフト同様、輝度マスクを用いる事ができます。
このマスクはノイズの少ないL画像からHTとCTを使って作成しました。
マスクを作用させるには、マスクとなる画像のタグを、目的の画像の赤丸部分にドラッグ&ドロップするだけです。 |
CT1 |
|
マスクが作用する部分は画面上赤く表示されますが、メニューのMaskで、マスクの表示・非表示、反転などの操作を行う事が出来ます。
マスクを非表示にしても、このバージョンからマスク画像はタグが赤くなるので、マスクのとり忘れを防ぐ事が出来ます。
※STF画像も何処かにマークが出るとSFTのとり忘れ防止になるのですが・・・ |
|
次はACDNRを使ったノイズ除去です。
|
ACDNR1 |
|
ACDNRはLabチャンネルで行うノイズ除去です。処理には時間がかかる場合が多いので予め適当な領域をPreviewとして何枚か用意して、ここで効果を試しながら変数を決めていくとよいでしょう。LightnessとChrominance別々に設定する事が出来るので、PreviewもDisplayでL,
a, bチャンネルを表示しながら調整すると効率的です。
まず最初に調整する変数はStdDevです。CCDでは1〜1.5、フィルムでは2〜3、マスク併用で背景に用いるなら4〜6程度と書かれていますが、自分の画像にあった値をLightnessとChrominance別々に探します。 |
ACDNR2 |
|
輝度が高い部分を保護するにはLightness Maskをチェックし、このプロセスが作成するマスクを利用します。window下部を開いてPreviewをチェックしマスクを調整することが出来ます。マスクの調整が終わったらPreviewのチェックをはずします(実行前にPreviewのチェックをはずさないと、マスク画像が生成されてしまいます)。
Amount, Bright Sides (Dark Sies) Edge Protectionも調整可能です。このプロセスはPreviewを利用してしっかり変数を追い込む事でよりよい結果を得る事が出来ると思います。
|
ACDNR3 |
|
今回のデモ画像ではRGBは2*2ビニング画像なのですが、StdDevは2.6程度が限界で、これ以上大きくするとマスクを使っても不自然な副作用を生じてしまいます。
ACDNR前後で背景の粒状感は改善しています。ヒストグラムの幅が変化している点が興味深いです。
このほか、GREYCstorationというノイズ除去も画像をスムースにする効果はありますが、輝度マスクは必須ですし強く作用させると背景部分にも副作用があります。 |
|
これでRGBの基本的な処理は完了です。(細かい事を言えばまだまだやる事はあるのでしょうが、それは個人のお好みで追加してください)
続いてL画像の処理に移ります。
|
|
L画像では、RGB同様にDBEを行います。RGB画像のインスタンスをアイコン化して残しておく事で、サンプルの配置を再現する事が出来ます。この方法は面倒なサンプル配置を省略できるので簡便です。ただし、RGB画像とL画像では若干かぶりの特徴が異なる可能性もありますから、新たにL画像でサンプルを配置して処理した方がよい場合もあります。
L-DBE1:
予めRGB画像でDBEを行うとき、全ての設定が終った段階で左下のnewインスタンスボタンを画面の空いている場所にドラッグ&ドロップします。これでアイコンが生成されます。このアイコンは単なるプロセスのアイコン化では無く、DBEの全ての変数が設定された状態で保存されてるものです。残念ながら自動で名前を付けてくれないので、何のアイコンか分からなくならないように気を付けて取って置きます。
L-DBE2:
RGBの処理が終わりL画像を処理する段階で、まずL画像をアクティブにした状態で、取って置いたアイコンをダブルクリックします。
L-DBE3:
するとDBEのウィンドウが生成され、RGBで行ったDBEの設定がL画像上で再現されます。
勿論この状態から設定を変更して使用する事が可能です。
|
|
あっという間にDBEが終る場合もあるでしょう。ここからがL画像「第1の山場」Deconvolution(Deco)です。
|
Deco1 |
|
CANP'13では、時間の関係でお話できませんでしたが、Decoは非常に有効で魅力的なプロセスです。PIを使ってみようと思う理由の1つがこのDecoではないでしょうか? ところが、最初の内は非線形圧縮してからDecoするために変数のデフォールト値を大幅に変更しなければならなかったり、あるいは変数が多過ぎて調整しきれなかったり、苦労する割りに報われず結局諦めてしまうことが多いのではないでしょうか(私自身がそうでした)。
加えてフォーラムなどでも色々な情報が氾濫していて、「こうすれば上手く行く」とか「この変数は0にして使え」みたいな話があちこちで聞かれます。
私はPIのDecoは使い始めて4年目になりますが、全ての画像に対して「こうすれば上手く行く変数設定!」と言うのは「無い」と思っています。ここで解説するDecoの使い方は、現在処理している画像に効果的なDecoを行うための変数をどうやって見つけていくのか、というお話です。そのために、デモの画像に加えて3つの画像を用意しました。
何に着目して、どこから手を付けていけば無駄なく変数を設定できるか、私なりの道筋をお話します。Decoに限らず、PIではデフォールトの設定には意味があると言うことを忘れず、尊重して付き合っていくことが近道です。
|
Deco2 |
|
4枚の画像はSTFをした上でDeco1の配置で一部分をPreviewにしてあります。ちなみに左上:M63、左下M101、右上ペリカン星雲、右下M81です。
これら4枚に同じDecoを行うことで、PIのDecoを上手く使いこなす勘所を分かって頂ければと思います。 |
Deco3 |
Deco4 |
|
Decoを開いたら、まずResetボタンを押して確実にデフォールトの状態にもどしてからParametricPSFで4枚の画像を同様に処理してみます(Deco3)。 次に、4枚をResetPreviewで元に戻した上で、同様にParametricPSFを使い、今度はDeringingにチェックを入れ中の変数はいじらずに、また4枚を処理してみます(Deco4)。
この2つの操作で4枚の画像の変化は大きく異なります。M63とM101はDeco3で恒星周囲に黒い輪は出来ていませんが、DeringingをチェックしたDeco4は画像が分からなくなるほど変化しています。これに対しペリカンはDeco3では恒星周囲に黒い輪が出来ていますが、Deco4は恒星周囲も比較的良い状態で、星雲にもDeconvolusionの効果が出ています。M81ではDeco3、Deco4共に黒い輪が出ていますが、よく観察すると輪の状態は異なります。
この違いは何が原因で起こるのでしょう。 |
Deco5 |
|
PIでは画面下部にマウスポジションの輝度が常に 表示されています。これを使って各画像の明るさの特徴を見てみます。
M63 :Highlight=0.1240, Midtone=0.0150 to 0.0050, Shadow=0.0023
M101 :Highlight=0.1540, Midtone=0.0300 to 0.0090, Shadow=0.0085
ペリカン:Highlight=0.7500, Midtone=0.1200 to 0.0130, Shadow=0.0110
M81 :Highlight=0.9220, Midtone=0.2500 to 0.0900, Shadow=0.0850
以上のような感じです。大まかに言えば、M63は非常に暗い画像、M101は若干それより明るいですが、かなり暗い画像です。これに対しペリカンはかなり明るく、M81は非常に明るい画像といえます。これをDecoの変数のデフォールト値と比較すると、DeringingのGlobal Dark=0.100が絡んでいるように見えます。
|
Deco6 |
|
そこで、各画像でDeringingのGlobal DarkをMidtoneの高値(中間程度の輝度の星周辺)を参考に調整し下のような値でDecoを実行するとDeco6のようになります。左2枚ではDeco4のように画像が崩れることも無く、M81では黒い輪は出ていません。
M63 : Global Dark=0.000
M101 :Global Dark=0.010
ペリカン:Global Dark=0.120
M81 :Global Dark=0.270 (ぴったり幾つと決められる値ではありませんが、上の各MidToneと桁が同じ程度で探します。)
Global Darkを大きくする事には副作用を懸念する意見もありますが、それは各自のご判断に任せるとして、Deringingに関してはこの変数が非常に重要な意味を持つことが分かります。副作用を最小限にするには可能な限りGlobal
Darkを小さく設定することです。そのためには画像内の明るい星ではなく、Star Maskが出来るかできない暗さの星を選んで値を決めると良いでしょう。
実際、Deco6だけから判断すると非常に暗い画像ではDeringingするまでもなく恒星周囲に黒い輪は出ません。しかし、画像全体でみると、特に明るい輝星部分ではMaskやLocal
Supportを使う必要があるのです。そのため全ての画像でGlobal Darkの最適値は必ず調べておいて、暗い星はGlobal Darkで、明るい星はLocal
Supportで保護した方が良いと思われます。
この段階では、Decoの効果については保留しておきます。
|
Deco7 |
Deco8 |
Deco9 |
|
では、M63について実際にDecoを行った状態を見ていきましょう。Previewの範囲ではGlobal Dark=0だけで問題なさそうでしたが、全体でDecoしてみると輝星の周囲には黒い輪が出来てしまうことがわかります(Deco7)。そこでMaskとLocal
Supportを併用することになります。
Mask画像はDeco8左下で、恒星をと背景をマスクし、輝度の高い銀河の部分だけに作用が及ぶマスクです。問題のLocal Supportは右下、星マスクの反転画像です(Local Supportは何故か輝度の高い部分が保護されます)。暗い画像では特に背景の荒れを抑えるために背景は確実にマスクすべきです。
この2枚の画像を適用した上で、StdDevを変化させて適当な効果を探ります。この時点で動かす変数はStdDevだけです。簡単に最適値を見つけることが出来ると思います。StdDevは大きくした方がDecoの効果を感じることが出来ますが、高過ぎると不自然になってしまいます。Iterations(繰り返し)は20回、30回と増やした方が効果が高まる画像もあるので試した上で変更すべきでしょう。Wavelet
Regularizationは良く分かりませんが構造を維持するためにはLayersを少なく保つべきとなっています。Dynamic Range
Extensionは効果があるらしいですが、High Rangeを上げると淡い部分が消え、Low Rangeを上げると暗くなっていくグラデーションが不連続になるような気がします。上手い設定方法が分かりません。
Deco9では、さらに、この画像のガイドエラーで伸をびた星像にpoint spread function(PSF)合わせてDeco7と同じStdDevで実行しています。残念ながらリニアデータでDecoを行う場合、星をマスクしてしまうことが多いので、この画像復元効果が星像その物に影響することはありませんが、星像を変形させた撮影時のブレが収束する方向にDecoが作用すると解釈できるのであれば、Deco8よりDeco9の方が良いことになります。
ここまでのポイント
1、Deringingが成功の要。StarMaskで星像が生成されない暗めの星は、あらかじめGlobal Darkを調整して黒い輪が生じないようにしておく。Global
DarkはDeringingが背景に影響を及ぼさないようにするためにも画像の輝度を調べた上で慎重に設定する。
2、Decoの対象となる明るい星雲部分の効果を優先するため背景は輝度マスクで保護し、StdDevを変化させた時の背景の荒れを最小限にしておく。逆に輝度の高過ぎる銀河の中心部などを保護しなければならない場合もある。
3、Local Supportはマスクとは逆の輝度で作用する。またこれだけでは不十分なので作成するマスクでも輝星は保護する。 |
|
こんな感じで基本的なDecoは上手く行くと思います。
Decoのお話はまだ続きますが、合成マスクが出てきたので、その作成方法をご紹介しなければなりません。
|
|
PIではStar MaskとRange Maskを作るプロセスが用意してあります。どちらも優秀でかなり良いマスクを1クリックで作成できます。
Star Maskプロセスでは、リニア、ノンリニアどちらの画像でも全ての星に対してマスクが作られるわけではありません。そこで一般的にはStar Maskの変数を調整して必要十分な星マスクを作る工夫をするのですが、なかなか面倒な作業です。
そこで、
リニア画像:非常に明るい星だけのマスクが作られるS-mask1,2。
ノンリニア画像:非常に暗い星と非常に明るい星を除いて、星マスクが作られるS-mask3。
という特徴に着目し、対象画像に対してリニア、ノンリニア両方の状態でマスク画像を作成し、それを合成する方法を使っています。
特に輝度の高い星に対して十分な効果のある星マスクが欲しい場合には、変数を調整して何とか明るい星を含める工夫をするより、有効な方法です。
|
S-mask1 |
S-mask2 |
S-mask2-5 |
|
まず元画像に誤って変更を加えるといけないので、マスク用にL画像のクローンを作成し、これで作業を行います。
最初にリニア状態でマスクを作成します(S-mask1)。リニアのデータを扱う場合、経験上Scale=6 or 7程度にした方が最終的に大きさが適当になります(このスケールは本来生成されるマスクの大きさをコントロールするためのものではありません)。Ver.1.8から生成される星の大きさはStructure
GrowthのLarge-scaleをデフォールトの2から3,4程度にすると大きくなりますが、リニアデータで使うと、なぜか大きくした星マスクのピークが暗くなってしまいます。
Working ModeはStar maskです。(余談ですが、Structure Detectionを使うと星の芯だけを取り出すことが出来るので、試してみてください。)
生成されたマスク画像はリニアの状態で作られたものなので、HTを使って輝度低い星のマスクがしっかり見える状態まで圧縮します(S-mask2)。あまり強く圧縮すると星のエッジが切り立ってしまうので、注意が必要です。
どうしても強く強調する場合は、ATrousWaveletTransformを使ってマスクをぼかします。S-mask2-5の下がぼかした画像です。赤丸の数字の脇をダブルクリックすると×マークが付きます。この×が大きな数字まで付いているとボケが強くなります。1,2程度が僅かなボケ、1−4で明らかにボケます。layersを大きくすれば更に強くぼかすことも出来ます。
このプロセスは初期のバージョンでは非常に重要でした。今ではぼかしに使う程度しか出番がありませんが、この辺の解説を始めるときりが無いので、詳しくはチュートリアルを見てください。
|
S-mask3 |
|
次にL画像そのものをTHでノンリニアに圧縮します。この画像でもう1度Star Maskを実行しマスク画像を作成します(S-mask3)。この時全ての変数はデフォールトでも問題なく作成されるはずです。背景にノイズが多く混ざる時は、HTでのシャドウ切り詰めが甘い場合が多いです。
これで極暗い星を除く星マスクが2枚の画像として得られました。(Decoに限れば極暗い星はGlobal DarkでDeringingの問題は解決しているのでマスクを用意する必要はありません。) |
S-mask4 |
|
Decoで使うマスクには背景をマスクし明るい銀河部分を透過するマスクも必要です。このようなマスクはL画像その物を使うことも出来ますが、Range
Selectionプロセスを使うと比較的目的に近いマスク画像を生成することが出来ます。Real Time Previewを使うことが出来るので変数設定も簡単です。 |
S-mask5 |
|
作成した3つのマスク画像を1枚に合成するためにはPixel Mathプロセスを使用します。直接テキストボックスに計算式を書き込んでも良いのですが、Editボタンを押すと式の作成を支援してくれます。
比較明合成:Max
比較暗合成:Min
S-mask5のような書式で記載します。 |
S-mask6 |
|
このような計算の場合、Create New Imageにチェックを入れて新しい画像を生成した方が良いでしょう。
煩雑そうですが慣れてしまえば細かな合成比率を追加したり、マスクの背景レベルを指定したりすることも出来ます。 |
|
ここからDecoの後半です。
|
|
DecoのPSFには、Parametric, Motion Blur, Externalの3つのタグがあります。
Parametricは既にご紹介しましたが、SyntheticPSFを自分で変数を調整して設定します。Motion Blurは見た限りではParametricのAspectRatioとRotationだけを取り出したような感じで、どのような場合に利用するのか良く分かりません。3つめのExternal
PSFはSyntheticPSFを取り込んで利用する方法です。恐らくPIのDecoの魅力の1つはこのExternal PSFではないかと私は思っています。
Parametricはある意味適当に変数を入れて上手く行ったら結果オーライ・・・と言う感じが否めませんが、External PSFでは画像内の星像を分析するDynamicPSF(D.PSF)というプロセスが作り出すSynthetic
PSFを利用してDecoを行うわけですから、何となく「科学的」な感じがして自分のやっている処理が単なる試行錯誤ではないという実感を持つ事ができます。ただしそのためにはD.PSFを正しく使わなければならないという壁があります。
|
PSF1 |
PSF2 |
|
D.PSFの画面です。矢印が交錯していますが、使い方を説明します。画像はリニアデータです。
1、対象となる画像で適当な星をクリックする。
2、D.PSF画面にその星の分析結果が表示される。
3、赤丸のカメラマーク(PSF1)をクリックするとSyntheticPSFが生成される。
このような手順です。
PSF Model FunctionsをAUTOにしておくとMoffat6とかGaussianとか星像にあったModelが勝手に選択されるようです。拘る方はそれぞれの特徴を調べてみると良いでしょう。
http://pixinsight.com/doc/tools/DynamicPSF/DynamicPSF.html
PSF1では4つの星を試しました。画像内で最も明るい星は若干大きめですが、中等度、暗い星はそれ程大きな違いがありません。誤って遠方銀河などを選択すると非常に裾野の広いSyntheticPSFが作られてしまうので注意が必要です。どのような星がどのようなSyntheticPSFになるか予め自分の画像で確認し、ParametricPSFのイメージからかけ離れていない物を作る方が良いです。
実際には20個程の星を選び(PSF2)、(リストの1番上でクリック、そのままリストの1番下でShiftキーを押しながらクリックして)全てのリストを選択して、平均値?を算出してSyntheticPSFを作ります。前述の1つ1つの星のSyntheticPSFで自分なりのイメージを持つ事が大切ですが、恐らく、あまり暗くない、はっきりした星を選ぶ事が良い結果につながるような気がします(経験上、明るさはあまり関係していないように思えます)。またガイドエラーなどがある場合はその特徴が見られる星像を選ぶべきだと思います。ただし、収差や片ボケで画面の1部のみ星像が崩れている場合、それを選択するのはお勧めできない気がします。
|
|
いよいよExtarnalPSFを使ったDecoです。PSFにD.PSFで作製した画像を取り込み、他の設定は前述のParametricPSFと同じです。
四角いApplyボタンを押すと「苦労の甲斐あって素晴らしいDeoconvolution」ってほどでもなく、無難な結果が出力されるはずです。大抵Parametricと両方やっていますが、得られた結果が大幅に違った事はありません。ただし根拠のある逆畳み込みによる復元と胸を張って言える筈です、多分・・・。
PIのDeconvolutionは上手く調整するとそれなりの効果がありますから、この部分だけPIを使ってらっしゃる方もいると思います。そんな方には、このまま続けてHTによる非線形圧縮とHDR
Multiscale Transformも試してみる事をお勧めします。 |
|
この作業が終ればL画像の処理は、半分終わったようなものです。続いて非線形圧縮(HT)を行います。
|
|
L画像をHTで処理する手順はRGB画像となんら変わりません。STFのデータをインスタンスでHTに渡して処理する手順も同じです。
ただし、STFのAutoStretchの圧縮は若干強めなので、以下の方法で調整してから渡す事も可能です。
1、STFの赤丸「虫眼鏡+」ボタンをクリックし、その状態で調整スライダー上で何回かクリックするとスライダーの表示が拡大される
2、赤丸「矢印」ボタンをクリックし、スライダーの表示を赤矢印方向に広げると画像のレンジが広がる。
3、この状態でインスタンスをHTに渡してヒストグラムを確認する。
操作性が良いとは言えませんが、こんな方法もあります。
|
|
続いてL画像「第2の山場」、HDRです。
HDRはRGB画像でも行った方が良い場合もありますが、今回はL画像だけで行いました。
|
|
まずHDRMultiScaleTransform(HDR)を起動します。
上から順に、
・デフォールトのまま
・Lightness maskをチェック
・Lightness maskとDeringingをチェック
となっています。この画像ではLightness maskとDeringingをチェックした方が良さそうです。To Lightnessが良い場合もありますし、Deringingだけにチェックを入れた画像が良い場合もあります。Previewを使って対象画像に最良の設定をその都度探します。 |
|
次にLightness maskとDeringingをチェックした状態で、
・Number of Layers = 6
・Number of Layers = 5
・Number of Layers = 4
となっています。
Layerが少なくなるほど、細かい構造が見えているように思えますが、画像全体は暗くコントラストが低下しているように感じます。 |
|
最終的にこの画像では、
To lightnessとDeringgingをチェックし、Number of Layers = 6で、星マスクで恒星を保護して実行しました。星マスクを使わないと輝星の芯が黒く抜けてしまいます。この傾向はLayersが小さいほど顕著です。
HDRを行うと銀河の輝度が低下するので、HTを使って明るさを再度調整します。このときHDRでは恒星をマスクしていたので、マスクをはずした状態でHTを行うと全体のバランスが崩れる事があります。しかし、HDRの星マスクをそのまま使うと恒星像に悪影響が出ることもあるので、注意して行います。
HTではなくCurvesTransformationを使ってトーンカーブを調整する方が良い場合もあります。
HDRは強力に行うと、銀河の構造をより鮮明に表現出来るので、海外の作品はこの種の処理に力を入れている気がします。
初期の頃の物でプロセス等は現在のバージョンと大きく異なりますが(HDRがまだありません)、とても参考になるチュートリアルです。
http://www.pixinsight.com/tutorials/M33-vperis/en.html
|
|
後はノイズ除去や、場合によっては星像補正を行います。
|
|
ノイズ除去は2013.5にリリースされたTGVDenoiseを使ってみました。
このノイズ除去はACDNRとは違う原理で動いているようですが、まだよくわかりません。とりあえずLocalSupportに右下のような画像を入れて(ここでは輝度の高い部分が保護される)、実行してみました。 ノイズ除去部分の設定はデフォールトですが、かなり効果があります。L画像なので、Lab
ModeでChrominanceはApplyをはずしてよいと思います。 |
Mor1 |
Mor2 |
|
L画像処理の最後にご紹介するのはMorphologicalTransformation(Mor)です。
基本的には星以外を完全にマスクした状態で、Mor1のような設定でErosionを行う事で星像を縮小する効果が得られます。これを応用する事で、Mor2のようにガイドで伸びた星を若干補正する事も可能です。
この処理は非常に優秀で副作用も殆ど気になりませんが、あくまで星像を加工しているだけの処理です。Decoによる補正とは意味合いが異なりますから、積極的にお勧めすべきものではないかもしれません。
私の考え方
・ガイドミスで若干星が伸びてしまった場合、最良の選択肢はその画像を捨てることだと思います。
それを踏まえた上で、
・ガイドミスでボケた星雲部分の構造を復元するにあたり、伸びた星像を分析しDecoを行う事は理にかなってると思います。
(星雲や微光星はかなり良い状態に復元する事が可能です。)
・副作用を防ぐ目的でマスクを使用するため、残念ながら同時に輝星までもDecoで復元する事は困難です。
・そこで明るい星像についてMorで補正するのは、観賞用としては許容範囲だと思います。
|
|
以上でL画像の処理は完了です。いよいよLRGB合成を残すのみとなりました。
|
LRGB1 |
|
LRGB合成に使用するプロセスはLRGBCombinationです。
実は最初に行ったRGB合成も、このプロセスで実行可能です。こちらにはChannel Weightsも付いているので、どうしてもRGB合成時にカラーバランスを調整したい場合はこちらを使います。
LRGB合成ではLRGB1に示すようにLチャンネルのみチェックし、そこにL画像名を指定します。この状態で左下の三角ボタンでインスタンスをRGB画像にドラッグ&ドロップすれば合成完了です。ドロップされたRGB画像がLRGB画像に置き換わります。どういう訳かこのプロセスではLRGB画像を新規画像として生成することが出来ないので、RGB画像は事前に保存しておくことをお勧めします。
合成時に色彩強調を行う場合は、Saturationバーを左にスライドし小さな値にします。Chrominance Noise ReductionはSI7などのRGB画像のガウスぼかしと同じ意味合いのぼかし処理をWaveletで行っているものです。RGB画像の解像度にこだわる場合はチェックしない方が良いでしょう。
|
TGV2 |
TGV3 |
|
LRGB画像で最終的なノイズ除去を行います。
使用するプロセスは、もう一度TGVDenoiseにしてみました。モードはCIELab Modeです。値はデフォールトのままにしてみました。まず輝度部分はStructure
Selectionで作成したマスクで保護します。さらにTGVのLocal Supportを使用します。これもDecoの場合と同様に輝度の高い部分が保護されるので、L画像そのものにNoise
Reduction=4程度のぼかしをかけて使用します。
TGV3に実行前後の背景ノイズをRGBグラフで比較してみました。このプロセスの効果が分かります。輝度部分をマスクすることで解像度の低下を最小限に抑えて、背景を滑らかにすることが可能です。 |
PIだけで仕上げた結果
|
ATik383L+の画角は
これくらいあります。
この頃はPIのDecoと
HDRしか使っていませんね。 |
以上、PIだけでJpeg変換までやって見ました。仕上げにSI7のマルチバンドシャープでもかけたい所です。
最初のRGB画像のクオリティーから考えて頂ければ、いかに優秀な処理系かお分かり頂けると思います。操作が若干特殊なソフトですが、職人的な感覚は殆ど要求されません。淡々と処理をこなして行けば、誰でもどんなデバイスでも一皮剥けた作品が手に入ります。(※効果には個人差があります。あくまで個人の感想です・・・)
ちなみに撮影データです。デモでは処理速度を上げるために中心部分をトリミングして元画像としています。
M63(ひまわり銀河)2012.4.27
VC200L(1800mm),
Atik383L+,
L:10min.*10, RGB: 5min. 4:4:4枚 2*2ビニング
アトラクス改(K-ASTEC), AtikTitan+三つ星OAG, MaxImDLPro5にてオートガイド
VC200L、200mmF9で総露出3時間に満たないため非常にS/Nが低いです。加えてOAG撮影はまだ経験が浅く、ガイド用CCDが1*1ビニングなのでガイドエラーが起きています。常識的には「ボツ」画像ですが、あえてデモ用画像に選んだのは、PIの処理能力の高さを短時間でアピールするには「良い画像が良いのは当たり前」、「駄目画像がそれなりになる方が変化あって面白い」と思ったからです。
最後の座談会で皆さんのお話をお聞きして、いつかちゃんと撮影して良い元画像を作って再挑戦しようと思いました。200mmでももう少し解像度は上がるはずです。
|
|
CANPでは、ここでSorry, Time is up. (byキャプテン ピカード※)だったわけですが、
※http://en.memory-alpha.org/wiki/Star_Trek:_Insurrection
映画Insurrectionのクライマックス、敵を撃破し救出に向かうライカー副長への一言です。
この直後「ポチッとな」と自爆してしまいます。
最後にお見せしたかったのは、それではなくて、
|
D800_1 |
D800_2 |
|
D800無改造+Nikkor50mm(F1.4->F4)、ISO3200, 60sec.*52(スカイメモR)の天の川です。
PreProcessingはPIのBPPを使用してダーク補正のみで、コンポジットを行いました。出力された画像がD800_1です。
デジタル一眼で撮影した画像は、カラーバランスを調整しないとこのような色調になる事が多いです。
フラット補正をしていないので、強い周辺減光が見られますが、そこでDBEで除去を試みました。Tolerance=1.5まで上げて、サンプルの配置は全て手動、サンプルサイズは画像サイズに対して小さめに設定しました。
周辺減光の除去なのでDivisionを使います。背景モデルはD800_2の右下の画像です。
フラット画像が作れれば最高ですが、カメラレンズではなかなか面倒です。この例はPIのDBEは使いようで、このような補正も可能である事をお見せしたかったのです。
PIのプロセスは1つ1つ個性的で強力です。そして何より正確です。工夫次第で今までの画像処理ソフトで諦めていた処理をあっという間にやり遂げてくれる可能性を秘めています。私としては冷却CCDは勿論ですが、デジタル一眼を使っている方にこそPIをお勧めしたいと感じています。
これで、この解説は終わりです。最後まで読んで頂いた方に悪文をお詫びいたします。間違いは見つけたら訂正していますが、校正は昔から下手なんですよね・・・ |