Commit 0429ff4b authored by Paul B Mahol's avatar Paul B Mahol

avfilter: add vaguedenoiser filter

parent 0c7979b4
......@@ -22,6 +22,7 @@ version <next>:
- hysteresis filter
- lut2 filter
- yuvtestsrc filter
- vaguedenoiser filter
version 3.1:
......
......@@ -3075,6 +3075,7 @@ tinterlace_filter_deps="gpl"
tinterlace_merge_test_deps="tinterlace_filter"
tinterlace_pad_test_deps="tinterlace_filter"
uspp_filter_deps="gpl avcodec"
vaguedenoiser_filter_deps="gpl"
vidstabdetect_filter_deps="libvidstab"
vidstabtransform_filter_deps="libvidstab"
zmq_filter_deps="libzmq"
......
......@@ -13379,6 +13379,53 @@ Force a constant quantization parameter. If not set, the filter will use the QP
from the video stream (if available).
@end table
@section vaguedenoiser
Apply a wavelet based denoiser.
It transforms each frame from the video input into the wavelet domain,
using Cohen-Daubechies-Feauveau 9/7. Then it applies some filtering to
the obtained coefficients. It does an inverse wavelet transform after.
Due to wavelet properties, it should give a nice smoothed result, and
reduced noise, without blurring picture features.
This filter accepts the following options:
@table @option
@item threshold
The filtering strength. The higher, the more filtered the video will be.
Hard thresholding can use a higher threshold than soft thresholding
before the video looks overfiltered.
@item method
The filtering method the filter will use.
It accepts the following values:
@table @samp
@item hard
All values under the threshold will be zeroed.
@item soft
All values under the threshold will be zeroed. All values above will be
reduced by the threshold.
@item garrote
Scales or nullifies coefficients - intermediary between (more) soft and
(less) hard thresholding.
@end table
@item nsteps
Number of times, the wavelet will decompose the picture. Picture can't
be decomposed beyond a particular point (typically, 8 for a 640x480
frame - as 2^9 = 512 > 480)
@item percent
Partial of full denoising (limited coefficients shrinking), from 0 to 100.
@item planes
A list of the planes to process. By default all planes are processed.
@end table
@section vectorscope
Display 2 color component values in the two dimensional graph (which is called
......
......@@ -286,6 +286,7 @@ OBJS-$(CONFIG_TRANSPOSE_FILTER) += vf_transpose.o
OBJS-$(CONFIG_TRIM_FILTER) += trim.o
OBJS-$(CONFIG_UNSHARP_FILTER) += vf_unsharp.o
OBJS-$(CONFIG_USPP_FILTER) += vf_uspp.o
OBJS-$(CONFIG_VAGUEDENOISER_FILTER) += vf_vaguedenoiser.o
OBJS-$(CONFIG_VECTORSCOPE_FILTER) += vf_vectorscope.o
OBJS-$(CONFIG_VFLIP_FILTER) += vf_vflip.o
OBJS-$(CONFIG_VIDSTABDETECT_FILTER) += vidstabutils.o vf_vidstabdetect.o
......
......@@ -302,6 +302,7 @@ void avfilter_register_all(void)
REGISTER_FILTER(TRIM, trim, vf);
REGISTER_FILTER(UNSHARP, unsharp, vf);
REGISTER_FILTER(USPP, uspp, vf);
REGISTER_FILTER(VAGUEDENOISER, vaguedenoiser, vf);
REGISTER_FILTER(VECTORSCOPE, vectorscope, vf);
REGISTER_FILTER(VFLIP, vflip, vf);
REGISTER_FILTER(VIDSTABDETECT, vidstabdetect, vf);
......
......@@ -30,7 +30,7 @@
#include "libavutil/version.h"
#define LIBAVFILTER_VERSION_MAJOR 6
#define LIBAVFILTER_VERSION_MINOR 56
#define LIBAVFILTER_VERSION_MINOR 57
#define LIBAVFILTER_VERSION_MICRO 100
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment