おまけとして、エッジレベル調整のavisynth版を作ってみよう、と思い立った。
で、思い立っていろいろいじってたら、Aviutl版の方で最適化できるところ思いついた。これを反映したのがv5。といってもほとんど変わらないけど、このほうがいいかなと。
また、v4までは、縁が(2,3,2,2)になってしまっていたので、(2,2,2,2)に変更。
ついでにreadmeの説明を書き加えた。
ここまでAviutl版エッジレベル調整v5の話。次にavisynthのほう。
avisynthのフィルタってのは初めて書いたけど、Aviutlと違って並列化を自分で書かないといけないみたい。SetEventとWaitforMultipleObjectsやってればいいだけなので簡単なのだけど、ちょいと面倒。
動作環境Win XP (x86)
Win Vista/7 (x86/x64)
avisynth 2.5.8 (x86/x64)
対応色空間 YUY2 / YV12
SSE2必須
マルチスレッド対応
avisynth版はSSE2用コードしか積んでないので、SSE2必須です。(Aviutlのほうみたいな切り替えはしてない)
パラメータedgelevel(clip, int strength, int threshold, int bc, int wc, int threads)
strength(特性) (-31 ~ 31, デフォルト 10)
threshold(閾値) (0 ~ 255, デフォルト 16)
bc (黒補正) (0 ~ 31, デフォルト 0)
wc (白補正) (0 ~ 31, デフォルト 0)
threads (スレッド数) (0 ~ 32, デフォルト 0 = Auto)
Aviutl版とだいたい同じ。まったく同じではないけど。
ひとつ違う点はthresholdの奇数に意味が無い点。つまり、内部でthresholdを2で割って使っているので、10だろうと11だろうと同じになる。これはavisynth版は8bitで処理しているためで、Aviutl版と同じ設定値で同じような効果にしようとするとこうなる。(AviutlのほうはYC48の12bit+ 精度)
ダウンロード>>avisynth版は「avisynth」フォルダの中の"edgelevel_avisynth.zip"
問題ありましたらコメント欄にでも。