複数枚、連写画像からのノイズ除去を行って行きます。これまでJPEGをソース画像としてましたが、このJPEGがそもそも強烈なノイズ除去をしてしまっているので、ディテールが失われているのではないかと疑い、ノイズバリバリのraw画像をソースとして処理してみようと思います。
以前の記事
にてJPEGをソースとして、バイラテラル的合成による複数枚、連写画像からのノイズ除去を行ってみました。いわゆるマルチショットノイズ除去です。これと同じ被写体をrawデータをソースにして処理してみようと思います。
raw現像
これも以前記事にしました。rawpyというライブラリで現像させます。いろいろ調べた結果を
にまとめています。今回はこのライブラリを使って連続画像の現像を行って行きます。まずはシンプルに、
import rawpy raw = rawpy.imread(fname) base = raw.postprocess(use_camera_wb=True)
でデコードした結果です。ノイズ除去OFFです。
以前の記事で扱ったJPEGと色合いがだいぶ違います。iPhoneさん後加工がっつりしてますね。そのJPEGがこちら
彩度高め、コントラスト強め、デノイズも強め。そんなところでしょうか。
今回のソース(raw現像しただけ)とする画像を拡大すると、
いい感じにノイジーです。さすがにこれをソースとするのも気が引けます。rawpyさん簡単にノイズ除去してくれるオプションもあるので、今回は、ベースとなるフレームだけ、軽くノイズ除去させました。
base = raw.postprocess(use_camera_wb=True, noise_thr=200.0)
としたときの結果が、これ。
ん~この程度ではあまり変化ないですね。まぁ今回はマルチフレームでのノイズ除去なので、ここでこれ以上、シングルフレームを使ってノイズはとらないことにします。
バイラテラル的合成
以前の記事を完全にトレースします。ソース画像をrawに置き換えただけです。若干合成に使うパラメータをいじりましたが、ほぼ同じです。位置合わせを行った後に、加算合成する。が基本動作です。
説明はこちらにゆだねますが、その加算合成する際に、ベースとなる画像との類似性を計算し、その類似度が高いほど加算する比率を高くする。という手法で合成させます。その結果がこちら、
まぁまぁですね。しっかりカメラのセンサ起因のノイズは取れているように見えます。JEPGの時の結果が、
これなので、まぁそんなにインパクトに違いはないです。(右が処理前のJPEG、左が複数枚を使ってノイズを取った結果)
しかしパスタの色が違う…。
比較
今回、rawをソースとした合成によって、細部ディテールがJPEGのそれよりきれいに残ることを期待していました。記事の章立て的にも「比較」の章を作ったのですが、画像のどこを見てもその違いがはっきり分かる箇所が見当たりません。
強いて言えば、テーブルの木目のテクスチャがrawの方が気持ち残り気味かな。くらいです。
どっちがどっちだかわかりますよね…?右がJPEG由来、左がraw由来の同じ個所の拡大です。木目(木のスジですかね…)の陰影がもう少し残っている感じです。ちなみに1枚JPEGだとかなりべたっとした気持ち悪いテクスチャになってます。このあたりがギリギリ、アドバンテージと呼べるか呼べないかの部分になります。
JPEG単独で見ると強烈なノイズ除去によるべたっとした質感なのですが、複数枚合成することでそれがきれいに直っており、rawのそれと比較しても遜色ないです。じゃあrawの方はどうかというと、やはり位置合わせの限界で、ノイジーな中にあるテクスチャは合成でぼかされます。明確なアドバンテージが見当たりませんでした。
これは被写体の問題なのかもしれません。もう少し追検証がいるかもしれませんが、今回の被写体では効果は少なく、逆に言うとJPEGでも全然問題ない結果となりました。
JPEG画像を優秀というべきか、合成の処理がいい塩梅だったというべきか、そんなはっきりしない結果になりました。
まとめ
raw画像をソースとして使うことで、画像のディテールを保持したノイズ除去画像ができるかなぁと思ったのですが、今回は残念ながらその期待通りにはいきませんでした。raw撮影の手間と、現像を含めた処理時間に見合うような、ノイズ除去効果は得られていないと思います。JPEGで十分じゃん。
ただ他の被写体であればもう少しましな結果が出そうな気もするので、今後折を見てもう少し追検証はしてみようと思います。まだあきらめてはいません。
コメント