Log in

View Full Version : Basic film restoration-ish GUI - does this exist?


Lyris
5th June 2017, 01:49
Hey forumers. Say I have these image sources - a not uncommon scenario when dealing with film content, I imagine:

file 1: unprocessed
file 2: processed with mild dirt filtering
file 3: processed with heavy dirt filtering

And I want to chop and change between them - for example, reverting to 1 unprocessed in cases where the dirt filtering creates artefacts, or going to file 3 near reel changes. And also, mixing and matching wihtin a frame, for example using file 2 mostly, but reverting back to file 1 (unprocessed) in certain regions where the automatic filtering has erased genuine details.

Does such a tool exist? I seem to remember there being a free thing that resembled VirtualDub that would allow something like this, but my memory might just be playing tricks on me. I ask because I've trialed a bunch of film restoration tools, and frankly there's not been one that checks all boxes so far.

StainlessS
5th June 2017, 04:04
See SawBones/FrameSurgeon:- https://forum.doom9.org/showthread.php?t=173158&highlight=sawbones

Script to Feed into Sawbones

Function Sub(clip c,string tit){
SSS="Subtitle(String(current_frame,"+Chr(34)+"%.f] "+tit+Chr(34)+"))"StackVertical(c.BlankClip(height=20).ScriptClip(SSS),c)
}

Src=AviSource("test.avi")
LoDn = Src.LoDN() # file 2(FX0): processed with mild dirt filtering (DEFAULT)
UnProc = Src # file 1(FX1): unprocessed
HiDn = Src.HiDN() # file 3(FX2): processed with heavy dirt filtering
VHiDn = Src.VeryHiDN() # file 4(FX3): processed with supa dupa heavy dirt filtering

TOP=StackHorizontal(Sub(LoDn,"FX0 Default LoDn"),Sub(UnProc,"FX1 UnProc (Src)"))
BOT=StackHorizontal(Sub(HiDn,"FX2 HiDn"),Sub(VHiDn,"FX3 VHiDn"))
StackVertical(TOP,BOT)
Return Last


Script calling FrameSurgeon

Import("FrameSurgeon.avs")

Src=AviSource("test.avi")

SHOW = True # True show Info
SHOWMODE = 0 # 0 = Show ClipClop(post Replace) info, 1=Show Prune(Post Delete info)
DV = 0 # 0 - 4, 0 OFF, 4 FULL DEBUG (Send debug info to DebugView, google)

COMMAND = "Command.TXT" # Created via SawBones

LoDn = Src.LoDN() # file 2(FX0): processed with mild dirt filtering (DEFAULT)
UnProc = Src # file 1(FX1): unprocessed
HiDn = Src.HiDN() # file 3(FX2): processed with heavy dirt filtering
VHiDn = Src.VeryHiDN() # file 4(FX3): processed with supa dupa heavy dirt filtering

LoDn.FrameSurgeon(Cmd=COMMAND,Show=SHOW,ShowMode=SHOWMODE,dv=DV,FX1=UnProc,FX2=HiDn,FX3=VHiDn)
Return Last


Not tested at all [You have to supply eg VeryHiDN() functions].

EDIT: Oops, squashed bug