天文はかせ幕下

最近の画像処理フロー(M45の場合)

先日の栗駒山遠征で撮影していたM45です。

M45 Pleiades cluster

Date: 2020-10-18 3:12(JST)~
Camera: ASI294MC-pro(-10deg.)
Optics: Celestron RASA 11", heuibII filter
Mount: iOptron CEM70G with iGuider
Exposure: (180sec.+30sec.+10sec) x 10 flames (gain 120)
Processing: Pixinsight, Photoshop

M31を撮影した後、薄明までの時間を使って天頂に鏡筒を向け露光しました。反省点はUSBケーブルがフードの擬似スパイダーからはみ出て光条が割れてしまったこと。分子雲の特徴的な縦縞が、光条と並行になって目立たなくなってしまったのが痛恨。それ以外は、明るい対象ということもあって短時間でも良く映ったなと思ひます。

今回は、画像処理の詳細をパラメター含めてメモしながら進めました。その詳細を公開してみようと思います。内容はPixinsightを使っている方以外には通じないかと思いますが、そのあたりは悪しからずすみません。また、書いているうちにテンションが上がってしまい、文章がだんだんと乱れてゆきますが、そのへんもご容赦ください。

前処理

PixinsightのWBPPでバッチ処理しただけ。スタック後の画像は以下の通り:

f:id:snct-astro:20201103225246j:plain
Pixinsightでは、14bitの画像に対してレンジを上に付け足して32bitにして処理するので、処理後の画像はこんなふうに真っ暗です。

後処理

Pixinsight編

以下の記述、パラメターは特に何も書いていなければデフォルトの値を使っています。

  1. HDR Composition:180s,30s,10sの3枚の画像をHDR合成, (threshold = 0.7)

    f:id:snct-astro:20201103225457j:plain
    (処理後にSTFで仮ストレッチ)294MCの出力は、ものすごく緑です。これ、どうにかならないのか。

  2. Background neutralization (previewで左下あたりの暗部をROI指定)で背景がニュートラルグレーになるようカラーバランス変更。

    f:id:snct-astro:20201103231024j:plain
    (処理後にSTFで仮ストレッチ)まだ星雲は青緑色です。裏像失礼。

  3. いつもはここで、Automatic( or Dynamic)BackgroundExtractor, を行ってカブリを補正しますが、この画像についてはどちらもうまくいかず。まあ、あんまりカブリもないかなとスキップ。
  4. Photometric Color Caribration (Photometry para. Limit mag. =16, aperture=10)でカラーバランス補正。下は処理時のグラフ。
    f:id:snct-astro:20201103231723p:plain

    f:id:snct-astro:20201103231553j:plain
    (処理後にSTFで仮ストレッチ)これでようやくマトモな色に。

  5. いつもはこのタイミングでDecomvolution処理をするのですが、今回はすっかり忘れていました。スキップ!
  6. Multiscale Linear Transfrom(MLT)とSNCRで軽くノイズ除去する。ノイズが残ったままストレッチすると、ノイズも一緒に増幅させてしまう。これを避けるために、ストレッチ前にあらかじめノイズ処理をするという考え。これは確かに合理的だけど、余計なものまで消してしまう危険を孕む。あくまでごく控えめに以下のよう行った。
    a. RangeSelectionで以下のようなマスク作成

    f:id:snct-astro:20201103232208p:plain
    b. 上のマスクをかけた状態で、MLT(layers=4, layer1のみNoiseReductionをチェック,Amount=0.6)
    c. 上のマスクをかけた状態で、SNCR( green, amount=0.6 )

    f:id:snct-astro:20201103232830j:plain
    (処理後にSTFで仮ストレッチ)見た目はほとんど変わらない。

  7. PixelMathで軽くLogstretch。
    数式:iif( a*($T-m)+1 > 0, ln(a*($T-m)+1)/ln(a*(1-m)+1),0), m=0,a=10000

    f:id:snct-astro:20201103233140j:plain
    処理の後の画像。普段はAutoHistgramを使っているが、これはどうもカラーバランスが動くようなので、やめた。以下、仮ストレッチなし。

  8. Starnet++で星消し(stride=128)ここで秘密兵器登場! Starnet++は、ある程度ストレッチした画像でないとうまく動かない。

    f:id:snct-astro:20201103233354j:plain
    星消し画像。特に明るい星の痕にはエラーがあります。

  9. PixelMathで[元画像]-[星消し画像]を計算して、星だけ画像を作る。

    f:id:snct-astro:20201103234101j:plain
    これが星だけ画像。

    a. Morphological Transformで星の追尾エラーを修正(以下のパターンで amount=0.5と0.2を1回づつキメル)

    f:id:snct-astro:20201103234331p:plain
    b. Color Saturation を星だけ画像にカマス(+0.6)
    c. PixelMathで[修正後の星だけ画像]+[星消し画像]を計算して、元に戻す。星消し画像にエラーがあれば、CloneStampでコソコソと修正する。
    f:id:snct-astro:20201103234455p:plain
    星像の修正後(左)と修正前(右)

  10. Asinhstretchでさらに強調。sf=1.5, bp=0(protecthighlightをチェック) を2回

    f:id:snct-astro:20201103235012j:plain
    asinhstretchは色が出る一方、ちょっとフワッとした後味になります。

  11. HDRMultiscaleTransform をキメてうねりをだす。“to lightness”, ”lightnessMask”, ”deringing”をチェックして。

    f:id:snct-astro:20201103235043j:plain

  12.  16bit tiffで保存。Pixinsightを閉じる。

