请教masktool语法理解
dwing吧
全部回复
仅看楼主
level 1
在学习06_taro的masktool入门,对于语法部分理解的很吃力,请高手指点,有高手指点拆成IF看,蒙圈了,不知道咋拆。
后缀表达式"x 128 >= 255 x 16 <= 0 x 16 - 255 * 112 / ? ?"是否理解为:
1.( x >= 128 ) ? 255部分理解为:如果Y>= 128,Y取255,为白色?
2.( x <= 16 ) ? 0理解为:如果Y<=16,Y取0为黑色?
3.( x - 16 ) * 255 / ( 128 - 16)完全蒙圈了,是不是理解为:如果16<=Y<=128部分渐变?
( x - 16 ) * 255是啥意思?
2017年07月30日 03点07分 1
level 9
只会仿着例子写,3应该是渐变(黑-->白)。(x-16)*255/112应该是将16<=x=<128放大至0<=x=<255(黑---白 渐变)
2017年07月30日 05点07分 2
谢谢大佬[茶杯]
2017年07月30日 05点07分
@静松意守 你是小号吗?
2017年07月30日 05点07分
sorry,no
2017年07月30日 06点07分
每天学一点,向大佬们学习,小白一枚。
2017年07月30日 06点07分
level 1
经试验有如下情况:
1. x 128 >= 255 ?
2. x 16 <= 0 ?
3. x 16 - 255 * 112 /
x 128 >= 255 x 16 <= 0 x 16 - 255 * 112 / ? ? 最终表现结果为 3 的图片。请大神指点指点。[茶杯]
2017年07月30日 08点07分 3
疑惑:1和2 Y值为0,未体现出Y超128和Y低于16的情况,3中Y为【0,255】未体现出16《Y《128的情况。[啊]
2017年07月30日 08点07分
level 9
mask中x取值0-255,所以只有x>=128的情况是不行的
x 1 * 表示取x*1=x
1.
src=FFVideoSource("00.mkv")
mask=src.mt_lut("x 128 >= 235 x 1 * ?")
return mask
2.
src=FFVideoSource("00.mkv")
mask=src.mt_lut("x 16 <= 0 x 1 * ?")
return mask
3.
src=FFVideoSource("00.mkv")
mask=src.mt_lut("x 128 >= x x 16 <= x x 16 - 255 * 112 / ? ?")
#x 128 >= x x 16 <= x 表示x>=128取x,x<=16取x
return mask
2017年07月30日 09点07分 4
谢谢,我在试试[茶杯]
2017年07月30日 10点07分
mask表达式为:mt_lut("x 128<= x x 2 / 64 + ?",y=3,u=1,v=1)。意思是:luma<=128的时候不变,>128,将它与128的差距缩小到一半。
2017年07月30日 14点07分
level 1
又试了试,语法如下:
a="E:\a\CCTV3.dgi"
DGSource(a,fieldop=0,deinterlace=2,resize_w=1280,resize_h=720).Trim(0,8168).Fadeout(10)
mask = mt_lut("x 128 >= 255 x 16 <= 0 x 16 - 255 * 112 / ? ?")
tw=Tweak(0,1,1.5,1.02)
mt_merge(tw,mask,luma=true,Y=3,U=1,V=1)
图
将mask改为:mask = mt_lut("x 128 >= 255 x x 16 <= 0 x x 16 - 255 * 112 / ? ?")或mask = mt_lut("x 128 >= 0 x 16 <= 0 x 0 * 255 + ? ?"),结果一样一样滴。看来只能Pr遮罩调节啦。
2017年07月30日 10点07分 6
level 1
谢谢
您的耐心指导,经一位大佬指点,表达式mask表达式为:mt_lut("x 128<= x x 2 / 64 + ?",y=3,u=1,v=1)。,可解决问题,是 简单粗暴的一个分段线性处理。
对y平面执行:
if luma <= 128:
return luma
else:
return 128 + (luma - 128) / 2
2017年07月30日 14点07分 7
1