画像処理法考案

ノイズ退治に王手?『コスミカット法』の考案

★長文なので先に結論を
冷却CMOSカメラを用いた星雲撮影において色んなノイズに対して孤独な戦いを挑んできたわけですが、今までどうしても退治できなかったノイズ「突発性ホットピクセル」を殲滅する新たなコンポジット法『コスミカットコンポジット』の開発に成功しました♪
同等の効果はシグマクリップですでに実現済みですが、そのロジックから膨大な演算時間とメモリ消費量が(あぷらなーと的には)問題でした。今回の『コスミカットコンポジット法』は数十コマの処理でもほんの数秒で完了するほど高速で、何百コマ処理する場合でもほとんどメモリを消費しません。しかも、その作業は「馬鹿にしているのか?」と思われるほど簡単です。


★ノイズ戦の振り返り
冷却CMOSカメラは非常に便利なカメラですが、それでも色んなノイズには悩まされます。
『コスミカットコンポジット法』の具体的なロジックを明かす前に、あぷらなーと邪道流のノイズ処理の流れを振り返ってみましょう
もちろん、これまでの流れをご存じの方はサクッと飛ばし読みして大丈夫です♪

★その①:ショットノイズの殲滅
光というものは、なかなか厄介なもので、粒子性と波動性を併せ持つことが量子力学で示されています。
そのうち、粒子性の影響により、たとえば12cmアクロマートSE120+OⅢナロー+ASI1600MM-Coolで30秒露光した1コマ画像だと画像全体がザラザラになってしまいます。
例えるなら、パラパラとまばらに降ってくる雨粒によって、コンクリートの床の上に斑点ができるようなもので、こればかりはいくらセンサーの性能が向上しても改善しようがありません。いわゆる「高感度ノイズ」とされているこのノイズは、カメラのせいではなく『実際にまばらにしか光子がヒットしていない』からだと解釈できます。このように光量不足から生じるノイズを「光子ショットノイズ」といいます。

撮影された画像がザラザラになっている原因が、本当に到来光子のバラツキなのかを検証ごっこするため、天体の等級から算出した光子の到来揺らぎを実写画像のノイズと比較してみたところ、オーダーレベルでの一致を見ました。

この検証ごっこにより、短時間露光1コマで生じるザラザラノイズは「光子ショットノイズ」であると判断しました。

要するに沢山の光子をピクセル内に取り込むしか無いわけですから、「光子ショットノイズ」を根本的に解決するには、3つの方法が考えられます。

 1:露光時間を伸ばす
 2:明るい光学系を用いる
 3:ピクセルピッチが大きなカメラを用いる

それらが不可能(もしくは嫌い)な場合の便法としては「加算平均コンポジット」が有効です。
理想的な条件下では、コンポジット枚数をN枚にするとショットノイズが√N分の1に軽減されるとされています。初等的な統計論に従えばごく当然のことなのですが、本当にそうなっているのかを実写画像で解析ごっこしてみると、枚数があまりに多くなると(リードノイズやダークノイズなど、他の要因が効いてきて)法則性が崩れるものの、ある程度の妥当性が示唆されました。

実際に1コマ画像と64コマコンポジット画像を比較してみると、下記のように劇的なショットノイズ軽減効果が見られます。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22084810.jpg
  ※左:1コマ画像 右:64コマコンポジット
  (SE120+OⅢナロー+ASI1600MM-Cool -10℃ ゲイン300 露光30秒)

しかし、コンポジット後の画像をよく見ると、ショットノイズとは別のノイズが目立ってきます。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22125312.jpg
上記の黄色でマークした箇所に見られる白いニョロニョロしたものがそれです。また注意深く見るとそれ以外にも画面全体に斜めに走る白っぽいノイズ『白い縮緬ノイズ』が多数認められます。これらは、いわゆるホットピクセルによる輝点ノイズが原因で、一般にダークノイズと呼ばれている物です。

★その②:ダークノイズの殲滅


