Reduce Noise: Wavelet Video Filter

This filter is available since version 20.06.

About wavelet denoising

Wavelet denoisers are excellent when decent-bitrate footage comes from a decent-quality camera, and the only real problem with the footage is high ISO noise or high thermal noise or photon shot noise. Wavelets are great at targeting inconsistency at the pixel level, as opposed to algorithms that average patches or regions, and end up smearing pixels in the process. A nice side effect of this precision is that gradients (especially skin tones and out-of-focus areas) are rendered extremely smoothly, which is a benefit that cannot be overstated. My primary use for this filter is to clean up low-light video. It usually increases the level of realism in the process.

That said, wavelets are not the best tool for making VHS tapes or 19th-generation MPEG-2 videos look great. Wavelets will usually perceive blocky borders as intentional detail and preserve them rather than eliminate them, hence the need for a decent-quality start point. Use NLMeans or HQDN3D for restoration purposes.

Demonstration using the attached images

Below are attached two high-ISO images to give everyone a common reference point. Film.jpg was shot at ISO 8000, and Dashboard.jpg is a frame grab from an ISO 6400 video, both from Micro Four Thirds cameras.

Using a 2160p UHD video mode, add the following filters to Film.jpg and compare them one at a time to the original:

  • “Reduce Noise: Wavelet” at Heavy preset
  • “Reduce Noise: HQDN3D” at 70% spatial
  • “Reduce Noise: Smart Blur” … any

Then using the same UHD video mode, compare Dashboard.jpg with these filters:

  • “Reduce Noise: Wavelet” at Medium preset
  • “Reduce Noise: HQDN3D” at 25% spatial
  • “Reduce Noise: Smart Blur” … any

Naturally, this is best observed with a full-screen external monitor.

Observations to help choose between HQDN3D and Wavelet

  • On the Film image, Wavelet converted the noisy background into liquid gold. Very smooth gradients at the left and right edges. When HQDN3D tried the same thing at 70% strength, it got very close, but there were still some banding and macroblocking artefacts inside the gradients. This becomes more evident during video playback when the bands wiggle like worms.

  • On the Dashboard image, HQDN3D had to be dialed back to 25% because more strength would cause the skin tones to look like a plastic doll. Being scaled back this far (compared to 70% in the Film image) left many more bands, macroblocks, and color patches on the dashboard compared to Wavelet. Skin tones frequently prevent HQDN3D from being used at a higher strength.

  • On both images, HQDN3D shifts the image down and right by a noticeable amount (several pixels) compared to the original, which makes me very uneasy. When applied to video, the shift is not constant either, so the video shakes. I don’t know if this is the usual temporal ghosting issue or if this is an implementation issue. Maybe @Paul_B_Mahol has some ideas. It also happens with command-line FFmpeg. Meanwhile, Wavelet “just works” every single time.

  • The main downside of Wavelet is that it takes 2.75 times longer to process than HQDN3D (on my hardware at least). For longer clips, I sometimes process them separately, then bring them back into the main Shotcut project as DNxHR intermediates.

  • I could not find any combination of settings that made Smart Blur even remotely match the quality of HQDN3D and Wavelet. Smart Blur produced blocky gradients and blurry edges by comparison. As for export speed, it was only 30% faster than HQDN3D on a 16-core server, and identical in speed on a 4-core laptop. I struggle to find a use case for Smart Blur when much higher-quality options are available.

Why bother with another denoiser filter when Shotcut already has two:

HQDN3D and Wavelet use different techniques to serve different needs for different audiences. For video with significant motion, I’ve found that HQDN3D and Wavelet produce results that are visually similar. My eye can’t track the finer details during motion, so I’ll sometimes take the speed benefits of HQDN3D. But for a slow dramatic shot of a fancy restaurant interior in low light where the audience wants to see every detail of fine gold without artefacts… Wavelet scores a clear win. So this duo of filters satisfies the “Fast” crowd (HQDN3D) and the “Quality” crowd (Wavelet). Since my audience wants “Quality” 95% of the time, I made this interface to get it. Whether it’s the right choice for you depends on your use case.

Happy low-light filming!

4 Likes

…because I needed it! :smiley: :grin: :laughing:

This filter (which I only discovered this week) is a lifesaver for me.

Even with the curtains pulled back to let in daylight, three desklamps, one floorlamp and improvised aluminum-foil reflectors, my limited-budget home studio has barely adequate light for my Panasonic 3-CCD videocams. (Manual Iris: Open +12dB)

…and clean it up, this filter does.

I tried the filter in an attempt to get rid of jittering pixels on the wall behind me in talking-head videos, where the cameras cannot decide quite what color it is; it does that very well.

The unexpected bonus is what it does for skin tones. Where previously I would struggle for hours to get skin tones that both matched from all three cameras (different angles, different zoom, meant different light hence different tones.) and were healthy lifelike tones, with the wavelet filter first, adjusting White Balance, Brightness and Contrast is a breeze, and the resulting skin tone exceeds anything I have previously achieved. Golden and awesome.

2 Likes

Thanks for a really useful explanation. Without really understanding it, I’d been using wavelet NR since it became available. Most of my underwater videos are low light, high ISO. I get some nice even results with wavelet NR - for me it’s been invaluable!

2 Likes

Another bonus is what it does for file size.

Even as important detail becomes clearer, the filter is discarding bogus “detail” and false “motion” in poorly illuminated flat surfaces. Thus, I get file size reductions that are dramatic; consistently nearly four-to-one, sometimes as great as seven-to-one.

1 Like

I would love to try wavelet denoising on my current project, but am wondering how to proceed. My project has close to 100 clips in it, and I’m working in proxy mode while editing, so applying the filter to each shot would be difficult and time-consuming. Is it possible to export the whole film and then apply the filter to the whole resulting video? Or perhaps split the film into shot sequences with similar lighting, and then customize the filter for each sequence?
The project is a puppet film, shot on a miniature cardboard set with cardboard puppets (so no skin tones) and multiple LED lights. My camera does a fairly good job shooting low light but I had to adjust ISO constantly while shooting and sometimes crank it up to a high setting. I’d like to show the film at festivals, and am worried that the high ISO noise would become very obvious on a big screen. Any advice?