View Single Post
Old 13th September 2017, 23:34   #1003  |  Link
johnmeyer
Registered User
 
Join Date: Feb 2002
Location: California
Posts: 2,695
I finally got around to adding GamMac to my version of VideoFred's script. I also got around to doing a lot of deferred housecleaning. As one example, I never use any of the manual controls because I do all those corrections in my NLE. So, I took them out.

I started to think about the order of the restoration steps and decided I could get a better result if I did degraining first, and then used the motion-compensated version of RemovedDirt second. This seems to produce a more pleasing result because with RemoveDirt first, I was getting too much correlation in the remaining grain, i.e., the image movement sometimes looked "gooey" as things moved around.

GamMac introduces a lot of flicker and I wasn't able to find any settings that would eliminate that. So, I moved Deflicker to the end of the restoration chain and, fortunately, it removes the flicker that GamMac introduces, as well as most flicker in the film itself. Hopefully I'll be able to get a better handle on GamMac over the coming weeks and perhaps eliminate that problem.

I thought about posting this in the thread that branched out from this one. That is where I posted my previous update. However, that thread has gone dormant, while this one is still active, so I'm posting here.

I am also including the "filldrops()" function. I find this incredibly useful. In my NLE (Vegas) I wrote a script that lets me, with the push of one button, replace any bad frame with a copy of the previous frame. This is useful for burned frames; huge dirt spots; bad registration errors during transfer (e.g., a frame that "jumps"); a photographer's flash; and anything else that is distracting or annoying that only lasts for one single frame. Since each duplicate frame I create in Vegas is a 100% perfect duplicate, it is simple for AVISynth to detect that dup, and it is easy to create a new frame by motion estimating from the surrounding frames. Any frame that is not a duplicate is passed through (which is 99.99% of all frames) so the function has almost no speed penalty because most frames are not altered. Therefore, most of the new interpolated frames are absolutely perfect and cannot be detected. Quite magic, actually.

So, I've put the script into the next two posts. Hopefully people will find it to be a slight improvement over what I've posted in the past.

Last edited by johnmeyer; 13th September 2017 at 23:37. Reason: I hit "save" instead of "preview"
johnmeyer is offline   Reply With Quote