一般的に、冷却CMOSカメラは氷点下までセンサーを冷却することにより、相当にダークノイズが軽減できますが

それでも、星雲を炙り出そうとすると、無視できないほどの輝点ノイズが生じてしまいます。

それを軽減するために一般的に用いられているのが「ダーク減算」です。
対称天体を撮影したのと同等の設定で暗闇を撮影したものをダークファイルと呼びますが、ライトフレーム(天体を撮影した生画像)からダークフレームを減算することで、相当なノイズ軽減が可能となります。

実際に、先ほどの画像に対してダーク減算を行ってみましょう
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22225896.jpg
左がコンポジットしただけ、右はコンポジット前にダークフレーム(120コマ)を減算したものです。左の画像に見られる『白い縮緬ノイズ』が撲滅されたことが分かります。

なお、F値の暗い望遠鏡で短時間露光した場合など、条件によりダーク減算が効かないケースがあることを発見しましたが、これは(ステライメージなどの)画像処理ソフト側の仕様として、減算時のマイナス値がカットされているために正しい平均値が得られないことに起因することを突き止めました。その場合の対処法として、下記の記事で紹介している『手動ダーク減算法』を開発しました。

さて、ダーク減算により『白い縮緬ノイズ』が解消したと思われた画像ですが、よく見ると今度は『黒い縮緬ノイズ』が存在することに気付きます。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22333335.jpg
これはカメラ側に存在するクールピクセルの影響です。

★その③:クールピクセルの殲滅
ASI1600MM-Coolは大好きな冷却CMOSカメラなのですが、個体により大量のクールピクセルが存在するという弱点があります。
たとえば今回撮影に用いた『ASI1600MM-Cool1号機』は、下記のように位置合わせ無しコンポジットすると、クールピクセルがウジャウジャと存在することが分かります。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22381980.jpg
『黒い縮緬ノイズ』は、これらのクールピクセルが天体の位置合わせ作業により流れて生じた像だと解釈できます。詳細に調べてみたところ、このクールピクセルには撮影輝度との線形性が保たれておらず、ダーク減算はもちろんのこと、フラット除算でも回避不能であることが判明しました。また、ライトフレーム中に存在するショットノイズの影響でステライメージのクール除去フィルタなどの演算も効きません。そこで、クールピクセルの影響を回避するための処理法『クールファイル補正法』を編み出しました

今回のダーク減算後の画像に対し、『クールファイル補正法』を施してみると、下記のように『黒い縮緬ノイズ』が解消したことが分かります。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22444466.jpg
左がダーク減算後にコンポジットしたもの。右はダーク減算後に『クールファイル補正法』を実行した後にコンポジットしたものです。

★その④:それでも消せないノイズ?
このように、独自の視点で色々なノイズと戦ってきた訳ですが、どうしても消しきれないノイズが残っていました。それが『突発的ホットピクセル』です。
今回の画像をよく見ると、下記のように極めて不快な白いノイズがあることに気付きます。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_22512308.jpg
その形状がガイドエラーのベクトルと全く異なることから、随分と悩んできたのですが、自作霧箱を用いた実験などを通じて、どうやら自然放射線の荷電粒子がセンサー面をダイレクトヒットした影響ではないかと推測しました。

特に、自然放射線のうち、高エネルギーを有する二次宇宙線(地球に入射してきた宇宙線粒子が大気の原子核と相互作用して生じた二次粒子のこと)の到来頻度をプロトン線のエネルギースペクトルからザックリと計算してみると、およそ30秒に1粒程度の頻度でセンサー面をヒットするオーダーであることが分かりました。(ごめんなさい。この辺はかつての専門分野だったのですが、すでに脳みそがポンコツになっているので詳細な計算過程を晒す自信がありません。)

次に実際に撮像センサーが荷電粒子に『感光』するのかどうかをトリウムレンズを線源として実験してみたところ、下記のように統計的に充分有意なレベルで「感光する」という結論を得ました。


