
	nnedi3 for AviUtl ver 0.9.4.1


【概要】

　avisynthの外部プラグイン「nnedi3」及び「nnedi3_rpow2」をAviUtl用に移植したフィ
　ルタです。
　nnedi3についての詳しい説明は、本家のドキュメントなどを参照してください。

　http://bengal.missouri.edu/~kes25c/
　http://forum.doom9.org/showthread.php?t=147695

　本フィルタは、以下の2通りの異なるフィルタとしてそれぞれ使うことができます。

　　・イントラフィールドのみのインターレース解除フィルタ (nnedi3)
　　・2のべき乗倍に画像を拡大する画像拡大フィルタ (nnedi3_rpow2)

　nnedi3は非常に高精度な補間を行うため、処理速度は遅めですが画像拡大において特に
　良好な結果を得ることが多いです。


【動作環境】

　version 0.99i4以降のAviUtlで動作します。マルチスレッドに対応しています。
　SSE2命令を用いるため、CPUがSSE2に対応している必要があります。


【インストール】

　aviutl.exeのあるフォルダ、またはaviutl.exeのあるフォルダに作られたpluginsフォ
　ルダの中にnnedi3.aufを置いてください。


【使用方法】

　「拡大フィルタとして使用」のチェックを外すとインターレース解除フィルタとして、
　チェックをつけると画像拡大フィルタとして動作します。

　インターレース解除フィルタとして使用する場合、本フィルタは片方のフィールドを保
　持し、もう片方のフィールドを保持しているフィールドの情報から補間します。
　保持するフィールドは「field」で指定します。

　「dh」を有効にすると、現在の画像全体をトップまたはボトムフィールドとして扱って
　画像の縦幅を倍にし、残りのフィールドを補間します。

　本フィルタでBob化の補間を行う場合、時間軸方向を参照した補間は行わないため画像
　がちらつくことがあります。

　画像拡大フィルタとして使用する場合、本フィルタは1回拡大するごとに画像を2倍の大
　きさに拡大する処理を行います。「rfactor」で拡大する回数を指定してください。


【使用上の注意】

　本フィルタは内部で YC48⇔YUV 変換を行うため、YUVに変換した際に輝度・色差の値が
　0〜255の範囲外に出てしまった場合、その情報は失われます。

　次のいずれかの条件を満たす場合、本フィルタは処理を行いません。

　　・インターレース解除時に縦解像度が奇数で、かつ「dh」が無効な場合。
　　・画像拡大時に「rfactor」が0の場合。
　　・お使いのCPUがSSE2非対応の場合。


【設定項目】

　インターレース解除時のみ、あるいは画像拡大時のみ反映される項目は次の通りです。

　　・インターレース解除時のみ反映される項目 : field, dh
　　・画像拡大時のみ反映される項目　　　　　 : rfactor, cshift

　次の項目は他の要素によって制限されることがあります。

　　・rfactor	 : 最大画像サイズを超えない範囲内に制限されます。
　　・cshift	 : 「YUY2入出力」が有効な場合、0に設定できません。
　　・dh	 : 最大画像サイズを超えない場合のみ有効に設定できます。
　　・YUY2入出力 : 画像がYUY2展開されており、横幅が偶数の場合のみ有効に設定でき
		   ます。

　以下の各項目の説明の一部は本家のreadmeを参考に書いていますが、私が英語を誤読し
　ている可能性もありますので、正確な情報を得るには本家のドキュメントなどを併せて
　参照することを推奨します。

　○ field

　　インターレース解除時に保持するフィールドを指定します。
　　60fps読み込み時に本フィルタでBob化の補間を行う場合は、ソースの読み込み方に応
　　じて2か3を選択してください。

	0: 常にボトムフィールドを保持し、トップフィールドを補間する
	1: 常にトップフィールドを保持し、ボトムフィールドを補間する
	2: ボトム→トップの順に交互にフィールドを保持する (BFF)
	3: トップ→ボトムの順に交互にフィールドを保持する (TFF)

