AviUtlのプラグインをまた作りました。色差情報を横方向にダウンサンプリング(縮小)するフィルタです。いつものところにソース付きでアップしてあります。

 AviUtl プラグイン フィルタ by うえぽん

 作ったきっかけというのは、次の画像の上のようなソースをaviutl使ってHuffyuv(可逆圧縮)で圧縮したところ、下のように一部劣化していたからです。

上が圧縮前、下がYUY2圧縮後(ともにx2)


 髪の毛の線の部分がカクカクになってます。Huffyuvは可逆圧縮なのにこれはどういことかと調べてみると、どうやらaviutlはコーデックで圧縮するまえにYUY2圧縮といって色差情報を横方向に間引いているとのこと。で、その時左ピクセルだけから色差情報を拾っているんだとか。
 たいていの動画ではすでに色差情報を綺麗に間引いてあるので、左ピクセルだけから拾っても劣化することはないのですが、そうではない場合は上の画像のように劣化するらしい(もう少し詳しく書くと、色差成分をニアレストネイバーで縮小しているようなものなので、RGBからの変換だとモアレが発生してカクカクになる)。

 と、いうわけで、これを解決すべく綺麗にダウンサンプリングするフィルタを作ってみました。

 次の画像はUVダウンサンプリングフィルタで加工しHuffyuvで圧縮した画像です。

上がLanczos1、下がLanczos2(ともにx2)


 上はLanczos1で縮小、下はLanczos2による縮小です。違いはほとんど分かりませんが、Lanczos2の方が若干綺麗です。
 一応、Lanczos1から8まで設定できますが、数字を大きくするとモスキートノイズのようなもの(リンギング?)が出現します。Lanczos2あたりが一番綺麗だと思います。

[修正]
 計算が少し間違っていたのでフィルタを修正しました。しかし、修正前との違いはほとんど分かりません。下が修正後の実行結果。

左から、標準、面積平均法、Lanczos1、Lanczos2


 左から、標準、面積平均法、Lanczos1、Lanczos2。
 一番左以外ほとんど違いが分かりませんが、右に行くほど少しシャープです。