アナログ放送(NTSC伝送)が7月24日に終了し、テレビ放送がデジタルに一本化されました。しかし、MPEG-2でノイズを目立つ事無く圧縮するには放送波の帯域が不足しており、動きのあるシーンではモスキートノイズやブロック歪み(ノイズ)が暴れがちです。これは、アナログ信号のノイズとは異なる性質を持つため、従来のノイズリダクション(以下NRと表記)フィルタでは「掛かってほしくない部分までフィルタリングされてしまう」欠点があります。
そこで今回は、映像のディテールや性質をできる限り損ねることなく、モスキートノイズを低減するフィルタについて考えてみました。
この処理のベースには、スムージングフィルタが輪郭周りにブラーもしくはLPFを掛けて結果的にスムージング効果をもたらすと同時に、「輪郭周りに発生するモスキートノイズも潰れる」という副次的な効果を利用した点にあり、もちろん、スムージングフィルタのみでは輪郭の角が丸まって潰れるなど変形してしまうため、実用が難しい(用途が限られる)フィルタでもあります。
そこに現れたのが「低周波成分保護フィルタ」。
スキマ産業さんが説明されているとおり、Wavelet変換で低周波成分の取得、再Waveletで低・高周波成分の取得・再構築を行うフィルタで、readmeにも書かれていますが、用途としては低周波成分(映像の微細なディテール)を保護しながらノイズNR系のフィルタと組み合わせてディテール保持のNR効果を狙うものです。
額面どおり「そのまま」の使い方をしても十分効果はありますが、処理の仕組みから「スムージングフィルタと組み合わせたら、輪郭崩れを防ぎつつジャギーや歪みを補正しながらモスキートノイズを低減できるのでは?」と考え、試してみると……イメージに近い効果がありました。
NR系フィルタとは異なる利点として、輪郭以外にフィルタがほぼ適用されないため、真面目なNRフィルタよりも処理が軽く、モスキートノイズだけでなくブロック歪みによる輪郭歪み・ジャギー補正も同時に行える点でしょうか。
- 輪郭、とくにテロップ周りのモスキートノイズを低減しつつ、輪郭(キャラクターの主線)やテロップ文字の変形をほぼ防いでいます。
- 「低周波成分保護フィルタ」を使わず、スムージングフィルタのみ適用した例(疑似モスキートNRはサンプル1と同じ強度)。輪郭が縮んだり丸まるなどして、画の性質が大きく変化してしまい残念な事に。とくに判りやすいテロップ文字での変化は、キャラクターや背景等の主線でも同じように発生します。スムージングを弱く掛けてもそれなりに出てしまう欠点であり、それこそ極端に弱く掛けるとモスキートノイズを低減できないため、スムージングフィルタのみではまず使い物になりません。このような画の崩れは、WarpSharp系フィルタでも似たようなかたちで発生します。
このように、低周波成分保護フィルタと組み合わせることで、スムージングフィルタの欠点をできる限り抑えつつ、モスキートNR的な効果を狙えることが確認できました。
Wavelet3DNR4にはモスキートノイズNR・ブロックノイズNRが実装されているものの、シングルスレッド動作しかできない事もあり処理が極端に遅く、後段のフィルタやエンコーダの時間が長くなり、CPUがあくびをかく現象を起こします(ゆえに遅い)。ほぼ同様の効果を狙える「疑似モスキートNR」であれば、Wavelet3DNR4よりも2~3倍程度高速に処理でき、エンコードデータのファイルサイズ削減も期待できます。
└─Pluginsフォルダ ←──┘
2. AviUtlを起動すると、プラグインとして「低周波成分保護」「低周波成分保護2」という2つのフィルタが認識されます。「低周波成分保護」が初段の処理、「低周波成分保護2」が後段の処理となりますので、この2つのフィルタ間に「スムージングフィルタ」が来るよう各フィルタを並び替えます(左の画像)。この3つのフィルタがセットで「1つの疑似モスキートNR」と捉えると良いでしょう。
3. 次に、初段の「低周波成分保護」で復元率を指定しますが、今回の処理サンプルは元映像成分の復元度を高めるため、最大の100を指定。なお、この数値を下げると映像成分の復元度が低くなり、間に適用するフィルタの処理特性が強く出ます。
4. 最後に「スムージングフィルタ」の強度を調整。低周波成分保護フィルタがスムージング時の輪郭変形を抑えるため、単体で掛けるときよりもやや強く掛けます。「範囲拡大」のチェックボックスは必ず入れ、適用範囲を広げつつサンプルでは強度を1にセット(範囲拡大をOFFにすると、先に書いたスムージング処理の欠点が出やすく、モスキートノイズへの効果も低くなるため、あまりオススメできません)。フィルタ強度に関しては、個々の主観や映像ソースの性質で左右するため、このセッティングが最適値というわけではありませんが、強度1はギリギリのラインかな……と個人的には感じました。0だと強すぎますので、範囲拡大&強度1~5程度が疑似モスキートNRとしての美味しいラインかな、と。
なお、プレビュー画面でフィルタ効果を確認する際は、スムージングフィルタのチェックボックスをON/OFFして画質変化の差を見ると把握しやすいでしょう(低周波成分保護フィルタはONのままでかまわない)。
- モスキートノイズだけでなく輪郭周りブロック歪みも低減効果が期待できる
- 輪郭周辺以外はフィルタが掛からず、低周波成分保護効果も相まって背景等のディテールが保持される
- モスキートノイズ低減や輪郭補正効果で、エンコード後のファイルサイズ縮小効果が期待できる
- Wavelet3DNR4よりも処理が軽くやや速い
1,2,4については先に述べましたが、3は映像特性やエンコーダのセッティングでも左右するため一概に「これくらいファイルサイズに縮小化できる」とは言えません。参考程度ですが、x264でかなりディテールを拾うセッティングにて「ゆるゆり」本編・数話をエンコードした限りでは10%~15%程度ファイルサイズが縮みました。
- 主線がソフトではなく、やや高解像でコントラストが高めの映像はスムージング強度の調整に注意が必要
- I/P変換(60p化)や逆2-3後(24fps化)等のプログレッシブ映像専用処理。インタレース映像には適用できない
- Wavelet3DNR4より速いといっても、やはりそれなりの処理速度ペナルティがある
最後の処理速度については、この効果と処理速度を天秤に掛けたとき、「あり」だと思えるか「だめ」だと判断するかで評価が分かれると思います。モスキートノイズを低減した画質やファイルサイズ縮小化が嬉しい人は「この処理速度ならあり」と思える可能性が高いですし、「これくらいの改善なら速度を取ってフィルタリングしない」と判断する人もいるでしょう(結局は個々の価値観です)。
個人的には──
-
・MPEG-2特有のモスキートノイズが非常に気になる
・自分の好みにおける画質改善効果のためには処理速度低下も惜しまない
・ファイルサイズが僅かでも縮むと何となくうれしい
・元映像と疑似モスキートNR後の画質差が気にならない(もしくは、わからない)
とくに最後の「~わからない」は、フィルタリングをしても主線やディテールの変化が気にならないという意味において、「気にならないなら、むしろ処理したほうが得かもしれない」という考えです。一方、逆説的に「MPEG-2ノイズさえも映像の一部だから気にせず残したい」と捉える人にはウケが悪いかもしれません(であればトランスコード自体をしないという考え方もある)。
ということで、「低周波成分保護フィルタ」を利用したフィルタリングについて、その一例をお伝えしました。
・スムージングフィルタ [がらくたハウスのがらくた置き場]
スムージング強度1だと実線は綺麗だけどエッジの保持具合はPMD_MTより
劣るのでうーんと言った感じでしたが、スムージング強度5にしてみたら
保持具合も良好且つ線も綺麗という結果が得られて気に入りました。
ただエンコ時間が結構伸びてしまうのが悩ましいですね。
同感です。
記事では効果をわかりやすく見せるため強めに処理していますが、エッジを真面目に処理する場合は強度4,5程度まで弱くするのが実用的だと思います。
フィルタが多くなるとエンコード時間が延びるのは、ある意味宿命ですが、画質と時間のトレードオフを考慮しても、やや重たい部類に入るフィルタリングになりますね。悩ましいです……
はじめまして
こんばんは
いつも大変勉強になる記事ありがとうございます。
この疑似モスキートNR処理を使用して疑問点があり
こちらで質問させていただきます。
この疑似モスキートNR処理を使用する際に、エッジ処理はNR前の処理の方が良いのでしょうか?それとも後でしょうか?
基本的にNR系処理は最初の方にやると記憶してたのですが、このフィルタの場合はNRとはちょっと違った感じだと思い、後処理の方が良いのかと?疑問が生まれました。
もし宜しければご教示orアドバイス頂けますと幸いです。
それでは宜しくお願い致します。
「エッジレベル調整」の事でしょうか。
どういう効果を求めるか、にもよると思うのですが、輪郭を際立たせるという意味においては「疑似モスキートNR」の後のほうが良いと思います。
なぜなら、モスキートノイズやブロック歪み低減後に処理したほうが、それらのノイズを強調する(影響される)ことなく「エッジレベル調整」の効果を期待できるためです。
場合によっては、疑似モスキートNRの工程に挟んでも良いかもしれませんが(低域成分保護→スムージング→エッジレベル調整→低域成分保護)、スムージングとエッジレベルの効果を把握しにくくなる可能性があるため、疑似モスキートNRの後の処理を個人的には推奨したいですね。
POP様
お忙しい中ご返答大変有難うございます
勉強になりました
年末で忙しいかと思われますが更新楽しみにしております。
自分の場合を
wavelet-typeGとNL-Meansを同時に使う方法が
質感があまり失われないので
それ、一本で
まれにwavelet-3DNR4の高周波3DNRのみを兼用することもあります。
まあ、ブロックノイズには向きませんが・・・