How to Use FFmpeg owdenoise for Wavelet Denoising

This article provides a practical guide on how to use the owdenoise (Overcomplete Wavelet Denoiser) filter in FFmpeg to reduce video noise. You will learn the basic syntax, understand the key parameters that control the denoising intensity, and explore real-world command examples to clean up noisy or grainy video footage effectively.

The owdenoise filter applies an overcomplete wavelet-based denoising algorithm to video frames. While it is computationally intensive compared to simpler filters like hqdn3d, it preserves edge details exceptionally well while smoothing out high-frequency noise.

FFmpeg owdenoise Syntax and Parameters

The basic syntax for applying the filter is:

-vf "owdenoise=depth:luma_strength:chroma_strength"

The filter accepts three main parameters, all of which are optional:

Practical Command Examples

1. Denoising with Default Settings

To apply the owdenoise filter with its default parameters (depth of 3, luma strength of 1.0, and chroma strength of 1.0), use the following command:

ffmpeg -i input.mp4 -vf "owdenoise" -c:a copy output.mp4

2. Light Denoising for Fine-Grain Noise

If your video only has a small amount of fine-grain noise and you want to preserve maximum texture and detail, lower the strengths to 0.5:

ffmpeg -i input.mp4 -vf "owdenoise=depth=3:luma_strength=0.5:chroma_strength=0.5" -c:a copy output.mp4

3. Strong Denoising for Low-Light Footage

For heavily distorted or noisy videos, such as those shot in low-light conditions, increase the decomposition depth and the denoising strengths:

ffmpeg -i input.mp4 -vf "owdenoise=depth=4:luma_strength=2.0:chroma_strength=1.5" -c:a copy output.mp4

4. Denoising Only the Luma Channel

Sometimes, you may want to remove brightness grain while keeping the original color channels untouched. To achieve this, set the chroma strength to 0:

ffmpeg -i input.mp4 -vf "owdenoise=depth=3:luma_strength=1.5:chroma_strength=0" -c:a copy output.mp4

Using owdenoise is a trade-off between encoding speed and visual quality. If encoding performance is a priority, keep the depth parameter at 3 or lower, as higher depth values will drastically increase render times.