求助avs脚本:用Masktools2实现对Hue(色调)的渐变化处理
dwing吧
全部回复
仅看楼主
level 6
HappyLee_12 楼主
正在处理一视频,需要把蓝色部分色调值降低而其他颜色不动,虽然Tweak滤镜有类似的功能但很明显它不是渐变化处理,想自己写一个根据色调值对颜色渐变化处理的滤镜。
首先想到的应该是用Masktools2了,想做一个Mask,让画面中Hue越接近某值(例如160)的部分越白,与某值(例如160)差值大于某数(例如30)的部分为全黑色,中间是由白到黑的过渡,理论来说应该可以实现。
不过我用Masktools还不是很进阶,也不会Hue的计算公式,希望能请教一下诸位大神,恳求帮助或指点,多谢。
2014年01月26日 09点01分 1
level 12
颜色调整最好还是在非编中完成 mt_lut 8bit输入输出 用于颜色调整rounding error吓死人
dither_lut16也比不上非编里面浮点精度的调整
2014年01月26日 12点01分 4
没事不要求精度太高,只求能做到渐变处理...
2014年01月27日 02点01分
level 6
HappyLee_12 楼主
继续求助,希望高人帮忙...
2014年01月28日 10点01分 5
level 7
source=原视频
masku=source.ConvertToYV24().uToY().ConvertToYV12().mt_lut(u=-128,v=-128,yexpr=mt_polish("(x>=160)?((x>190)?0:((x-130)*5)):((x<130)?0:((x-130)*5))"))#针对Y通道作遮罩方法是 将U通道复制到Y通道,由于YV12U采样率是Y的一半需要做 ConvertToYV24() 处理,否则分辨率减半
source2=调整过的视频
out=mt_merge(source,source2,masku, luma=true)
2014年01月29日 01点01分 6
多谢,很好的思路,不过表达式稍微有误,应该为:ConvertToYV24(matrix="PC.601").uToY().ConvertToYV12(matrix="PC.601").mt_lut(u=-128,v=-128,yexpr=mt_polish("(x>=160)?((x>190)?0:((190-x)*5)):((x<130)?0:((x-130)*5))")
2014年01月29日 16点01分
您的思路是把U通道复制到Y,不过色调Hue似乎不仅受U通道影响,而是U和V混合产物,没能找到Hue计算公式以及套用公式的办法……
2014年01月29日 16点01分
level 7
公式是这样的,这些公式用表达式不太容易实现,MaskHS与mt_lut组合应该可以,由于回家没电脑,只能猜想,抱歉
2014年01月30日 15点01分 9
1