Skip to content

JuliaSmoothOptimizers/ProxTV.jl

Repository files navigation

ProxTV

Documentation Build Status Test workflow status Lint workflow Status Docs workflow Status

Coverage DOI

All Contributors

ProxTV.jl is a Julia package that provides a collection of exact and inexact proximal operators. This includes the Total Variation (TV) regularization with any p-norm.

This package is a Julia implementation of the ProxTV package for MATLAB and Python which is available here. Behind those implementations, there is a C++ library that provides the core of the proximal operators.

How to Use

The package is designed to be easy to use and to provide a consistent interface for all the implemented proximal operators.

Installation

You can install ProxTV.jl using the Julia package manager. From the Julia REPL, type ] to enter the Pkg REPL mode and run:

pkg> add ProxTV

Example

Here is an example of how to use ProxTV.jl to compute the proximal operator of the Total Variation (TV) regularization with a p-norm on a 1D signal.

using ProxTV

n = 1000
x = range(0, 2π; length=n)
true_signal = sin.(x)
noisy_signal = true_signal + 0.1 * randn(n)
recovered_signal = similar(noisy_signal) # output buffer

h = NormTVp(1.0, 1.0, n)
prox!(recovered_signal, h, noisy_signal, 1.0)

Result

Comprehensive documentation and more examples can be found in the online documentation.

Features

  • Fast computation of Lp-norm and Total Variation proximal operators
  • Support for 1D, 2D, and nD signals
  • Support for any p-norm (L1, L2, and custom p-norms) with p ≥ 1
  • Weighted regularization
  • many variants (see src/libproxtv.jl)
  • Integration with ShiftedProximalOperators.jl for RegularizedOptimization.jl

Tests

ProxTV.jl includes comprehensive tests for:

  • Core Lp-norm and TV functions
  • Integration with ShiftedProximalOperators

Build your prox API

If you want to integrate your proximal operator in RegularizedOptimization.jl, see Build your own prox API.

How to Cite

If you use ProxTV.jl in your work, please cite using the reference given in CITATION.cff.

Contributing

If you want to make contributions of any kind, please first that a look into our contributing guide directly on GitHub.


Contributors

About

This package wraps https://github.com/albarji/proxTV in Julia.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •