Skip to content

Releases: urlicht/TotalVariationImageFiltering.jl

v0.1.0

26 Mar 07:26

Choose a tag to compare

First public release of TotalVariationImageFiltering.jl.

Added

  • Core N-D TV problem API via TVProblem with configurable:
    • lambda and physical spacing
    • L2Fidelity and PoissonFidelity
    • IsotropicTV and AnisotropicTV
    • Neumann boundary handling
    • primal constraints (NoConstraint, NonnegativeConstraint, BoxConstraint)
  • ROF solver (ROFConfig) for L2 + TV denoising using a Chambolle-style dual projected-gradient method.
  • PDHG / Chambolle-Pock solver (PDHGConfig) for:
    • L2 + TV
    • Poisson KL + TV
    • optional primal constraints (non-negative and box-constrained reconstruction)
  • Single-item and in-place solve APIs:
    • solve, solve!
    • reusable solver workspaces via ROFState and PDHGState
  • Batch APIs for arrays shaped (spatial..., batch):
    • solve_batch, solve_batch!
    • summary and optional per-item solver statistics
  • Automatic regularization parameter selection for ROF:
    • discrepancy principle (select_lambda_discrepancy)
    • Monte Carlo SURE (select_lambda_sure)
  • Optional CUDA acceleration via extension (TotalVariationImageFilteringCUDAExt) when CUDA.jl is available.

Documentation

  • Full docs site with guides for:
    • installation and quick start
    • problem/API usage
    • ROF and PDHG solver details
    • lambda selection
    • batch and CUDA usage
    • API reference and benchmarking

Validation

  • Test suite covering:
    • problem/types/operators
    • ROF and PDHG solvers
    • single and batch APIs
    • lambda selection
    • CUDA extension behavior (when CUDA is available)
  • CI configured for Julia 1.11 and 1.12.

Compatibility

  • Julia 1.11+.
  • CUDA support is optional and loaded through package extension when CUDA.jl and a functional CUDA runtime are present.

Notes

  • ROFConfig currently supports L2Fidelity, Neumann boundary, and NoConstraint.
  • PDHGConfig supports L2Fidelity and PoissonFidelity with NoConstraint, NonnegativeConstraint, or BoxConstraint.