OT: Polavision -- Final Chapter

Comments

johnmeyer wrote on 11/6/2009, 7:19 PM
I finished the Polavision project. Thanks to everyone who helped. I created a short tutorial on the subject, which you can view below. The first eight minutes just show how to extract the film from the cassette, and I talk a little about the problems with this film. Most of this has been covered in this thread. However, if you go to the 7:56 mark in the video, you can see both the raw results of my first capture, as well as what the result looked like after I did both the HDR trick I described earlier, as well as some new (for me) methods for removing dust and dirt.

I did a lot of additional reading from people who have transferred this stuff, and they all say that the gunk cannot be removed because it is chemical residue in the emulsion, and not surface dirt. I am quite certain that is the case. So, after I managed to ruin a few inches of film in my attempt to clean it (fortunately, AFTER I had already captured it once, so nothing was lost), I was too afraid to try ANY kind of cleaning solution on this film. I looked at it under a microscope, and the dirt definitely was not on the surface.

So, here's the restoration tutorial:



The actual Polavision footage starts at 7:56.

Thanks to everyone who helped me get through this.
ushere wrote on 11/6/2009, 7:31 PM
well done john!!!!

a great tut and a fantastic final product!
apit34356 wrote on 11/6/2009, 8:06 PM
nice job!
RalphM wrote on 11/6/2009, 8:06 PM
Very good John,

The step that really intrigues me is how you got rid of so much of the chemical "dirt". Could you elaborate on that please?

Ralph
johnmeyer wrote on 11/6/2009, 8:47 PM
The step that really intrigues me is how you got rid of so much of the chemical "dirt". Could you elaborate on that please?Eighteen months ago I posted this film clip:



which was some film from 1928 that was full of dirt that I couldn't remove. At that time, I spent several hours trying to get an AVISynth plugin called "Despot" to work, and finally succeeded in getting the following improvement to the above film:



Despot is what I used in the past. But, I used something different on the clip above.

However, I tried that today, and it didn't do ANYTHING for this film. This shows that there is no single recipe for restoration. Everything is different. In this case the problem was that the chemical mottling was really low contrast compared to the usual hair or dust spot.

So I searched around and found something that is even harder to figure out than Despot (which was amazingly badly documented). This one is called RemoveDirt. As luck would have it, some other person out there somewhere was trying to remove dirt from an old film, and posted his settings for this AVISynth plugin.

Well, starting from that, and after over three hours of fiddling, magic suddenly happened. FWIW, my full AVISynth script is shown below. It will only work on progressive film that has not been telecined. Each frame of video must correspond to one frame of film.

# Script to remove dirt from film using RemoveDirt


loadplugin("C:\Program Files\AviSynth 2.5\plugins\MVTools\mvtools2.dll")
loadplugin("C:\Program Files\AviSynth 2.5\plugins\RemoveDirtSSE2.dll")

source=Avisource("e:\frameserver.avi").ConvertToYV12(interlaced=false).killaudio()
fixed=RemoveDirtMC(source,33,false)
#stackhorizontal(source,fixed)
return fixed

function RemoveDirt(clip input, int limit, bool _grey)
{
clensed=input.Clense(grey=_grey, cache=4)
alt=input.RemoveGrain(2)
# return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=4,cthreshold=6, gmthreshold=40,dist=1,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=true)
return RestoreMotionBlocks(clensed,input,alternative=alt,pthreshold=6,cthreshold=8, gmthreshold=40,dist=3,dmode=2,debug=false,noise=limit,noisy=12,grey=_grey,show=false)
}

function RemoveDirtMC(clip,int limit, bool "_grey")
{
_grey=default(_grey, false)
limit = default(limit,6)
i=MSuper(clip,pel=2)
bvec = MAnalyse(i,isb=false, blksize=8, delta=1, truemotion=true)
fvec = MAnalyse(i,isb=true, blksize=8, delta=1, truemotion=true)
backw = MFlow(clip,i,bvec)
forw = MFlow(clip,i,fvec)
clp=interleave(backw,clip,forw)
clp=clp.RemoveDirt(limit,_grey)
clp=clp.SelectEvery(3,1)
return clp
}


RalphM wrote on 11/7/2009, 6:17 AM
That was a real pack of dirt in the beginning of the film clip. The clean-up is very impressive. Thanks for the full description of this effort.

Ralph
JackW wrote on 11/7/2009, 12:14 PM
Many thanks, John. The tutorial is great and will be very useful next time (if?) we have a customer come in with Polavision.

Jack
Coursedesign wrote on 11/7/2009, 2:06 PM
John, that is quite impressive!

I doubt that DirtRemoval in The Foundry's FurnaceCore plug-in could have done a better job, but it is a bit easier to use than these scripts for the inexperienced.

RE:Vision RE:Fill is also capable for those overwhelmed by technology.