rawpyの現像関数、postprocess関数で指定できる引数の中に、dcbと呼ばれるデモザイクアルゴリズムに関して、複数オプションが用意されています。それらの動きを確認します。
postprocessに関しての詳細はこちら。デモザイキングオプションに関してはこちら。
あまり突っ込んだ確認はできませんでしたが、パラメータを変えた時の変化は見てみようと思います。
DCB DEMOSAICING
rawpyのpostprocessで指定可能なデモザイキングのアルゴリズムにDCBというものがありました。このアルゴリズムの詳細ですが、どうやら、色ノイズ除去のオプションfbdd noise reductionの作者と同じ人のようです。
というのも、fbdd noise reductionのところでたどり着いたページに並列にこのDCBの解説があり、そこにはfbddのページと同様に、
Please remember that I am not a pro and DCB is only my hobby project. I don’t take any money for my work, I don’t claim that DCB outperforms any other algorithm. I am very happy to hear that some people find the results usable – nothing more.
(適当な訳)自分はプロではないし、DCBはただの趣味。お金を取る気もないし、DCBが他よりすごいとは言わない。自分は他の人が使ってくれるだけでうれしいし、それ以上のことはない。
とあまりにかっこよすぎるコメントが載っています。でこの男前なサイトは封鎖されており、どこぞのWebアーカイブしか残っていません。(上記リンクはそのアーカイブ)消えても困るので原文も載せておきます。オリジナルサイトはどこぞのフィッシングサイトにリダイレクトされるので注意。
このページにはアルゴリズムの詳細が載っているわけではないですが、特徴は記載されています。
What are its weak points? (弱点は?)
DCB is confused when it comes to render areas with high chromatic aberration or when the white balance is set incorrectly.
色収差の高い領域、またはホワイトバランスが正しく設定されていない場合、うまく行きません。
It is quite slow too.
処理が遅いです。
High contrast, black and white edges may be jagged.
高いコントラストの白黒エッジで、ジャギー(エッジ部のギザギザ)が出やすいです。
こんな感じですかね?
レンズ収差があるとダメ、ってことはエッジ部に収差による色づきがあるとうまく行かないってことですかね?デモザイクに起因する偽色を抑制するための処理がありそうです。
ホワイトバランスが整っていないとうまく行かないということは、ホワイトバランス調整の後にデモザイクする。ということのようですね。RGB独立に処理するわけではなさそうです。
What are its strong points? (長所は?)
Nyquist resolution is rendered with small number of artifacts and the the overall image look is attractive.
ナイキストの解像度ではアーティファクトが少なくいい感じです。
Image is sharp and artifacts are not annoying.
画像はシャープでアーティファクトは悪くないです。
明暗が早い周期で出るような、高周波な画像に対してはいい感じなんですかね?ジャギーはシャープさ(鮮鋭性)とのトレードオフですかね。ただ明確にシャープネスの処理はしてないとも記載がありました。ノイズ除去もしてないそうです。
ノイジーな画像も得意だぜ。みたいな記述もありますが、オプション次第とも読めます。確かに、以前デモザイクアルゴリズムを比較した際には、ノイズ成分は強調されていないように見えました。
こんな感じ。他の手法に対してノイズ成分は少ないように見えます。
特徴はなんとなくわかりました。試してみます。
DCB Options
オプションとして、2つ。dcb_enhance と dcb_iterations があります。それぞれ説明として、
dcb_enhance: DCB補間における補間された色の強調をするか否か
dcb_iterations: DCBにおける補正処理する回数
とあります。これだけではわかりません。先のサイトにも説明らしい説明はありませんでした。
dcb_enhance
TrueとFalseの2通りなので、わかりやすいかなぁ。と思ったのですが、手持ちの写真からだと高難度の間違い探しでした。やっと、このDCBの特徴となるような高周期な画像で、見た目でわかる差分が確認できました。
かなり拡大表示しています。メッシュ生地を撮影したものです。Falseだと何か粒粒が、しかも斜めにつながったりして見えてしまっていますが、Trueにすることでそれらが消えています。こう言った被写体だとTrueにした方がよさそうです。ただ処理時間が倍以上違いましたがね…。(Trueの方が2.5倍処理時間がかかりました。)
平坦部が多いのであればこの処理コストは払う必要はなさそうです。
dcb_iterations
正直見分けがつきません。困りました。被写体を選びそうです。デフォルトは0のようです。20まで数字を動かしてみましたが変化がわかりません。
処理時間は数字を増やす毎に増えていきます。dcb_enhanceがTrueだろうがFalseだろうが傾向は同じです。画素の計算上は違いは出ます。完全一致はしませんが、見た目にはほとんど見分けがつきません。
イテレーションというからには何かの処理を繰り返して行って結果を出そうとしているのだと思いますが、効果が不明です。ノイズの雰囲気も変わりません。お手上げ。
まとめ
DCBと呼ばれるデモザイクアルゴリズムの特徴を調べてみました。実験からはその効果がイマイチつかみきれませんでしたが、暗部SNもよく、偽色も抑えられ、いい感じに見えます。が処理速度は遅いです。特にTrueに設定したとき。
暗部でSNが悪く、格子状の被写体。みたいな厳しい条件の時には活躍してくれそうです。
コメント