分页: 4 / 6

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-24 20:11
yabbay
{:cat_4} 偶错了 承认看完一遍后自己看的有点混淆
顺便问一下有没有利用mask来很好地选光选出halo区域对其进行dehalo的依据
一直用dehalo_alpha感觉有点地图炮

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-24 20:27
06_taro
mt_lutxy( mt_expand, mt_inpand, "x y - 1.4 ^" ) 之類的,方法很多…

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-24 22:51
zhongpang
想用diff做一个mask

diff = mt_makediff(b_to_16bit_lsb, d_to_16bit_lsb,u=0,v=0)
diff_mask = diff.mt_lut("x 128 - abs").mt_binarize(64,upper=true)

请问有没有办法让这个diff_mask里的(0,0,0)的点以一定范围扩散?
也就是让(0,0,0)的点周围一定范围的区域都变成(0,0,0)?

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 0:23
mawen1250
zhongpang 写了:想用diff做一个mask

diff = mt_makediff(b_to_16bit_lsb, d_to_16bit_lsb,u=0,v=0)
diff_mask = diff.mt_lut("x 128 - abs").mt_binarize(64,upper=true)

请问有没有办法让这个diff_mask里的(0,0,0)的点以一定范围扩散?
也就是让(0,0,0)的点周围一定范围的区域都变成(0,0,0)?
mt_inpand

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 1:19
zhongpang
mawen1250 写了:
zhongpang 写了:想用diff做一个mask

diff = mt_makediff(b_to_16bit_lsb, d_to_16bit_lsb,u=0,v=0)
diff_mask = diff.mt_lut("x 128 - abs").mt_binarize(64,upper=true)

请问有没有办法让这个diff_mask里的(0,0,0)的点以一定范围扩散?
也就是让(0,0,0)的点周围一定范围的区域都变成(0,0,0)?
mt_inpand
感谢指点,请问有什么方法能设置范围吗?
扩大范围只有多次使用mt_inpand?

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 8:13
mawen1250
上面的教程里不是都说到了?
mt_inpand(mode=mt_square(radius))

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 9:43
06_taro
mawen1250 写了:上面的教程里不是都说到了?
mt_inpand(mode=mt_square(radius))
也可以是mt_circle之類的…
根據“一定範圍”的定義使用
12. 輔助函數——鄰域字符串生成工具這章

補充一下,inpand之後mask裡所有暗部都是擴張的,如果您只需要值為0的點擴張,而其他情況不擴張,且使用的鄰域像素字符串為s_neighbourhood的話:
[syntax lang="avisynth"]mt_lutsx(diff_mask, diff_mask, diff_mask, mode="min", pixels=s_neighbourhood, expr="y 0 == 0 x ?")
# min(neighbourhood) == 0 ? 0 : x[/syntax]

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 11:22
Holy
碼字+貼圖辛苦了 m(_ _)m

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 12:49
zhongpang
06_taro 写了:
mawen1250 写了:上面的教程里不是都说到了?
mt_inpand(mode=mt_square(radius))
也可以是mt_circle之類的…
根據“一定範圍”的定義使用
12. 輔助函數——鄰域字符串生成工具這章

補充一下,inpand之後mask裡所有暗部都是擴張的,如果您只需要值為0的點擴張,而其他情況不擴張,且使用的鄰域像素字符串為s_neighbourhood的話:
[syntax lang="avisynth"]mt_lutsx(diff_mask, diff_mask, diff_mask, mode="min", pixels=s_neighbourhood, expr="y 0 == 0 x ?")
# min(neighbourhood) == 0 ? 0 : x[/syntax]
感谢指点,请问有没有在16bit下做差的工具呢?
目前只有对msb和lsb分别做差再相加

代码: 全选

diff_lsb          = mt_lutxy(dither_src_AA_16_lsb, banding_src_AA_16_lsb,u=0,v=0,"x y - abs").mt_binarize(threshold=range1,upper=false)
diff_msb        = mt_lutxy(dither_src_AA_16_msb, banding_src_AA_16_msb,u=0,v=0,"x y - abs").mt_binarize(threshold=range2,upper=false)
diff_mask      = mt_lutxy(diff_lsb, diff_msb,u=0,v=0,"x y +").mt_binarize(threshold=0,upper=true)
diff_mask16  = StackVertical(diff_mask, diff_mask)
但是这样差值的范围好像不容易控制的样子

Re: 【教程】 MaskTools入門教程

发表于 : 2012-06-25 12:53
yabbay
刚开始读第二遍 又有一个小白问题
当原文中
mt_merge(dfttest,g_mask,luma=true)
这样调用merge的时候貌似只写了2个clip,
函数怎么自动判断哪个是clip a 哪个是clip b 哪个是clip mask? {:cat_13}