freesilent
帖子: 35
注册时间: 2012-02-03 14:01

MaskedMerge的问题

2018-10-05 0:14

在做南极人第8集时,7:50秒处及后面的几处,打算对人物进行AA处理,背景如果AA,后面的金属网会有破坏
图片
蛋疼的imagewrite,然后单帧ps黑白。

然后如下语句处理

代码: 全选

AA = taa.TAAmbk(video, aatype = -2, sharp = 0.7, aarepair = 24) AAimg = core.imwri.Read(r'd:\download\test\new\%05d.png', firstnum = 00000) AAtoy = mvf.ToYUV(AAimg, matrix = mat, css = "22", full = 1) AAmask = core.std.AssumeFPS(clip = AAtoy, src = video) AA5 = core.std.MaskedMerge(clipa = raw, clipb = AA, mask = AAmask, first_plane = 1) . . . . combine_video = ......+ AA5.std.trim(first = 144, last = 263) +......
但是发觉处理出来的图像有点问题,mask中一些白色的区域没有替换成clipb,还是clipa的画面

后来我把语句换成了这样

代码: 全选

AAvideo = video.std.Trim(first = 11312, last = 11623) AAsource = taa.TAAmbk(AAvideo, aatype = -2, sharp = 0.7, aarepair = 24) AAimg = core.imwri.Read(r'd:\download\test\new\%05d.png', firstnum = 00000) AAtoy = mvf.ToYUV(AAimg, matrix = mat, css = "22", full = 1) AAmask = core.std.AssumeFPS(clip = AAtoy, src = video) AA5 = core.std.MaskedMerge(clipa = AAvideo, clipb = AAsource, mask = AAmask, first_plane = 1) . . . . combine_video = ......+ AA5 + ......
这样mask中所有白色的部分就都是clipb的画面
看过AAmask,正常的移动画面。

第一种方式是,整体直接AA,合并的时候trim
第二种方式是,先trim,输入AA进行处理,合并的时候不再使用trim

第一种方式的效果
图片

第二种方式的效果
图片

原始画面
图片

mask画面
图片

以前用avs的时候,听大佬指点过第一种方式更好,所以就一直这样用。如果是单帧loop的mask也不会出现问题,目前只在这种mask会变化的情况里出现问题。
还一个例子在这里
第一种方式
图片

第二种方式
图片

可以看到kimari处AA了,hinata和hirase都没有AA。
也不是只是采用变化mask的第一帧,因为第一例中4个人都处理了,但是一般船员中身体没有与4个人重叠的部分没有处理,所以也不是只处理mask中的一些白色部分,一些不连续的白色没有处理,第一例连续的白色部分(一般船员部分)也是raw画面。
感觉上是MaskedMerge有一个缓冲,一段画面使用本段的第一帧,本段完成后,第二段有采用第二段的第一帧。只是我的认为,没有去比对尝试。
难道是第二种方式更好么?

我把自己做的mask上传了,两个例子也在里面
链接: https://pan.baidu.com/s/14GBiMP7siVqsMfNNt3XHOw 提取码: k8xb

raw是11312~11623帧,南极人第8集。

回到 “VapourSynth”