　○ nsize

　　ニューラルネットワーク予測で参照する局所近傍サイズを指定します。
　　各数値に対応する 横範囲 x 縦範囲 は以下のようになります。

	0:  8 x 6 [default(画像拡大)]
	1: 16 x 6
	2: 32 x 6
	3: 48 x 6
	4:  8 x 4
	5: 16 x 4
	6: 32 x 4 [default(インターレース解除)]

　　本オプションはインターレース解除時と画像拡大時とでデフォルト値が異なり、デ
　　フォルト値はそれぞれインターレース解除時は6、画像拡大時は0です。

　　私もこのオプションについては正直よく分からないので、本家のドキュメントの記述
　　をそのまま日本語訳したものを以下に記します。

　　画像を拡大する場合は0か4に設定することを推奨します。縦範囲を大きく設定すると、
　　より先鋭な結果を得るでしょう。
　　インターレースを解除する場合は、横範囲を大きく設定すると傾きのより小さい線を
　　接続できるようになります。しかし、実際にどの設定を用いるべきかはソースのエイ
　　リアスの量(情報の損失量)に依存します。インターレース解除の前にソースにきつく
　　ローパスフィルタを通してあるなら、エイリアスの量は少なく横範囲を大きく設定す
　　る必要は恐らくありませんし、またその逆も同様となります。

　○ nns

　　ニューラルネットワーク予測器のニューロンの数を指定します。
　　処理速度と画質のバランスを設定する項目で、数値が小さいほど高速・低画質、数値
　　が大きいほど低速・高画質となります。ただし数値を大きく設定しても、画質の向上
　　は通常わずかです。画質向上の効果は、次の「qual」よりも大きいでしょう。

　　本オプションはインターレース解除時と画像拡大時とでデフォルト値が異なり、デ
　　フォルト値はそれぞれインターレース解除時は1、画像拡大時は3です。

　○ qual

　　本オプションも「nns」同様、処理速度と画質のバランスを設定する項目です。
　　2は1に比べ良好な結果を得ますが、より処理時間を必要とし、また画質の向上も通常
　　ごくわずかです。
　　画像を1枚だけ拡大するときなどに、2に設定することを推奨します。

　○ etype

　　ニューラルネットワーク予測で用いる重みを選択します。
　　0の方が良好な結果を得ることが多いようです。

	0: 絶対誤差を最小にするよう学習された重みを用いる [default]
	1: 二乗誤差を最小にするよう学習された重みを用いる

　○ pscrn

　　各ピクセルについてニューラルネットワーク予測での補間が必要か、単純で高速な三
　　次補間で十分かを、補間を行う前に選別することについての設定を行います。
　　選別器は非常に正確で、また計算の複雑さもニューラルネットワーク予測に比べて大
　　幅に小さいので、画質の劣化に気付くことなく処理時間を減らすことができます。

　　新しい選別器では3つのレベルを選択でき、レベルが大きいほどより多くのピクセル
　　でニューラルネットワーク予測での補間が必要だと判断します。よって、レベルが大
　　きいほど低速ですがミスは少なくなります。しかし、レベルの違いによる画質の差は
　　ほとんど認識できないでしょう。
　　エラーの少なさの点で以前の選別器に近いのはレベル2ですが、新しい選別器の方が
　　より高速です。

	0: 事前選別を行わない
	1: 以前の選別器を用いて事前選別を行う
	2: 新しい選別器を用いて事前選別を行う (レベル0) [default]
	3: 新しい選別器を用いて事前選別を行う (レベル1)
	4: 新しい選別器を用いて事前選別を行う (レベル2)

　○ rfactor

　　画像拡大時に画像を拡大する回数を指定します。
　　画像のサイズは1回拡大するごとに2倍になります。
　　本家のrfactorは拡大率を指定するのに対し、この項目では拡大回数を指定するので
　　注意してください。

　○ cshift