また、実際に30秒間隔で撮像したダークフレームを冷却CMOSカメラを含む13種類のカメラについて数千コマほど解析してみた結果、下記のように通常のノイズと放射線ヒットによるノイズを弁別することに成功しました。


要するに、撮像センサーのピクセルを1つ1つ時系列毎に観察したとき、揺らぎの程度を逸脱する極めて高い輝度を吐いた場合、それが放射線ヒットであるらしいという結論に至りました。

ノイズ退治に王手?『コスミカット法』の考案_f0346040_23160817.jpg
上記のように、赤いセルで示したデータが突発的なホットピクセルで、同一のピクセルにおいては一度しか生じていないことが分かります。
そうです。この赤いデータだけを排除すれば、この不快なノイズは抹殺できるのです。








ここまで読まれた方、お疲れ様です。
★★ここからが本題です★★
一般的には「突発的に生じる高輝度データ」を排除するには、シグマクリップが用いられます。
たとえば、放射線ヒットを含む10コマのデータの一部を時系列で表示した物が下記の表です。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23205135.jpg
左右はピクセルのNo、上下はフレームNoを示します。赤色で記したデータが放射線ヒットに起因すると思われる異常値です。
これを各ピクセルの平均輝度と標準偏差を元に、どれだけ正常値から乖離しているかをしめしたのが、下記の表になります。

ノイズ退治に王手?『コスミカット法』の考案_f0346040_23232657.jpg
さきほどの「排除したいデータ」は全て3シグマの乖離値を持っていることが分かりました。(あくまでも10コマでの統計を行った場合です)
そこで、3シグマ以上の乖離値を弾くようにコンポジットすると異常値が排除されて、ノイズが消えます。これがシグマクリップです。

ところが、数十コマ以上に及ぶ大量の撮像データをシグマクリップしようとすると、膨大な演算時間と大量のメモリを消費します。そこで、放射線ヒットの頻度が低い特性から「特定の乖離値のデータを弾く」のではなく「無条件で最大輝度値を1つ捨てる」という方法を考えました。数千コマ以上におよぶ膨大なテストデータを解析した結果、このロジックで充分にすべての放射線ヒットを排除できることが判明したからです。

問題は、最大値を1つカットし残りのデータの加算平均を取るという演算も(シグマクリップほどではないにしろ)相当にメモリを消費する重たい処理になってしまうことです。なんとかして、最大値を1個捨てて平均値を高速演算できないものでしょうか??


★『コスミカットコンポジット法』
苦心の末、閃いたのは下記の処理です。(あまりにも簡単なので、あきれないでくださいね)

それは、ダーク減算とクールファイル補正法を実行した後のライトフレームについて、

①ライトフレームを位置合わせあり加算コンポジットし、Aとする
 ※加算平均ではなく加算です!(重要)

②Aとは別にライトフレームを位置合わせあり比較明コンポジットし、Bとする

③AからBを減算する


たった、それだけ!!

では、実際にやってみましょう。

①ライトフレーム64コマを位置合わせ加算コンポジットします
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23372778.jpg
当然、真っ白けになりますが、ステライメージは64bitの演算空間を持つので大丈夫です。ちゃんと写ってます。

②ライトフレーム64コマを位置合わせあり比較明コンポジットします。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23392202.jpg
③ ①から②を減算コンポジットします
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23431586.jpg
相変わらず真っ白けに見えますが、大丈夫です。これで放射線ヒットは全て消えました。

④レベル調整します。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23450466.jpg
では『コスミカット法』の有無を比較してみましょう。

すると・・・・

ででん!!
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23462816.jpg
  ※左:ダーク減算&クールファイル補正法のみ 右:『コスミカット法』を付加

ノイズ退治に王手?『コスミカット法』の考案_f0346040_23464047.jpg
  ※左:ダーク減算&クールファイル補正法のみ 右:『コスミカット法』を付加

64コマの処理にかかる時間、わずかに10秒ほど!!
シグマクリップの100倍~数百倍は高速!!
ついでにメモリ消費ほとんど無し(3コマ分をロードする容量だけ)




