|
|
| (One intermediate revision by one other user not shown) |
| Line 1: |
Line 1: |
| <nowiki>
| | [[Category:Talk]] |
| #
| | @Wilbert |
| # AWarpSharpDering by Kurt Bernhard Pruenner
| |
| #
| |
| # Tries to clean up slight ringing around edges by heavily AWarpSharp-ing the
| |
| # image and then applying it only to the areas where the difference is small
| |
| # enough so detail isn't destroyed.
| |
| #
| |
| # Currently only processes the chroma, as that's what sharpeners that cause the
| |
| # ringing in the first place operate on.
| |
| #
| |
| # depth ........ Depth of the AWarpSharpening
| |
| #
| |
| # diffthresh ... differences between the source and the sharpened clip larger
| |
| # than this will not be touched; the smaller the difference the
| |
| # more of the sharpened clip will be used
| |
| #
| |
| # lumathresh ... since the ringing is mostly notable in bright places this
| |
| # threshold will prevent dark areas from being hit too hard, so
| |
| # for instance linework will be preserved
| |
| #
| |
| # debug ........ 0 - normal operation
| |
| # 1 - return sharpened clip
| |
| # 2 - return diffthresh mask
| |
| # 3 - return lumathresh mask
| |
| # 4 - return combined mask
| |
| # 5 - return source (for comparison)
| |
| #
| |
|
| |
|
| function AWarpSharpDering(clip source, float "depth",int "diffthresh",int "lumathresh",int "debug")
| | I uploaded an updated [[aWarpSharpDering]] script. The original script used the ancient MaskTools so it can absolutely be considered deprecated. - [[User:Reel.Deal|Reel.Deal]] 13:58, 15 June 2015 (CEST) |
| {
| |
| depth=Default(depth,32.0)
| |
| diffthresh=Default(diffthresh,8)
| |
| lumathresh=Default(lumathresh,32)
| |
| debug=Default(debug,0)
| |
|
| |
| sharpened=source.AWarpSharp(depth=depth,blurlevel=2,cm=0,bm=0)
| |
| | |
| # absolute differences mask
| |
| diffmask=YV12LUTxy(source,sharpened,yexpr="x y - x y > *",Y=3,U=1,V=1).Levels(0,0.5,diffthresh,255,0,coring=false)
| |
| | |
| # source-luma mask
| |
| lumamask=source.Deflate(Y=3,U=1,V=1).Levels(16,0.5,16+lumathresh,0,255,coring=false)
| |
| | |
| # both masks multiplied
| |
| mask=YV12LUTxy(lumamask,diffmask,yexpr="x y * 255 /",Y=3,U=1,V=1).Deflate()
| |
|
| |
| result=MergeChroma(MaskedMerge(source,sharpened,mask,Y=3,U=1,V=1),source)
| |
|
| |
| result=debug != 1 ? result : sharpened
| |
| result=debug != 2 ? result : diffmask.Levels(0,1.0,255,16,240,coring=false).MergeChroma(source.BlankClip(color_yuv=$808080))
| |
| result=debug != 3 ? result : lumamask.Levels(0,1.0,255,16,240,coring=false).MergeChroma(source.BlankClip(color_yuv=$808080))
| |
| result=debug != 4 ? result : mask.Levels(0,1.0,255,16,240,coring=false).MergeChroma(source.BlankClip(color_yuv=$808080))
| |
| result=debug != 5 ? result : source
| |
|
| |
| return result
| |
| }
| |
| </nowiki>
| |
@Wilbert
I uploaded an updated aWarpSharpDering script. The original script used the ancient MaskTools so it can absolutely be considered deprecated. - Reel.Deal 13:58, 15 June 2015 (CEST)