Registered User
Join Date: Feb 2004
Posts: 1,348
|
ungibbs, a gibbs artifact remover
Code:
function blurfunction2(clip c){
c
dctlimit(dct2=1.625, dct3=0, dct4=0, dct5=0, dct6=0, dct7=0, dct8=0, use64dct=false, use32dct=false, use8dct=true, use4dct=false)
}
function ungibbs(clip c){
thresh = 224
c
predict = c.blurfunction2
sharp1 = c.limitedsharpenfaster(smode=4, strength=100, overshoot=0)#Xsharpen(31, 255)
blur1 = c.removegrain(4)
sharp2 = c.limitedsharpenfaster(smode=3, strength=100, overshoot=0)
blur2 = c.quantile(2)
blur3 = c.spline36resize(width*2, height*2).removegrain(4).spline36resize(c.width, c.height)
bp0 = mt_makediff(predict, c)
bp1 = mt_makediff(sharp1.blurfunction2, c)
bp2 = mt_makediff(blur1.blurfunction2, c)
bp3 = mt_makediff(sharp2.blurfunction2, c)
bp4 = mt_makediff(blur2.blurfunction2, c)
bp5 = mt_makediff(blur3.blurfunction2, c)
cp1 = mt_merge(c, sharp1, MT_lutxy(bp0, bp1, "x 128 - abs y 128 - abs - "+string(thresh)+" *", u=1, v=1).frfun7(0.51, 256, 256))
m100 = mt_makediff(c, cp1.blurfunction2, u=1, v=1)
cp2 = mt_merge(cp1, blur1, MT_lutxy(m100, bp2, "x 128 - abs y 128 - abs - "+string(thresh)+" *", u=1, v=1).frfun7(0.51, 256, 256))
m101 = mt_makediff(c, cp2.blurfunction2, u=1, v=1)
cp3 = mt_merge(cp2, sharp2, MT_lutxy(m101, bp3, "x 128 - abs y 128 - abs - "+string(thresh)+" *", u=1, v=1).frfun7(0.51, 256, 256))
m102 = mt_makediff(c, cp3.blurfunction2, u=1, v=1)
cp4 = mt_merge(cp3, blur2, MT_lutxy(m102, bp4, "x 128 - abs y 128 - abs - "+string(thresh)+" *", u=1, v=1).frfun7(0.51, 256, 256))
m103 = mt_makediff(c, cp4.blurfunction2, u=1, v=1)
cp5 = mt_merge(cp4, blur3, MT_lutxy(m103, bp5, "x 128 - abs y 128 - abs - "+string(thresh)+" *", u=1, v=1).frfun7(0.51, 256, 256))
m104 = mt_makediff(c, cp5.blurfunction, u=1, v=1)
#cp6 = mt_merge(cp5, blur3, MT_lutxy(m100, bp2, "x 128 - abs y 128 - abs - "+string(thresh)+" *", u=1, v=1))
#m105 = mt_makediff(c, cp2.blurfunction, u=1, v=1)
cp5}
Requires: limitedsharpenfaster, removegrain, removegrain HD, masktools 2, dctlimit. [edit] forgot to list frfun7.
This is here (development as opposed to usage) because, its slow, it causes artifacts sometimes, and because I am lazy and don't want to spend all of my time explaining how to make it work.
example script:
Code:
#source
ungibbs().ungibbs()
spline36resize(1280, 720)
Note that it will probably produce very ugly results if used on a source that is not, atleast, a little blurry.
example: processed, unprocessed
Last edited by *.mp4 guy; 7th February 2008 at 15:53.
|