★なぜこの演算で最大値カットになるの?
ええ、やっていることは単に最大値カットです。ただし、これを各ピクセル毎に行うには通常かなりのメモリを消費します。
念のため、何が起こっているのかを見てみましょう。

1:演算前の状態
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23205135.jpg
2:これを加算コンポジットすると
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23555525.jpg
 ※上から順に10コマのうちどこまでコンポジットしたかを示します。

3:比較明コンポジットすると
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23570871.jpg
 ※上から順に10コマのうちどこまでコンポジットしたかを示します。

このように、1コマずつ比較明演算をおこなうことで、自動的に最大値が残っていきます。処理済みの画像は順次メモリから開放されるためメモリを食わないというカラクリです。

4:加算値から比較明値を減算すると
ノイズ退治に王手?『コスミカット法』の考案_f0346040_23582997.jpg
 ※上下はコンポジットに用いた枚数を示します

このように、処理枚数が何枚の場合でも、異常値が綺麗にカットされたことが分かります。

『コスミカットコンポジット法』とシグマクリップのそれぞれについて、どれだけ本来の輝度値を求められたのかをまとめると下記のようになります。
ノイズ退治に王手?『コスミカット法』の考案_f0346040_00032384.jpg
 厳密には『コスミカットコンポジット法』により、放射線がヒットしなかった正常ピクセルについても1コマ分だけデータが消えるので、本来の平均値よりも少しだけ暗い値になりますが、実際にはレベル調整でその影響は補正されるので実害はないでしょう。


ふはははは。
ノイズ成敗成就のための「最後の1ピース」ついに手に入れたわ


★★★お約束★★★
①『縮緬ノイズ』『クールファイル補正法』『手動ダーク減算法』『コスミカットコンポジット法』は、単にあぷらなーとの造語です。
②ASI1600MMシリーズのクールピクセル問題は、現行製品では解消しているとのこと情報があります
③各種の『考察ごっこ』や『検証ごっこ』は、素人であるあぷらなーと独自の見解ですので、信頼性は保証できません。
④ステライメージのクール除去フィルタがクールピクセル除去に効かないのはショットノイズが邪魔をするためですが、ステライメージのホット除去フィルタが放射線ヒットの除去に効かないのは、ホットピクセルと異なり放射線ヒットは同時に複数のピクセルが一斉に異常値を吐くからです。(要するにノイズ像が「点」ではなく「線」や「面」のため、弁別できない)言い換えると、放射線ヒットによるノイズは「空間ノイズ」ではなく「時間ノイズ」の一種に該当するからとも解釈できます。


Commented by kem2017 at 2020-07-05 08:21
おおおおおう!
これは凄そうだし、お手軽そう!
すっごーい(小並感)
Commented by supernova1987a at 2020-07-05 11:44
> kem2017さん
ありがとうございます。
『メカニカルPEC』や『イーブンオッド法』の時もそうですが、一見複雑そうな工程がシンプルなロジックで実現できるとテンションが上がりますよねぇ。邪道バンザイ♪
Commented by at 2020-07-05 13:16 x
私の頭では理解するのに時間がかかりましたが、それでもなんとなく判るのは、あぷらなーとさんの説明がとても丁寧だからなんだと思います。すごい。
全部足したのは、全部の光を液のように継ぎ足して、一番明るいところ(宇宙線ノイズ)を沈殿させて、その沈殿させた部分を比較明で取り除く、というようなイメージでしょうか。いや、どちらかというと浮いたアク取りかな?
残るのは透明な液体(L画像)ということで。

1枚だけ明るいのがあっても、60枚とかで平均すれば?とも思ったのですが、こうやって数字で示すと一目瞭然ですね。500ほどの信号に対して、36000とかのノイズが入ると、100枚平均でも360のノイズが乗って…ということですね。

で、「コスミカット」の「コスミ」って…Cosmic Rayから来てるんでしょうか?
Commented by にゃあ at 2020-07-05 13:30 x
いよいよたどり着かれたのですね。素晴らしいです。おめでとうございます! コスミカット法とかイーブンオッド法とかステライメージがすぐに取り入れてくれると使い勝手もあがるのですが。

アストロアーツさん、あぷらなーとさんにいますぐ連絡ですよ!
Commented by supernova1987a at 2020-07-05 13:59
> 玄さん
「全部足したのは、全部の光を液のように継ぎ足して、一番明るいところ(宇宙線ノイズ)を沈殿させて、その沈殿させた部分を比較明で取り除く」

素晴らしい。バッチリな描像ですね!!
そういう例え話大好きです♪

ちなみに、ご推察の通り『コスミカット』はCosmic RayのCutという主旨です。本来はガンマ線観測においてバックグラウンドノイズとなる(プロトンなどの)粒子線の排除を指す宇宙線物理学用語なんですが、今回は別な意味合いで使いました。拙ブログに出てくる『イーブンオッド法』とか『エクイインテンシティ法』とかも、元々はその界隈の用語の転用です。
Commented by supernova1987a at 2020-07-05 14:03
> にゃあさん
本業の教材研究(判断推理の講義予習)をしていた時にふと思いつきました。

アストロアーツさん、今なら無償でロジックを提供しますよー。
なんてね。
Commented by te kure at 2020-07-05 17:13 x
パチパチ👏 素晴らしい‼️
これまでの一連のノイズ処理の最後のピースがキッチリ決まった集大成ですね!
流れがとてもよく理解(本当かな〜😅)出来ました。
本当にお疲れ様でした!👏👏

個人的には「光子ショットノイズ」がツボにはまり理解出来ました。
アレをノイズと呼ぶのかな〜(笑)
Commented by supernova1987a at 2020-07-05 18:55
> te kureさん
今回の試みは、あくまでそれ以外のノイズ処理が効いた後のお話なので、過去の取り組みも再現してみました。おっしゃるとおり、最後のピースがバチッとはまった感じで爽快です♪

光子ショットノイズは私の造語では無く一般用語なのですが、たしかにこれをノイズと言うのは少々違和感がありますね。でも巷で言われている「高感度ノイズ」と言うよりはシックリきます。別に感度を上げたのが悪いのでは無く、単に露光が足りないだけですもの。
Commented by ゴットハンド at 2020-07-05 20:14 x
またまた大発見ですね 凄い!
いやいや、「縮緬ノイズ」なんて、もう普通につかわれてますから。
いっそのこと、「コスミカットコンポジット法(R)」としちゃいましょう。(笑)
それにしても、発想がすごいですね。加算コンポジットなんてあまり使わないです。自分なら真っ白になった時点で終了です。(^^;)

Commented by supernova1987a at 2020-07-06 22:48
> ゴットハンドさん
ありがとうございます。MATLABやDELPHIで簡単な画像処理コードを書いて遊んでいたおかげで、ステライメージの機能だけを使って演算するには?と知恵を絞ることができました。

おかげさまで、いつになく良い結果が出て満足です♪
Commented by noritos1047 at 2020-07-08 02:10 x
>突発的なホットピクセルは同一のピクセルにおいては一度しか生じていない
というのは意外でした。その前後も多少は高い値かと思ってました。人工衛星とかの軌跡を消すσクリップとは用途が違うのですね。
真っ白な画像が出ても、大丈夫、写ってますからと断言できるのは経験のなせる業ですね。イヤ凄い。
Commented by supernova1987a at 2020-07-09 19:39
> noritos1047さん
ソフト内部でどんな演算がされているのかが分かりやすい点と、枚数が異なるフレームを重ねる場合でも「トーナメント方式」が不要な点が便利なので、しばしば加算コンポジットを愛用しています。

おっしゃる通り、放射線ヒットは単一フレーム内にのみ生じるので、今回の手法がうまく適用できました♪
名前
URL
削除用パスワード
by supernova1987a | 2020-07-05 00:32 | 画像処理法考案 | Comments(12)

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


by あぷらなーと
PVアクセスランキング にほんブログ村