André,
Não quero te deixar triste mas vai ser dificil melhorar muito isso aí. O que vc pode fazer mais é remover o ruido aleatorio q se mantido com certeza irá gerar uma imagem comprimida ainda pior que o original. Tente o script abaixo (para avisynth 2.0 com os plugins grapesmoother, cnr2 e dust). É o que eu uso com capturas muito ruins como esta. Melhora bastante mas suaviza demais tb (não tem como evitar). É muito lento tb, mas como vc disse que o material é importante acho q isso não é o principal. Lembre-se que para KVCD vc precisa desentrelaçar com o plugin de sua preferencia.
AVISource("capture.avi")
#Filtering (heavy ) #
#####################
cnr2()
GrapeSmoother(80)
#Dust#
######
SeparateFields()
Weave()
Setparity(false)
UnFoldFieldsVertical(true)
Golddust()
FoldFieldsVertical(true)
unfilter(25,0)
#Functions #
############
# SetParity
#
# Sets the parity of a clip.
#
# PARAMETERS:
# parity - true for TFF;
# false for BFF
#
function SetParity(clip c, bool parity)
{
return parity ? c.AssumeTFF() : c.AssumeBFF()
}
# UnfoldFieldsVertical
#
# Separates the fields in a clip and stacks them vertically.
# Regardless of field order, even fields are on top.
#
# PARAMETERS:
# flip - pass true to flip the bottom field vertically;
# useful when dealing with spatial filters
# (default: false)
#
function UnfoldFieldsVertical(clip c, bool "flip")
{
flip = default(flip, false)
oldParity = c.GetParity()
c = c.AssumeTFF().SeparateFields().AssumeFrameBased()
top = c.SelectEven()
bottom = c.SelectOdd()
c = StackVertical(top, flip ? bottom.FlipVertical()
\ : bottom)
return c.SetParity(oldParity)
}
# FoldFieldsVertical
#
# Folds fields from a clip that resulted from calling
# UnfoldFieldsVertical.
#
# PARAMETERS:
# flip - pass true if the bottom field was flipped vertically with
# UnfoldFieldsVertical
# (default: false)
#
function FoldFieldsVertical(clip c, bool "flip")
{
assert(c.Height() % 2 == 0, "FoldFieldsVertical: unexpected frame height")
flip = default(flip, false)
oldParity = c.GetParity()
originalHeight = c.Height() / 2
evens = c.Crop(0, 0, c.Width(), originalHeight)
odds = c.Crop(0, originalHeight, c.Width(), originalHeight)
odds = flip ? odds.FlipVertical() : odds
c = Interleave(evens, odds).AssumeFieldBased().AssumeTFF().Weave()
return c.SetParity(oldParity)
}
|