更新实验版:v0.6.0
github
出于为稳定版预留版本号的原因我跳过了v0.5.0
这是一次对TAAmbk的重写,借用了一些OOP的思路
比如把AA共通的方法和属性抽出来封装成一个类
各aatype则作为子类继承并按需重写方法并初始化自己的参数
这样可以把某些aatype的麻烦事(诸如eedi3的sclip之类的)局限在它内部
Change
1、去除了p1~p6参数
由于各个aatype所需参数用途极大不同,若不提前了解p1~p6指代的参数及用途的话
很难发挥它们的真正作用。因此我把传入函数的多余参数收集进了一个字典,各个aatype
在实例化时会先去字典里寻找有无对应参数,若无则初始化为预设默认值
也就是说,若要设置原p1~p6参数,直接在参数末尾传入p1~p6指代的参数即可
例:原:TAAmbk(src, aatype=3, mtype=0, p1=2)
新:TAAmbk(src, aatype=3, mtype=0, nns=2)
2、修改aatype
同上,若不提前了解各aatype数值代表具体methods,很难直接理解其aa方式
因此我将其改为易读的string形式
为了照顾旧使用习惯,原有的9种aatype仍可以用int访问,但以后若添加新的aatype则只用string访问
例:
TAAmbk(src, aatype=-3) 等价于 TAAmbk(src, aatype='Nnedi3SangNom')
出于某些考虑,暂时未添加eedi3sclip的功能
3、修改mask部分
(1) 恢复参数mclip
一旦设置mclip,其余mask相关参数均无效
注意脚本并不会帮你检查mclip,若有错误只会捕获后告诉你你的mclip有问题
(2) 增加参数mlthresh、mthr2,mthr允许传入列表
mlthresh用于传入一个列表对luma分段建立mask
根据mtype不同mthr和mthr2也有不同的含义
目前只实现了两个mtype:Canny(mtype=1) 和 CannySobel(mtype=2)
在Canny模式下,mthr代表sigma,mthr2代表t_h;
在CannySobel模式下,mthr代表二值化阈值,mthr2代表GBlur的sigma值
注意:一旦指定了mlthresh,mthr、mthr2要求传入列表
例:我要使用mtype=1,luma<20时sigma为0.6,20<luma<70为0.9,luma>70为1.2
TAAmbk(src, aatype=1, mtype=1, mthr=[0.6 ,0.9, 1.2], mthr2=[8.0, 8.0, 8.0], mlthresh=[20, 70])
(3) 增加参数mpand
设定对mask进行expand和inpand次数以消除空心现象
列表,第一个数字代表expand次数,第二个数字代表inpand次数
(4) 增加参数txtprt
int,在输入不是GRAY的情况下结合UV对白底文字进行保护
数值大小为luma阈值
(5) 去除参数mtype2、auxmthr
理由见上文
mask部分未来还要添加很多内容(这些内容大多是一些未经测试的想法,见avs版TAAmbk 0.8.0 beta)
4、增加参数down8
现在TAAmbk输入是什么位深输出就是什么位深
16bit输入若指定down8=True,则aa部分(仅aa部分)在8bit下完成,并在最后用LimitFilter限制精度损失
mask永远在8bit下生成(因为AAmask基本都是二值mask,不会有什么影响
5、改进showmask
showmask=-1,输出txtmask
showmask=2,同屏对比clip和mask
showmask=3,Interleave对比clip和mask
6、增加参数strength,去除参数predown
strength用于控制downscale力度,范围0~0.5
--------------------------------------------------------------------
由于改动巨大,加之未经详细测试,肯定存在一定的bugs,也不清楚速度相对旧版变化
甚至不清楚这种做法本身有没问题
在跟pov讨论过以后
我决定暂时把新TAAmbk函数名改为TAAmbkX,X是experimental的意思,同时保留旧有TAAmbk
等到稳定后再替换掉旧有TAAmbk
► 显示剧情透露 用法
import vsTAAmbk as taa
taa.TAAmbkX(src, ...) #新
taa.TAAmbk(src, ...) #旧
--------------------------------------------------------------------
目前这版TAAmbk还有很多可以改进的地方
比如mask部分设计还过于繁琐、很多异常捕获还没完成、部分默认参数不合理、部分Expr还可以继续优化等等
我甚至还想把除clip的参数都收集进字典里(卒
比如还有基于xml的外部preset系统(卒 x2
以及一大堆代码规范问题(代码丑的不敢见人了,原谅我把太多avs的坏习惯带了过来