　　本フィルタによる画像拡大はそのままでは0.5ピクセルだけ左上にズレてしまうので、
　　それを補正する設定を行います。
　　補正を行う場合、数値が大きい方がわずかに低速ですが先鋭な結果を得ます。
　　「YUY2入出力」が有効の場合、輝度と色差を揃えるため補正を行うことが強制されま
　　す。

	0: 補正を行わない
	1: Bilinear法による補正を行う
	2: Spline16法による補正を行う
	3: Spline36法による補正を行う [default]

　○ dh

　　この項目をインターレース解除時に有効にすると、現在の画像全体をトップまたはボ
　　トムフィールドとして扱い、画像の縦幅を倍にします。どちらのフィールドとして扱
　　われるかは、「field」で保持するフィールドに対応します。

　○ YUY2入出力

　　AviUtlでの入力と出力がともにYUY2のとき有効にする項目です。(AviUtlによる入出
　　力がYUY2であるかどうかが問題なので、入出力データがYV12である場合も含む)
　　入力および出力のいずれかでもYUY2でないときは、必要に応じて本フィルタの前後に
　　色差の処理を行い、本オプションは無効にしてください。
　　なお、入力がYUY2でない場合は本オプションは有効に設定できません。

　　AviUtlはYUY2ソースを入出力するとき、色差は0.5ピクセルだけ左にズレているもの
　　として入出力を行います。このため本オプションが有効のとき、入出力においてこの
　　色差のズレを意識した処理を行います。

　　インターレース解除フィルタとして用いる場合は、処理時間がある程度短縮できる以
　　上の恩恵はありませんが、画像拡大フィルタとして用いる場合は、この項目を正しく
　　設定しないと色差がズレる原因となります。

　　なお、本オプションを有効に設定する場合は、以下の点に注意してください。

　　　・事前に(横方向の)リサイズを行ってはならない
　　　・事前にクリッピングを行う場合は、左右の値は偶数にしなければならない

　　よく分からない場合は無効に設定したほうが無難かもしれません。

　○ 拡大フィルタとして使用

　　本フィルタをインターレース解除フィルタとして用いるか、画像拡大フィルタとして
　　用いるかを指定します。

　なお本家にある以下のオプションは削除し、次のように変更しました。

　　・Y, U, V : 全ての輝度・色差で処理を有効にしました。
　　・threads : 処理スレッド数は常に自動的に決定するようにしました。
　　・opt     : SSE2命令を用いたコードのみを残し、Cのコードは廃止しました。
　　・fapprox : 近似などを用いた高速化は全て有効にしました。


【免責とか】

　本プラグイン及びソースコードは、GPL v2 ライセンスの下で公開されています。
　バグ報告・要望などがございましたら、気軽に連絡くださるようお願い致します。


【更新履歴】

ver 0.9.4.1 (11/07/22)	本家のバージョンアップに対応。
	　		　・より高速で積極的な事前選別器を追加。
	　		　・絶対誤差が最小になるよう学習された重みを追加。
	　		　・いくつかのさらなる最適化。
			色変換及びcshift処理をマルチスレッド対応などで高速化。
			msvcr100.dllに依存しないようにした。
			ソースコード及びドキュメントを書き直し。

ver 0.9.2.5 (11/04/05)	明示的に設定値を制限するようにした。

ver 0.9.2.4 (11/02/04)	色変換関数の修正及び高速化。Spline16/36補間の高速化。
			色空間YUV420での処理を廃止。

ver 0.9.2.3 (11/01/23)	画像位置を補正するcshiftを追加。
			色変換式など雑多な項目の修正。

ver 0.9.2.2 (11/01/10)	nnedi3とnnedi3_rpow2を統合。
			エラー処理の際にメモリリークがあったのを修正。

ver 0.9.2.1a(11/01/05)	エラー処理のミスを修正。

ver 0.9.2.1 (11/01/05)	公開。



http://www.geocities.jp/w_bean17/
oinari17@gmail.com
