TotalVariationImageFiltering.jl is a Julia package for total-variation (TV) denoising and
reconstruction on N-dimensional arrays.
Original implementation: GPUFilter.jl
Full manual: https://urlicht.github.io/TotalVariationImageFiltering.jl/
Recommended entry points:
- ROF denoising (
L2 + TV) with a Chambolle-style dual projected-gradient method - PDHG / Chambolle-Pock for
L2 + TVand PoissonKL + TV - PDHG primal constraints: non-negativity and box constraints
- Isotropic and anisotropic TV
- Single-image and batched solves
- Automatic lambda selection for ROF (discrepancy principle and MC-SURE)
- Optional CUDA acceleration via package extension
From the registry:
] add TotalVariationImageFilteringFrom this repository:
julia --project=.From another Julia environment (local path):
import Pkg
Pkg.develop(path="/absolute/path/to/TotalVariationImageFiltering.jl")From a hosted repository:
import Pkg
Pkg.add(url="https://github.com/urlicht/TotalVariationImageFiltering.jl")using TotalVariationImageFiltering
f = rand(Float32, 128, 128)
problem = TotalVariationImageFiltering.TVProblem(
f;
lambda = 0.1f0,
data_fidelity = TotalVariationImageFiltering.L2Fidelity(),
tv_mode = TotalVariationImageFiltering.IsotropicTV(),
)
u, stats = TotalVariationImageFiltering.solve(problem, TotalVariationImageFiltering.ROFConfig())Benchmark instructions and scripts are documented in benchmark/README.md.
import Pkg
Pkg.test()CUDA tests run only when CUDA is installed and functional.
MIT. See LICENSE.