Photoshop

  1. 色カブリ、輝度カブリを補正。色カブリの修正をするときは彩度を上げて、輝度カブリを修正するときは彩度を下げると分かりやすい。

    f:id:snct-astro:20201103235746p:plain

    f:id:snct-astro:20201103200726j:plain

  2.  トーンカーブを使って、カラーバランスを調整。ヒストグラムを見ながら、緑と赤の山の幅を合わせた。下のようなトーンカーブをあてる:

    f:id:snct-astro:20201104000102p:plain

    f:id:snct-astro:20201103205337j:plain
    カラーバランス補正後の画像。え、文句あります? PCCをやった後にカラーバランス弄るなという意見はわかりますよ。次行きましょう!

  3. 明部にマスクして、暗部に対してCameraRawのカラーノイズ除去(+50)
  4. 明部にマスクして、暗部に対してDFineで輝度ノイズ除去(設定オート)
  5. レベル補正(暗部+7, 中央+1.2, 明部255)
  6. トーンカーブで中間持ち上げ
    f:id:snct-astro:20201104000705p:plain
  7. CameraRawFilterで調整
    露光量+0.3
    コントラスト+5
    ハイライト-30
    テクスチャ-13
    明瞭度+8
    自然な彩度+25
    彩度+35
    オレンジの彩度+50
    ブルーの彩度+20

    f:id:snct-astro:20201103215659j:plain

  8. 上の結果をみて、星の色がもうちょっと欲しかったので、星マスクで選択して彩度+15
  9. あらためて全体をみて、色被り補正。左側が赤いのを修正した。

最終仕上げ

  1. まずはパソコンを閉じ、コーヒーを淹れて一休み。子供の相手など。
  2. 庭の手入れ。落ち葉を掃除。
  3. 近所のゴルフの打ちっぱなしに行く。パキー
  4. 帰宅。うがい手水に身を清める。
  5. スマホTwitterFacebookを検索して、M45の作例を眺める。
  6. 改めて自分の画像を見る。すると、すべてが気に入らない感じになります。
  7. ヤケクソでDenoiseAIをキメて、Flickrにアップ(おい)。

以上です。最後までご覧いただき、ありがとうございました。

 

サムネ

f:id:snct-astro:20201104004651j:plain



 

栗駒山遠征その2

先日の栗駒山遠征にて、sigmaFpを使ってタイムラプスを撮っていました。撮影結果とも組み合わせてこんな動画を作ってみました。


アンドロメダ銀河の天体写真撮影&タイムラプス

 

twitterで紹介したら、思いの外皆様の反応がよろしくて、顧問は気を良くしました。また撮影の様子がわかる動画を作っていきたい所存です。

サムネ用

f:id:snct-astro:20201028225227j:plain

 

学内観望会(曇天延期)

対策すれば,人が集まるイベントも小規模ならできるようになってきました。23日の夕刻は,学内で電視観望会を企画しました。

f:id:snct-astro:20201023160527j:plain

会場からみた東の空。普段施錠されている5階建て校舎の屋上。星に興味がなくても「屋上に登ってみたい」という気持ちによる集客が望めます(以前,中庭で開催した時は集まりがイマイチだった)。

 

f:id:snct-astro:20201023172345j:plain

西の空が赤く染まってきました。雲は北東へと素早く流れています。もうちょっとで晴れそうです。

f:id:snct-astro:20201023165316j:plain

ですがこの後,予定の時刻になってもなかなか雲が切れず。後一時間待てば晴れそうな状況でしたが,屋上の使用時間の制限もあり,やむなく延期としました。

 

撤収を終えて,ミーティング。解散するころには,月は西に低くなっていて,星空が広がってましたね。わずかな予報のズレにやられました。まあ仕方なし。

栗駒山遠征

秋が深まってきました。

10月17日の夕方。北西から南東へ向かって前線の雲が後退し、晴れ間が広がる予報です。このパターンは鉄板である。そう信じて宮城県北端の遠征スポット「いわかがみ平」へ出かけました。今夜は新月です。

f:id:snct-astro:20201023220208p:plain

いわかがみ平は栗駒山の登山口。標高1081mの高地に登山客用の広い駐車場があります。おそらく宮城県内では随一の暗いスポットです。部の合宿で二回訪れたことがあるだけで、本格的な撮影は初めてでした。かのーぷすさん、そーなのかーさんとご一緒しました。

f:id:snct-astro:20201022224759j:plain

当日の様子です。紅葉シーズンにぶつかってしまって、駐車場はビッシリ。みなさん車中泊のあとに山登りされるみたいで、終始ヘッドライトが気になりました。まあ、それは仕方がありません。登山客の方々も、

「なんだこいつら・・・」

みたいな感じで、我々を見ていた(ような気がしました)。

さておき。今回のターゲットはM31、アンドロメダ銀河です。RASA11"に294MC-proをつけて3枚モザイクの計画です。

f:id:snct-astro:20201022224754p:plain

 

ああ、あんどろめだ。撮影するのは2年ぶりです。前回の作はコチラ:

M31

ε200とEOS60Daでの2x2=4枚モザイクでした。雲抜けの山形県朝日自然観での撮影。総露光時間は100分と短いながら、空の条件は絶好でした。

今回、果たしてあの日の結果を超えられるのか? それでは参ります。

アンドロメダの撮影

「いやー、バッチリ晴れると思ったんだけどなぁ」っておぼろ雲。

「秋なのに、なんですかねこの天気は。このままでは人類は滅びますよ。」

ご一緒したそーなのかー氏もご立腹です。M31も南中をすぎて西に傾き始めてしまいました。

雲が切れたのは日付が変わった0時ころ。しかたなく予定を大幅に短縮したモザイク撮影の開始。1フレーム4分を6枚。まずは中心から撮影して、一枚の撮って出しはこんな感じでした:

f:id:snct-astro:20201023231426j:plain

 雲の影響でガイドは暴れていました。でも結構解像してますよね。って感じで撮影を続けました。

画像処理と結果

家に帰ってAstroPixelProcessorでモザイク合成します。

画像

Local Nomalization Collection(LNC)という機能をoffにしたら、きれいにつながりました。そうして画像処理した結果がコチラ

M31

Date: 2020-10-18 0:10(JST)~
Camera: ASI294MC-pro
Optics: Celestron RASA 11", heuibII filter
Mount: iOptron CEM70G
Exposure: 240sec. x 6 flames(left and right part),  240sec. x 6 flames + 30sec. x 10flames(center part), gain 120, 3x1mosaic

ででん!

ってひさしぶりに「ででん」が出ましたよ。やったぜ。

鑑賞のポイント

手前味噌全開で、鑑賞のポイントを説明させてください。

M31_Annotated

座標を入れてみました。

ほぼピクセル等倍でやりますので、よろしくお願いします。

  1. 銀河中心部
    f:id:snct-astro:20201023235151p:plain
    アンドロメダ銀河の中心部は、一点に集光して強く輝いてます。飽和しないように240秒露光と30秒露光のデータをつかってHDR合成をしました。中心部を飽和させるか否か、がアンドロメダ銀河の撮影において最も意見が分かれるところなのではないでしょうか?デジタルから天体写真を始めた顧問は、この表現がお気に入りです。ちなみに星の周りが黒く落ち窪んでいるのは、PixinsightのDeconvolution処理の副作用です。これは改善可能なはずなので今後の課題。
  2. 赤ポチと暗黒帯

    f:id:snct-astro:20201024000211p:plain
    周辺の赤い光は水素が励起して発光しているのです。HeuibIIフィルタを使ってはっきり出てきたところを、photoshopのマスクで選択して強調しました。周辺のウネウネした暗黒帯はPIのDarkStructureEnhanceで強調してます。

  3. 霞むHII領域

    f:id:snct-astro:20201024000723p:plain
    写真上側のHII領域は若干霞んで見えます。M31自体の周辺に広がっている分子雲のせいかもしれません。だとすると、こちら側が地球から見て遠いわけなので、M110が下側にくるこの構図だと、銀河を斜め上から見ている形になって、自然であると思うんですよね。

  4. ひしゃげたM110

    f:id:snct-astro:20201024001339p:plain
    M31との重力の影響で引っ張られているような様子がわかります。

  5. 青い星

    f:id:snct-astro:20201024001626p:plain
    青い星は乙女座の4.5等星です。アンドロメダ銀河を探す時の最後の目印になる星で、双眼表だと同視野に入ります。青い星を青く写すことは、それほど簡単でなく、今回はうまく行きました。

  6. 写真でみて左腕方向にあるアンドロメダ銀河内の星団です。粒粒に星が分解して見えました。
    f:id:snct-astro:20201024104052p:plain

  7. nyancotanさんのブログ(M31 に新星?現る!光度 16.5等 & 時雨 - nyancotan's diary 天体写真 in Hokkaido)に新星出現の情報がありました。R.A0h42m37s.35、Decl= + 41o20'52 ですから下の赤丸の付近になります。20日以降の出現とのことで,この写真(18日撮影)には写っていません。出現時に16.5等で,赤丸に含まれている一番明るい恒星が13.25等ですから,銀河の光芒に埋もれて検出はそれほど簡単ではないかもしれません。

    f:id:snct-astro:20201024112526p:plain


     

ひとまずこんなところでしょうか。明け方には、雲海を覗くことができました。

f:id:snct-astro:20201018050331j:plain

 

 

 

 

 

 

 

 

電視観望の練習会

このブログは,仙台高専天文部のブログでありまして,仙台高専天文部顧問のブログではありません。

9月にはいってからCloudy Nighitがつづいていました。気がつけば秋も深まる10月後半。ようやくチラチラと晴れ間が訪れるようになりました。本日は,部員のみんなと電視観望の練習です。週末に学内観望会を企画してまして,当日の機材の操作を確認しました。

f:id:snct-astro:20201020195504j:plain

この写真はヤラセですけど,皆さん熱心に取り組んでいます。学校の中庭からでもNGC6888やハート星雲などがよく見えました。

 

PIのPixelMathで,FAPの対数現像を真似する

前回のエントリ

に引き続き,今回は「対数現像」をPixelMathで真似してみます(「再現」と書かないのは,対数現像の中身がわからないため。本当に一致しているかの確証はないです)。ではまいりましょう

対数現像とは

荒井俊也氏が開発したFlat Aid Pro (FAP)は,通常のフラット補正では取りきれない光害カブリやフラットズレなどを補正することを目的としたソフトです。さらにガイドエラー補正や星のHDR処理(飽和復元合成)など有用な機能が詰め込まれています。800万画素以下なら無償というところも素晴らしいです*1

今回注目する「対数現像」はこのソフトに実装されています。レベル補正に輝度圧縮機能が付属していて,そこで「デジタル現像」と「対数現像」が選択できるようになっています。

しかし,対数現像の詳細は公表されていません。

対数現像は極度に明るい部分は飽和輝度を超えてしまうことがあるものの、星の芯が残りやすいという特徴があります。たとえ最大輝度部分がピンポイントで飽和しても画像として破たんするわけではな いので、星の表現のしやすさではデジタル現像より優れているのではないかというのが私の見解です。 Flat Aide Pro ver1 マニュアルより

この記述と「対数」というキーワードだけが手がかりになります。ここから推測していたわけですが,顧問はいろいろ試してみましたがあまりうまくいきませんでした。。。

Log Stretch

一方で,画像のストレッチに対数関数を用いる手法は,その他のソフトでも見受けられます。PixinsightではAutoHistgramというストレッチ機能内に"Logarithmic Transformation"というのがあります(その中身も不明)。さらに調べていると,天文計算のためのpythonパッケージを集めたサイト"The Astropy Project"”Logstretch”という関数があって,そこでは

The stretch is given by

 y=\displaystyle\frac{\log(ax+1)}{\log(a+1)}~~~~~~(1)

と書かれています。またTwitter上で@dabo_picさんからいただいた情報では,天文研究者の間で使われているSAOImageDS9でもほぼ同じ関数形のストレッチが使われているとのことです。この関数は次のようなトーンカーブと同じです(a=100)の場合

f:id:snct-astro:20201016184451p:plain

本エントリでは,上の関数が「対数現像」の正体であると仮定します。

Pixinsightで「対数現像」を真似する

さて,あらためてFAPの対数現像のウインドウをみてみます

f:id:snct-astro:20201016174149p:plain

FAPでも,対数現像はレベル補正にプラスアルファする形で実装されています。なので(1)式をそのまま適用するだけではうまくいきません。これはデジタル現像のときと同様ですね。そこで,処理前のj番目の輝度値を X_j,処理後のj番目の輝度値を Y_j,暗部側のスライダの輝度値をmとして,

 Y_j=\displaystyle\frac{\log\left\{ a(X_j-m)+1\right\} }{\log\left\{ a(1-m)+1\right\}}~~~~~~(2)

としてみます。また係数 aは強調の度合いを決めるパラメータで,これは明部側スライダの輝度値nからもとまると仮定します。その求め方は,デジタル現像の真似の時と同じようにやります。すなわち次の図の(c)

f:id:snct-astro:20201014145655p:plain

のように,X軸と接する部分での関数の傾きが,輝度圧縮をする前のレベル補正に対応するトーンカーブと一致するように aを決めるわけです。その計算は省略しますが,かんたんな微分の計算より aは方程式

 \displaystyle\frac{a}{\log(a(1-m)+1)}=\frac{1}{n-m}~~~~~~(3)

の解として定まることがわかります。しかし残念ながらこの式は、紙と鉛筆ではaについて解けません(解けないよね?)。

これをいちいち数値的に解くのも面倒なので、aの値は,処理結果をみながらなんとなく決めてもらったほうが早いと思います。以下の適用例でもM13については,そうしております*2

適用例

それでは適用結果を見てみます。PixelMathに入力する数式は次のようにします

f:id:snct-astro:20201017112352p:plain

コピペ用:iif( a*($T-m)+1 > 0, ln(a*($T-m)+1)/ln(a*(1-m)+1),0)
m=0.0, a=300

対数関数は負の値が代入されると不味いので、if文を使って処理しています。

まずはASI294MCで撮影した次のM13の画像に適用してみます。元画像は以下の通り:

f:id:snct-astro:20201016184902p:plain

これに対して、FAPで対数現像した結果は下のようになりました。

f:id:snct-astro:20201016185740p:plain

FAPにて対数現像。値はデフォルトのまま

これに対して、次がPixelMathによる真似です。ただしaの値はFAPの結果に近くなるように調整しています。

f:id:snct-astro:20201016185828p:plain

PixelMathにて,(2)式をa=750として適用

1パラメータ調整で、ほぼ似た結果を出力することができました。

ちなみに、比較のためにSIでのディジタル現像の結果を下に再掲載します。上の結果と比べると対数現像が確かに高輝度部の諧調に優れていることがわかります。

f:id:snct-astro:20201016190010p:plain

SIによるデジタル現像(比較用)

つぎに、デジカメによるのぎょしゃ座周辺の星野写真に、適用してみます。

f:id:snct-astro:20201014211102j:plain
上が元画像。

これに対してFAPでの対数現像を適用した結果がこちら: 

f:id:snct-astro:20201016190454j:plain

FAPによる対数現像:明部スライダ46600,暗部スライダ14600,輝度圧縮強さ160として元画像に適用

ストレッチ具合が弱いのは、明部スライダの値を大きくしすぎたせいだと思います(まあそれは良いでしょう)。これに対して、PixelMathによる真似は以下のようになりました;

f:id:snct-astro:20201016190407j:plain

PixelMathによる再現:m=14600/65535=0.22,a=20((3)式から推定)

違いがほとんどわかりません。

終わりに

というわけで、「対数現像」もリバースエンジニアリングに成功したと考えています。

PIのAutoHistgramの"Logarithmic Transformation"は、まさに対数現像であろうと考えています。ですのでPIユーザーなら、わざわざPixelMathを使う必要もないわけです(追記:PIのAutoHistgramは、なぜかカラーバランスが変わることがあります。PixelMathだとそれが起こりません。)。

最後に対数現像の「意味」について考えてみたいと思います。

Twitterにて,「対数現像わからんのおー」と呟いておったところ,ぐらすのすち同志に映像メディア情報学会誌の論文を教えてもらいました。その記事のイントロには「人間の明るさ感覚Rと入射光Lとの間にFechnerの法則

R\sim \log L

が成り立つことが知られている云々」との記述があります。一方で(1)式は、線形のグラフにlogを作用させただけです。つまりリニア画像に対して

  • 対数現像は、人間の網膜に入射する光量と、視覚の感度の間の非線形性をモデル化している

といえます*3。一方で、

  • デジタル現像は、フィルムに入射する光量と、現像液の感度の間の非線形性をモデル化している

わけです。どちらにも科学的な根拠があるわけですね。

 

さて、い か が で し た か?

今回のエントリ、役に立ちそうに見えて、実際の画像処理にはほとんど役立たないと思います。ただ、いろいろな処理の理解を深めることはできましたので、顧問は満足しています。思えば初心者の頃、ストレッチといえばGimpトーンカーブをいじることしか知りませんでした。紆余曲折を経て、またトーンカーブ処理の重要性を再認識した次第です。

 

 

*1:顧問はお金を払って,1年ライセンスを使っていました

*2:M13の結果はPIからの出力で、32bitです。これをそのままFAPで読むと16bitに変換されるのですが、その変換のされ方が不明なため、パラメータaを定めることができなかった。

*3:ただ、対数現像の結果がディスプレイに映し出された場合、それを見る人間の網膜の感度はlogになるから、我々が認識するのは\log\{log(ax+1)\}という光で・・・とかいうツッコミはなしで(無しでいいのか?)。

PIのPixel MathでSIの「ディジタル現像」を真似する

ステライメージ(SI)に実装されている「デジタル現像」処理は,もともとは岡野邦彦氏が考案された手法です。

その詳細はたとえば映像情報メディア学会誌vol.57, No2. pp203 (2003)などに公開されています。当時はまだ,CCDカメラがフィルムに劣っていた時代だったようで,CCDカメラの像を,フィルムカメラの質感に近づける目的で「デジタル現像」が考案されました。そういう意味では,いにしえの手法と呼ぶべきかもしれませんが,その基本的な階調圧縮の考え方は有用であり,現在でもまだ利用している方は多いと思います。

今回は,SIに実装されているデジタル現像を,Pixinsight(PI)のPixcel Mathで「真似する」方法を紹介したいと思います。

デジタル現像の概要

輝度強調

元画像の j 番目のピクセル情報を  X_j ,デジタル現像処理後のj 番目のピクセル情報(RGB値)を  Y_jとします。

 Y_j=\displaystyle\frac{kX_j}{X_j+a}+b~~~~~~(1)

という変換がディジタル現像の基本になります。パラメータa,bは

a値がハイライトで特性線が寝はじめるレベルを決める係数である。b値は脚部が始まるバック濃度を決めている。  映像情報メディア学会誌vol.57, No2. pp203 (2003) より引用。

一方kはハイライト部の強さを調整するパラメータで,通常は k=aと採るようです。

かいつまんで述べますとこの式は,フィルムカメラの現像過程での化学的な非線形現象をモデル化したものと考えることが出来ます。フィルムカメラでは,輝度が飽和に近づくと現像液の不足によって化学反応の効率が落ち,入射光とフィルム輝度の間の線形性が崩れ。自然に飽和が起こりにくくなります。これを(1)式でモデル化しているわけです。

エッジ効果

またフィルムカメラでは輝星の周辺など,輝度に大きな勾配があるところでは,現像液の拡散によって自然に「シャープ化」が行われます。これは,飽和に近づいて現像液が欠乏しているところに,すぐ近くのまだ暗いところで余っている現像液が拡散して,コントラストが上がるためである,と説明されています。その効果を取り入れるために,上の式は

 Y_j=\displaystyle\frac{kX_j}{\tilde{X_j}+a}+b~~~~~~(2)

とする場合もあります。ここで\tilde{X_j}は,元画像に数ピクセルほどのぼかしをかけた画像を意味します。しかし,この方法は顧問が試した範囲ではリンギングが起こりやすく,またシャープ化の方法は他にもたくさんあるので,このエントリでは(1)を使います。

彩度強調

デジタル現像ではまた,色彩強調処理もおこなわれます。これも計算は単純です。元画像のj 番目のピクセルのLRGB値をそれぞれ X_j^L, X_j^R, X_j^G, X_j^Bとすれば,その中から一つを選んで(例えば X_j^Lをつかって)(1)式を

 Y_j=\displaystyle\frac{kX_j}{X_j^L+a}+b~~~~~~(3)

と置き換えるだけです。これでなぜ色彩が強調されるかは上の引用文献を御覧ください。この方法では,RGB 3つの各チャンネルに対して選択的強調処理を作用させることができ,そのやりかたも X_j^L, X_j^R, X_j^G, X_j^Bのどれを選ぶかで4通りあります。SIを使用されたことがある方はおわかりと思いますが,これが色彩強調マスクの謎の3x4マトリクスに対応しています。

Pixinsightで「デジタル現像」を真似する

さて,ここからの内容は,デジタル現像の処理内容について顧問の推測が含まれます。あらためてSIの「デジタル現像」ウインドウを見てみましょう。

f:id:snct-astro:20201014145550p:plain

このように,SIのデジタル現像はレベル調整にプラスアルファする形で実装されています。ですので,上の(1)式をそのまま適用するだけではうまくいきません。

上図のmが暗部側スライダ,n が明部側スライダです。一方で p のスライダがデジタル現像を用いてハイライトの調整を行うものです。下の図を御覧ください。

f:id:snct-astro:20201014145655p:plain
まず,暗部スライダmと明部スライダnを動かすだけの最も単純なレベル調整は図(a)のようなトーンカーブを元画像に適用することを意味します(ここでは中間スライダは考えません)。一方で(1)式は図(b)のようなトーンカーブなります。

ステライメージのデジタル現像はこの2つを組み合わせているようです。顧問は図(c)に赤線でしめしたようなトーンカーブになっているのではないかと予想しました。つまり(b)のカーブを x=aの位置まで平行移動したあと,(x,y)=(a,0)でのカーブの傾きを,レベル調整の傾きと一致させたわけです。それは数式で表すと

 Y_j=\displaystyle\frac{p}{n-m}\frac{X_j-m}{X_j-m+p}~~~~~~(4)

と表されます。また「ガンマ調整」を行う場合は

 Y_j=\displaystyle\frac{p}{n-m}\frac{(X_j-m)^\gamma}{(X_j-m)^\gamma+p}~~~~~~(5)

としますが,ここでは以降\gamma=1として話を進めます。

PixelMathでデジタル現像する手続き

もう結論は出たようなもので、あとはPIのpixelMath機能で上記の(4)式を画像に適用するだけです。その手続きについてまとめておきます。

サンプルとしてASI294MCで撮影したM13の画像を用います。ダーク減算、フラット補正、スタックを終え、カラーバランスを整えた画像に対して、上記の方法を適用してみます。

PixelMathを起動して,次のように数式を入力します。ここで$Tは現在アクティブな画像を指します(後日追記:数式が負の値をとるときは画像は0に、1以上の値をとるときは1に丸められるのでそのへん気にする必要ありません)

f:id:snct-astro:20201014155639p:plain

 m,n,pのパラメータは,"symbols"タブに以下のように入力していますが,ここでn,mがデジタル現像の明部・暗部スライダの輝度の値,pがデジタル現像のハイライト調整値を表します。元画像の背景とハイライト部の輝度値を測定して値を決定しました。pの値は、ハイライトが飽和しないように、nと同じかそれより小さめに取ります。

f:id:snct-astro:20201014155737p:plain

PixelMathでは(というかPIでは)、完全な白(黒)を1(0)として基本的に32bitでデータ処理を行なってます。ですので上の値での0.1は、256諧調でいう25.6の輝度を意味していることに注意してください。

そうしたら,下のように"create new"を選択した状態で下側の四角ボタンをクリックしますと,処理後の画像が出力されます。

f:id:snct-astro:20201014205951p:plain

また、彩度強調を行いたい場合は,数式分母の$TをL画像やG画像で置き換えればよいのだろうと思います。しかし実際にやってみると色がどぎつくなるばかりで色彩強調についてはそれほどうまく行きません。ステライメージでは更に高度な調整が内部で行われているのだろうと思います。

適用結果

パラメータは適当に調整して両者を比較してみます。まずは、ASI294MCで撮影したM13画像に適用してみます。適用前は

f:id:snct-astro:20201014210718j:plain

こんな感じです。以下は、SIとPIでそれぞれデジタル現像処理を行なった結果です。

f:id:snct-astro:20201014184424p:plain

ステライメージによるデジタル現像、暗部スライダ値0.0、明部スライダ値0.02、デジタル現像のハイライト調整値0.02として適用

f:id:snct-astro:20201014184548p:plain

PixelMathによるデジタル現像、(4)式をm=0.0、n=0.02、p=0.02ととして適用。

パラメータ値が対応がついていないか、関数形に微妙な差があるかで、もちろん完全には一致しませんが、高輝度部の圧縮の様子などは大体一致していると思います。

 

次に、デジカメで撮影したぎょしゃ座周辺の星野写真でテストしてみます。適用前は

f:id:snct-astro:20201014211102j:plain

EOS6D(HKIR)にて撮影。背景輝度値はおよそ0.35

こんな感じです。SIとPIでそれぞれデジタル現像処理を行うと、次のようになりました。

f:id:snct-astro:20201014214705j:plain

SIによるデジタル現像。暗部スライダ値19660(=0.3*65535)、明部スライダ値26214(=65535*0.4)、デジタル現像のハイライト調整値26214(=65535*0.4)として適用

f:id:snct-astro:20201014215023j:plain

 PixelMathによるデジタル現像、(4)式をm=0.3、n=0.4、p=0.1ととして適用。 

じゃかんPixelmathのほうが暗くなる感じですが、大体同じなのじゃないかと思います。

終わりに(というか、対数現像を真似たい)

まだ完全とはいえませんが、SIのデジタル現像をだいたい再現できたのではないかと思っています。改善点などありましたらぜひコメントください。

しかし本当に再現したいのは荒井俊也氏が考案し、FlatAideProに実装されている「対数現像」です。今回はそのための練習でした。詳細は公開されていませんので、当てずっぽうで予想するしかありません。手がかりは2つ:

  • 「対数」現像というのだから対数関数が使われているのだろう。
  • 対数現像では、デジタル現像に比べて高輝度部で諧調が豊かなのがはっきりと分かるので、高輝度領域でのトーンカーブの傾きが関数(1)に比べて大きくなるような関数が使われているのだろう。

です。対数現像もFAPにてレベル調整にプラスする形で実装されています。上記と似たような方法で再現できると思いますが、もう少し考え中です。うまくいったらまた報告します(報告していいのだろうか、商売の邪魔?)。