Use FFmpeg owdenoise Filter for Video Denoising

This guide explains how to use FFmpeg's owdenoise (Overcomplete Wavelet Denoiser) filter to remove noise and grain from video files. You will learn the syntax of the filter, understand its core parameters, and see practical command-line examples ranging from basic usage to fine-tuned noise reduction.

Understanding the owdenoise Filter

The owdenoise filter applies a 2D wavelet transform to each video frame to separate fine details from noise. Because it is an overcomplete transform, it reduces visual artifacts (like ringing) better than standard discrete wavelet transforms, though it requires more processing power.

The filter accepts three main parameters:

  • depth: The wavelet decomposition depth. Allowed values range from 8 to 16 (default is 8). Higher values allow the filter to target larger, lower-frequency noise patterns, but significantly increase encoding time.
  • luma_strength (or ls): The denoising strength applied to the brightness (Y) channel. The default is 1.0. Higher values yield stronger smoothing.
  • chroma_strength (or cs): The denoising strength applied to the color (U and V) channels. If omitted, it defaults to the value of luma_strength * 1.0.

Basic Usage

To run the filter with default settings (depth=8, luma_strength=1.0, chroma_strength=1.0), use the -vf flag:

ffmpeg -i input.mp4 -vf "owdenoise" -c:v libx264 -crf 18 -c:a copy output.mp4

Customizing Denoising Strength

If the default setting removes too much detail or leaves too much grain, specify custom values using parameter names or positional arguments:

ffmpeg -i input.mp4 -vf "owdenoise=depth=8:luma_strength=1.5:chroma_strength=1.2" -c:v libx264 -crf 18 -c:a copy output.mp4

You can achieve the same result using positional shorthand (depth:luma_strength:chroma_strength):

ffmpeg -i input.mp4 -vf "owdenoise=8:1.5:1.2" -c:v libx264 -crf 18 -c:a copy output.mp4

Treating Chroma Noise Separately

Sensor noise in low-light digital video often manifests as color blotches while luminance detail remains sharp. To aggressively reduce color noise without blurring edge details, keep luma_strength low and raise chroma_strength:

ffmpeg -i input.mp4 -vf "owdenoise=depth=8:luma_strength=0.5:chroma_strength=2.5" -c:v libx264 -crf 18 -c:a copy output.mp4

Handling Coarse, Low-Frequency Noise

For heavy, blotchy noise, increase the depth parameter up to 10 or 12:

ffmpeg -i input.mp4 -vf "owdenoise=depth=10:luma_strength=2.0:chroma_strength=1.5" -c:v libx264 -crf 18 -c:a copy output.mp4

Testing Settings on Short Clips

Because owdenoise is computationally demanding, preview your adjustments on a short section of the video before processing an entire file:

ffmpeg -ss 00:01:00 -i input.mp4 -t 10 -vf "owdenoise=depth=8:luma_strength=1.2:chroma_strength=1.0" -c:v libx264 -crf 18 -c:a copy preview.mp4

This command skips to the 1-minute mark (-ss 00:01:00) and renders a 10-second sample (-t 10) to let you evaluate the balance between noise removal and sharpness.