TotalVariationFilter[data]
iteratively reduces noise while preserving rapid transitions in data.
TotalVariationFilter[data,param]
assumes a regularization parameter value param.
TotalVariationFilter
TotalVariationFilter[data]
iteratively reduces noise while preserving rapid transitions in data.
TotalVariationFilter[data,param]
assumes a regularization parameter value param.
Details and Options
- TotalVariationFilter, also known as total variation regularization, is an iterative filter commonly used to reduce different types of additive or multiplicative noise while preserving sharp transitions.
- In TotalVariationFilter[data,param], the value of regularization parameter param is typically in the range 0 to 1.
- The data can be any of the following:
-
list arbitrary-rank numerical array tseries temporal data such as TimeSeries, TemporalData, … image arbitrary Image or Image3D object audio an Audio object video a Video object - The following options can be specified:
-
MaxIterations 30 maximum number of iterations to be performed Method "Gaussian" type of noise to be removed - Possible Method settings include: »
-
"Gaussian" additive Gaussian, uniform and other types of noise "Laplacian" salt-and-pepper or impulse noise "Poisson" multiplicative noise, as in low-light conditions
Examples
open all close allBasic Examples (3)
TotalVariationFilter[[image]]TotalVariationFilter[[image], 0.3]Total variation filtering on noisy data:
data = Table[Sin[i ^ 2 + i] + RandomReal[{-.2, .3}], {i, 0, Pi, 0.01}];
result = TotalVariationFilter[data];ListLinePlot[#, Axes -> False]& /@ {data, result}Scope (9)
Data (6)
TotalVariationFilter[(| | | | |
| - | - | - | - |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 |
| 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 0 |)]//MatrixFormFilter a TimeSeries:
ts = TemporalData[TimeSeries, {{{0., -0.27267267057145633, -0.6672983789995302, -0.5338541947930846,
-0.6117404489279314, -0.6755527076595494, -0.02125421294486496, -0.10792797291843935,
-0.6138271235477938, -0.3248568606554575, -0.08843449054 ... 2053424, -0.49980440691873723, -0.5388679788215971,
-0.4101602764645551}}, {{0, 1., 0.01}}, 1, {"Continuous", 1}, {"Continuous", 1}, 1,
{ValueDimensions -> 1, ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}}}, False,
10.1];filtered = TotalVariationFilter[ts, 0.5];
ListLinePlot[{ts, filtered}, PlotLegends -> {"original data", "filtered"}]a = \!\(\*AudioBox[""]\);
filtered = TotalVariationFilter[a]//AudioNormalizeAudioPlot[{a, filtered}]TotalVariationFilter[[image]]TotalVariationFilter works with numerical sparse arrays:
TotalVariationFilter[SparseArray[1 -> 3, 3]]TotalVariationFilter[Video["ExampleData/fish.mp4"], .5]Parameters (3)
The default regularization parameter value, assuming additive Gaussian noise, is 0.1:
data = Table[Sin[i ^ 2 + i] + RandomReal[NormalDistribution[0, 0.3]], {i, 0, Pi, 0.01}];
{ListLinePlot[data, Axes -> False],
ListLinePlot[TotalVariationFilter[data], Axes -> False]}Use a custom regularization value:
{ListLinePlot[data, Axes -> False],
ListLinePlot[TotalVariationFilter[data, 0.3], Axes -> False]}The default regularization value for Laplacian noise is 0.8:
TotalVariationFilter[[image], Method -> "Laplacian"]TotalVariationFilter[[image], 2., Method -> "Laplacian"]Use different regularization parameters:
TotalVariationFilter[[image], #]& /@ {.02, .2}Options (4)
Method (2)
MaxIterations (2)
Filtering of a 1D array using different values of MaxIterations:
data = Table[Sin[i ^ 2 + i] + RandomReal[NormalDistribution[0, 0.3]], {i, 0, Pi, 0.01}];
ListLinePlot[TotalVariationFilter[data, 0.3, MaxIterations -> #], Axes -> False]& /@ {1, 10, 30}i = [image];
TotalVariationFilter[i, 0.2, MaxIterations -> 10]Use a larger number of iterations:
TotalVariationFilter[i, 0.2, MaxIterations -> 100]Applications (5)
TotalVariationFilter[[image], 1, Method -> "Laplacian", MaxIterations -> 100]Use the Poisson method to remove noise from an image captured with low light:
TotalVariationFilter[[image], 0.35, Method -> "Poisson"]Remove Gaussian color noise from an image:
i = [image];
TotalVariationFilter[i, .06, MaxIterations -> 100]Use a TotalVariationFilter to remove smaller stars from an astronomical image:
TotalVariationFilter[[image], .1]Unsharp masking using TotalVariationFilter:
i = [image];
2i - TotalVariationFilter[i, 1]History
Introduced in 2010 (8.0) | Updated in 2012 (9.0) ▪ 2014 (10.0) ▪ 2016 (11.0) ▪ 2018 (11.3) ▪ 2025 (14.3)
Text
Wolfram Research (2010), TotalVariationFilter, Wolfram Language function, https://reference.wolfram.com/language/ref/TotalVariationFilter.html (updated 2025).
CMS
Wolfram Language. 2010. "TotalVariationFilter." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/TotalVariationFilter.html.
APA
Wolfram Language. (2010). TotalVariationFilter. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TotalVariationFilter.html
BibTeX
@misc{reference.wolfram_2026_totalvariationfilter, author="Wolfram Research", title="{TotalVariationFilter}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/TotalVariationFilter.html}", note=[Accessed: 13-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_totalvariationfilter, organization={Wolfram Research}, title={TotalVariationFilter}, year={2025}, url={https://reference.wolfram.com/language/ref/TotalVariationFilter.html}, note=[Accessed: 13-June-2026]}