MeGUI 인코딩 화질 선명하게

Posted by Programmer™
2017. 4. 13. 21:23 Utility

Lanczos 필터만 쓰면 영상 품질이 또렷하지가 않습니다.

 

같은 영화인데도 본인이 인코딩한것은 화질이 그저그런데, 다른 분들이 인코딩한것은 화질이 또렷한 경우를 경험하셨을겁니다.

 

이런 경우는 Sharpen 필터를 따로 한번 더 적용해줘서 그렇습니다.

 

아래는 많이 쓰이는 LimitedSharpenFaster 필터에 대한 간단한 예제입니다.   

 

# Set DAR in encoder to 8640 : 4739. The following line is for automatic signalling
global MeGUI_darx = 8640
global MeGUI_dary = 4739

 

Import("D:\ZMEGUI\tools\avisynth_plugin\LimitedSharpenFaster.avsi")
Import("D:\ZMEGUI\tools\avisynth_plugin\QTGMC-3.32.avsi")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\masktools2.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\RgTools.dll") 
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\warpsharp.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\mvtools2.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\nnedi3.dll")
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\immaavs.dll") 

LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\ColorMatrix.dll")
ColorMatrix(hints=true, threads=0)

LoadPlugin("D:\ZMEGUI\tools\dgindex\DGDecode.dll")
DGDecode_mpeg2source("G:\VTS_01_1.d2v", cpu=4, info=3)

#deinterlace
QTGMC(Preset="Very Fast")
SelectEven() # 원래 프레임율을 유지하려면 이 문장을 추가합니다. 빼면 2배의 프레임율이 됩니다.
LimitedSharpenfaster( ss_x=1.5, ss_y=1.5, dest_x=last.width, dest_y=last.height,
 \ Smode=3, strength=192, radius=2,
 \ Lmode=1, wide=false, overshoot=1,
 \ soft=0, edgemode=0, special=false,
 \ exborder=0)

#crop
Lanczos4Resize(1280,720)
#denoise
LoadPlugin("D:\ZMEGUI\tools\avisynth_plugin\UnDot.dll")
Undot() # Minimal Noise

 

LimitedSharpenFaster :

limitedsharpenfaster.zip
다운로드

 

Masktools2 : https://github.com/pinterf/masktools/releases/

 

RgTools : http://github.com/pinterf/RgTools/releases

 

WarpSharp :

warpsharp_20080325.zip
다운로드

 

 

 

사용 문법에 관한 자세한 내용은 아래 URL 참고하시기 바랍니다.

 

http://forum.doom9.org/showthread.php?t=156028

http://avisynth.nl/index.php/LimitedSharpen

 

 

LimitedSharpenFaster (clip clp, float "ss_x", float "ss_y", int "dest_x", int "dest_y", int "Smode" , int "strength", int "radius", int "Lmode", bool "wide", int "overshoot", int "undershoot", int "soft", int "edgemode", bool "special", int "exborder" )


clip   =
Input clip.

 

float  ss_x = 1.5
float  ss_y = 1.5
Supersampling when > 1, which reduces aliasing on edges.

 

float  dest_x = width
float  dest_y = height
Resize directly to final size, saves a resize step.

 

int  Smode = 3
Sharpen mode:

Each mode has progressively less haloing in its sharpening.

 

int  strength = 160
Sharpening strength:

  • For Smode=1, it can be 0~127 (simple sharpening), 128~255 (simple overdrive), 255~4096 (big overdrive).
  • For Smode=2, values 0~100 are handled over to Sharpen() as 0.0~1.0. Values >100 are mapped to 100.
  • For Smode=3, 0~100 is common, but 100~inf. can be used if necessary.

Default is strength=160 for Smode=1, and strength=100 otherwise.

 

int  radius = 1
Radius of UnsharpMask, only used in Smode=1. Range: 1 to 10

 

int  Lmode = 1
Lmode:

  • 0 : No effect
  • 1 : Clamp to over/undershoot.
  • 3 : Zero over/undershoot on edges, normal over/undershoot on not-edges.


bool  wide = false
With wide=true, the local [min,max] limits are gathered from the 5x5 neighborhood, instead just 3x3. Enables more gain in detail contrast. Increasingly useful with increasing supersampling factors.

 

int  overshoot = 1
Sharpening limit: a sharpened pixel may not exceed [min,max] of the local neighborhood by more than 'overshoot'. (High values remove the "Limited" of LimitedSharpen, and cause excessive haloing.)

 

int  undershoot = [overshoot]
Separate limit for pixels that get darker during sharpening. Good for cartoons with strong lines. (If not specified, then undershoot==overshoot.)

 

int  soft = 0
Softens the effect of sharpening. -1 will (try to) autocalculate a good value. Range: 0 to 100

 

int  edgemode = 0

  • -1 : shows edges.
  • 0 : does nothing.
  • 1 : restricts sharpening to edges
  • 2 : restricts sharpening to mostly non-edges (I think?)


bool  special = false
special=true tries to raise detail contrast in dark areas of a frame. (Usage not really recommended - the method is simple and might cause artefacts.)

 

int  exborder = 0
Border exclusion; range: 0 to 16