2016年3月16日水曜日

RemoveGrainの基本事項

RemoveGrainのシンタックスは以下の通りです。

RemoveGrain(clip clip, int "mode", int "modeU", int "modeV", bool "planar")

今回はまず、フィルタの具体的な処理内容以外のことについて解説します。

RemoveGrainにおける基本事項


・参照サンプルの配置
RemoveGrainはmode=1からmode=24までの24種類のフィルタを一つにまとめたものですが、これらは全て処理対象となるサンプルとその近傍8点を参照するspatial(空間軸)フィルタです。
図にするとこんな感じ。
中央のCが処理対象となるサンプルで、N1~N8はその周囲のサンプルです。
次回から説明するすべてのmodeにおいて、処理対象となるプレーンの上下左右の画像端1ラインを除くすべてのサンプルに対して処理を行います。
なお画像端の1ラインはそのままコピーされます。

・mode、modeU、modeV
RemoveGrainではYプレーン、Uプレーン、Vプレーンそれぞれに異なったmodeでフィルタをかけることができます。
RemoveGrain(mode=10, modeU=2, modeV=5)なら、Yプレーンはmode10、Uプレーンはmode2、Vプレーンはmode5のフィルタがかかります。
modeは1~24までの24種類がありますが、それ以外に-1(なにもしない)と0(そのままコピー)もあります。
-1の場合、フィルタリング後のデータを書き出すために用意されたメモリには何も手を加えられませんので、どのような出力になるかは誰にもわかりません(avisynthは確保したメモリのゼロクリア等はしません)。
0ならば、フィルタ前のデータがそのままフィルタ後のメモリにコピーされます。
mode、modeU、modeVのデフォルト値はmode=1、modeU=mode、modeV=modeUです。
よって、もしYのみにフィルタをかけたい場合は、RemoveGrain(mode=1~24のどれか, modeU=0)とします。

・planar
本家RemoveGrainはYV12とYUY2/RGB(一応)をサポートしていましたが、RGToolsではYUY2やRGBのサポートはなくなり、代わりに全てのplanar format(YV24, YV16, YV12, YV411, Y8)をサポートするようになりました。
YUY2なクリップに対してフィルタをかけたいなら事前にConvertToYV16()をかけ、フィルタ後にConvertToYUY2()で元に戻しましょう。
RGBにかけたいならPlanarToolsでも使ってください。
planarパラメータはもともと本家RemoveGrainではSSE2Toolsを利用したYUY2/RGBサポートのために用意されていたものですが、RGToolsでは単にavisynth2.5用に書かれたユーザースクリプトへの互換性のためだけに用意されたもので、これをtrueにしてもいいことはまったくありません。
よってこのパラメータは一切弄らないようにしましょう。

・clamp()
modeの内容を説明するにあたり、clamp(x, a, b)という表現を使用することになると思います。
clamp(x, a, b)はxがa以下の場合はa、xがb以上の場合はb、a < x < b の場合はxの値そのままの意味になります。(なお常にa <= bの関係が成り立つものとします)
この処理はclippingとかsaturateなどと呼ばれることもありますが、ここではとりあえずclampで統一します。

では次からいよいよmodeの説明にはいります。

目次:
RemoveGrain解説 導入
RemoveGrainの基本事項
RemoveGrain mode1~mode4
RemoveGrain mode5~mode12
RemoveGrain mode13~mode16
RemoveGrain mode17~mode22
RmoveGrain mode23/mode24 及び総評
Repair
Clense
Clense 応用

0 件のコメント:

コメントを投稿