Log in

View Full Version : Smooth Jagged Black Lines on Cartoon


DoC hEx
5th November 2004, 08:29
I have some old cartoons on DVD (Transformers box set) that has a serious problem with very jagged black outlines of the characters. I'm looking for some way to just smoothen out this outline, kind of like an antialise function that’s now commonly used on GFX cards to improve the overall look of the rendered image.

Does anyone know how I could achieve this? I had a search around here and couldn’t find any filters that would just do the outlines. I’ve tried blur and smoothen filters on the image but that just made the image look unfocused as it removed other details I need to keep, as I’m trying to just concentrate on the jagged black lines.

Any help would be great!

Soulhunter
5th November 2004, 09:04
Read this (http://forum.doom9.org/showthread.php?s=&threadid=83396&perpage=20&pagenumber=1) thread... ;)


Bye

DoC hEx
5th November 2004, 11:59
Thanks I missed that one.

Mug Funky
5th November 2004, 14:07
what region is this transformers boxset? the R4 PAL one AFAIK is converted from the NTSC source.

to be honest, i wouldn't worry about blurring Transformers. there's not much detail there except grain (that's been hit hard with a temporal smoother). i have the series 1 box because i won it :) good for nostalgic value, but i don't think you'll be pulling much detail out of it for backups.

[edit]

if possible, a VOB sample would come in handy (you can cut them out with chopperXP).

DoC hEx
6th November 2004, 06:48
okay, there are two files the first is the VOB (20 Second clip) and the second is the encoded version which is an attempt to clean up the source. Note: the download will be slow as it's on a slow connection.

Test.VOB (http://62.231.45.31:8180/files/test1.vob) (11MB)
Test3.mkv (http://62.231.45.31:8180/files/test3_xvid.mkv) (4MB)

Here's the script I've used to try and clean up the source:
# Created with Gordian Knot
#
# http://gknot.doom9.org

# PLUGINS
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\dgdecode.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\decomb.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\KernelDeInt.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\UnDot.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\dgbob.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\Convolution3d.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\FluxSmooth.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\TomsMoComp.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\VSFilter.dll")
LoadPlugin("C:\PROGRA~1\GORDIA~1\AviSynthPlugins\SimpleResize.dll")


LoadPlugin("C:\Temp\avs\Msmooth.dll")
LoadPlugin("C:\Temp\avs\Dup.dll")
LoadPlugin("C:\Temp\avs\Cnr2.dll")
LoadPlugin("C:\Temp\avs\atc.dll")
LoadPlugin("C:\Temp\avs\Convolution3DYV12.dll")
LoadPlugin("C:\Temp\avs\RemoveDirtS.dll")
LoadPlugin("C:\Temp\avs\SangNom.dll")
LoadPlugin("C:\Temp\avs\MaskTools.dll")
LoadPlugin("C:\Temp\avs\UnFilter.dll")



function AAA(clip clp, int "Xres", int "Yres", int "Xshrp", int "Yshrp",
\ int "US", int "DS", bool "chroma")
{
clp = clp.isYV12() ? clp : clp.ConvertToYV12()
ox = clp.width
oy = clp.height
Xres = default(Xres, ox)
Yres = default(Yres, oy)
us = default(us, 1)
ds = default(ds, 2)
Xshrp = default(Xshrp, 15)
Yshrp = default(Yshrp, 15)
chroma = default(chroma, false)

us==0 ? clp.PointResize(ox*2,oy*2) : clp.LanczosResize(ox*2,oy*2)

MSmooth(strength=4) # default to use on TF = 5

TurnLeft()
SangNom()

TurnRight()
SangNom()

ds==0 ? BilinearResize(Xres,Yres) :
\ ds==1 ? BicubicResize(Xres,Yres) :
\ LanczosResize(Xres,Yres)

Unfilter(Xshrp,Yshrp)

chroma ? MergeChroma(clp.Lanczosresize(Xres,Yres)) : last

}

function TestJW(clip clp, int "Xres", int "Yres", int "Xshrp", int "Yshrp",
\ int "US", int "DS", bool "chroma")
{
clp = clp.isYV12() ? clp : clp.ConvertToYV12()
ox = clp.width
oy = clp.height
Xres = default(Xres, ox)
Yres = default(Yres, oy)
us = default(us, 1)
ds = default(ds, 2)
Xshrp = default(Xshrp, 15)
Yshrp = default(Yshrp, 15)
chroma = default(chroma, false)

us==0 ? clp.PointResize(ox*2,oy*2) : clp.LanczosResize(ox*2,oy*2)

MSmooth(strength=4) # default to use on TF = 5

ds==0 ? BilinearResize(Xres,Yres) :
\ ds==1 ? BicubicResize(Xres,Yres) :
\ LanczosResize(Xres,Yres)

}


# SOURCE
mpeg2source("C:\TRANSFORMERS_SEASON_2_DISC_1\VIDEO_TS\Tran1\Test1.d2v")


# CROPPING
#crop(4,4,712,474)
crop(4,4,712,464)

# Deinterlace
#KernelDeInt(order=1,sharp=true)
#FieldDeinterlace(blend=false)
Telecide(order=1,guide=1).Decimate()


# DENOISING: choose one combination (or none)
#Undot()


AAA(720,576,20,20,1,2,chroma=false)
RemoveDirt()

#TestJW(720,576,20,20,1,2,chroma=false)
#FluxSmooth(10,15)
Convolution3d(preset="animeLQ")
#Convolution3d (preset="animeHQ")
#MSmooth(strength=4) # default to use on TF = 5
Cnr2()
atc(3,6,9,0.5,false)
#Blur(1.0)
#Dup(threshold=2)
#FluxSmooth(10,15)

# RESIZING
#BicubicResize(512,384,0,.75)
BicubicResize(720,528,0,.75)
Also I've updated the D2V
Luminance_Filter=18,10 (Gamma, Offset)