Personal View site logo
Make sure to join PV on Telegram or Facebook! Perfect to keep up with community on your smartphone.
Motion compensated temporal noise reduction
  • Vimeo's compression can't handle all of that noise, so please download a high bit rate version and 1080p samples at

    split screen original/denoised

    0 s: 720/60p 50 Mbps, ISO 12800, 1/60 s shutter. denoised, decimated

    12 s: 1080/30p 135 Mbps, ISO 12800, 1/60 s shutter. denoised, downscaled

    23 s: 1080/30p 135 Mbps, ISO 6400, 1/30 s shutter. downscaled, denoised

    36 s: 1080/15p 22 Mbps, ISO 3200, 1/15 s shutter. downscaled, denoised, interframe 2x

    43 s: 1080/10p 11 Mbps, ISO 2000, 1/10 s shutter. downscaled, denoised, interframe 3x

    53 s: 1080/10p 15 Mbps, ISO 12800, 1/10 s shutter. downscaled, denoised, interframe 3x

    then repeats, full frame denoised

    Part of these samples is simply a test of the trade-offs of high ISOs and long exposure times, with motion compensated frame rate conversion to boost the frame rate of the slow shutter speed samples.

    For the noise reduction, I took the TemporalDegrain Avisynth script and rewrote portions of it to better deal with GH2 high ISO footage. Much of the effort was in getting the motion search to produce more accurate vectors in the presence of high noise. I was able to improve the motion search a lot, but it's not perfect. It often misses motion in large low-contrast areas of the image. The other work was to limit the differences between the de-noised output and the source, so as to reduce or hide ghosting artifacts from when the motion search was incorrect. This has a side effect of bringing back some of the noise. I was actually quite conservative about this, trying to keep the footage looking natural, and striking a balance that minimizes all of the different kinds of noise and artifacts. The noise reduction is purely temporal - i.e., accomplished by averaging pixel values across frames. Adding some kind of spatial noise reduction would probably help.

    The script is extremely slow on full 1080p frames. To use it on 1080p, you'll need to find some way to divide up the frame and process the pieces in separate instances of Avisynth. 720p processing is not too slow.

    There are lots of options in the script that I'll be happy to explain. There are only three or four options that you might want to change. The defaults (which I used for all of the samples) are optimized for 1080p at ISO 12800.

    I compared my noise reduction output to that of RE:Vision Effects' DE:Noise plugin, and I think the script does a better job, though the plugin is much much faster.

    Please post experiences and usage info for other motion compensated noise reduction software.