Skip to content

Latest commit

 

History

History
executable file
·
306 lines (280 loc) · 11 KB

CHANGELOG.md

File metadata and controls

executable file
·
306 lines (280 loc) · 11 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

1.0.0rc2 - 2024-11-13

Added

  • Cleanup progress support in solvers
  • Cleanup of legacy API
  • Modern multi-threading code

Fixed

  • Building documentation

1.0.0rc1 - 2024-10-03

Added

  • Moved to a src/ directory structure
  • Moved to pyproject.toml instead of setup.cfg

Fixed

  • NumPy 2.0 compatibility

0.9.1 - 2024-03-20

Added

  • Overall improvements to ProjectionGeometry in the module models:
    • Initial support for cone-beam geometry, including Parker weights for FDK
    • Support for detector tilts
    • Better support for detector VU shifts (respecting axes orientation)
  • Function to fit scale and bias of an image against data (possibly in a different space)
  • Wavelet-Fourier method for the destriping of sinograms
  • Ghost Imaging / Structured Illumination:
    • Resolution estimation
    • Mask binning support
  • Linear attenuation coefficient computation for a given material

Fixed

  • Bug introduced with scikit-image 0.22
  • Alignment and solvers tests

0.9.0 - 2023-12-24

Added

  • QR decomposition for structured illumination
  • Background computation function from projection edges
  • Basic alignment routines:
    • Simple pre-alignment methods, for projection alignment
    • Stack shift tracking, for correcting image drifts
  • Experimental astra-toolbox backend support (direct FP and BP)
  • Basic phase contrast support:
    • Computing and plotting delta-over-beta
    • Computing TIE and CTF phase propagation functions
  • MLEM solver (thanks to J. Lesaint #20)

Fixed

  • Multi-platform pip conda package building
  • Type hinting fixes
  • Full-field transmission flat-fielding

0.8.1 - 2023-05-16

Added

  • Power spectrum calculation function.

Fixed

  • Pypi package creation.

0.8.0 - 2023-04-06

Added

  • Ghost imaging support (structured illumination):
    • Theoretical mask generation (incl. MURA, Half-Gaussian, Bernoulli)
    • Dedicated projector (CPU based).

Fixed

  • Circular mask initialization

0.7.2 - 2023-02-17

Added

  • Default VolumeGeometry creation from volume.
  • Tapering border size support in volume mask.
  • 1D gradient based regularizer shortcut.
  • Isotropic undecimented wavelet regularizer support.

Fixed

  • Fluorescence line selection case sensitive bug.
  • Verbose feedback in parabolic fitting for parameter tuning.

0.7.1 - 2022-10-31

Added

  • More documentation / tutorial content.
  • Energy conversion functions (keV to m, and vice versa).
  • Tapering for truncated volumes in FSC computation.

Fixed

  • Typo that preventing using ProjectionGeometry from models.
  • Shape dimensions (XYZ vs ZXY) interpretation in VolumeGeometry and other functions.
  • Cross-validation data term initialization in solvers.
  • Tapering to circular masks.

0.7.0 - 2022-10-11

Added

  • Wide API refactoring: renamed various modules, and moved processing routines to sub-package.
  • Initial draft of tutorial. More documentation on the way.
  • Line intersection computation.
  • Plotting of FRCs.
  • Tests: initial support for projectors.

Fixed

  • Typo in function name.
  • Simplified examples 01 and 02.
  • FRC/FSC axes selection.

0.6.0 - 2022-09-08

Added

  • Multi-channel (collaborative) regularization (including TNV - Total Nuclear Variation).
  • Support for custom (external, user defined) projection backends.
  • Dedicated FBP filters module.
  • Parallelization of guided regularization functions.
  • A lot of work towards full type hinting usage.

Fixed

  • Potential memory leak in astra-toolbox projector backend.
  • Gradient and laplacian implementations for arbitrary directions.
  • Output and consistency from tests for solver classes.
  • Residual norm computation in the weighted least squares data term.
  • Dimension mismatch in projector, when using only one angle.
  • Back-projection normalization in scikit-image projector backend.

0.5.1 - 2022-06-23

Added

  • Better support for FBP:
    • Dedicated solver class.
    • Support for 3D geometries.
    • Use of scikit-image's filters, with rfft.
    • Support for various padding modes (constant, edge, etc).
  • Support for various padding modes in gradient, Laplacian and convolution operators.
  • Support for Lorentzian and sech^2 beam shapes.
  • Computation of Center-of-Mass for volume.

Fixed

  • Border behavior in convolution operator.
  • Sanitized projector's angle input.
  • Denoising / deconvolution method.
  • Models: handling of astra-toolbox's 2D rotation direction.

0.5.0 - 2022-04-14

Added

  • New module called models:
    • VolumeGeometry: description of the volume.
    • ProjectionGeometry: description / manipulation of the projection geometry.
    • Support for unmatched pixel-voxel size, cone beam geometry, uneven volume shape.
    • Arbitrary geometry, including tilted detector.
  • Convolution operator and deconvolution support.
  • Support for rotating projection stack.
  • Support for computing cross-correlation curves.
  • Computation of PSF for pencil beam scanning with gaussian beam.
  • Support for computing attenuation maps outside the corrected projector.

Fixed

  • Pixel weights, when having small outliers.
  • Volume mask generation
  • Dimension bug in azimuthal integration.
  • Inconsistency between astra-toolbox and scikit-image backends.

0.4.2 - 2022-01-14

Added

  • Support for XRF line handling (Siegbahn).
  • Support for log-scaling of data weigths.
  • More type hinting and docstrings.

Fixed

  • 3D volume support (especially in astra-toolbox backend).
  • Attenuation correction in 3D volumes.
  • Handling of multi-detector in attenuation corrected projector (non-symmetric).
  • Handling of multi-detector in SART.
  • Wavelet scaling in regularizers.
  • Installation instructions.
  • Flat-fielding function.
  • Updated examples to latest solvers changes.

0.4.1 - 2021-12-06

Added

  • Uncertainty propagation functions, for weighted minimizations.
  • Unpreconditioned l1-minimization (standard behavior).

Fixed

  • Double application of weights in SIRT weighted least squares.
  • Use PDHG preconditioning by default.
  • Wavelet approximation minimization by default.

0.4.0 - 2021-11-29

Added

  • Moved data terms and regularizers to dedicated module.
  • Conditional minimization of low pass (approximation) portion of wavelet decomposition.
  • Cross-validation and L-curve methods for selecting regularization parameters.
  • Support for different regularization weights across reconstruction volume.
  • Improved corrected projector performance.
  • Restructured and expanded test phantom creation.
  • Basic multi-threading support for CPU operations.
  • Initial type hinting.
  • FRC/FSC and azimuthal integration support.
  • Automatic image denoising (with cross-validation).

Fixed

  • Size of transformed volumes in dwt.
  • Deprecation warnings from recent numpy versions.
  • Warning in scikit-image projector backend.
  • Copy of x0 and data terms in solvers.
  • Angle consistency among different projectors.
  • ProjectorMatrix when using precondioned PDHG solver.

0.3.2 - 2021-04-15

Added

  • scikit-image backend, as preferred in 2D non-GPU reconstructions.
  • Renamed AttenuationProjector into ProjectorAttenuationXRF.
  • Support for test/cross-validation sets in solvers.
  • Residual calculation with different data-fidelity terms.
  • Projection matrix based projector.

Fixed

  • PyWavelets interface change.
  • Background usage in the data terms.
  • Examples on the different data-fidelity terms.
  • Github workflows to use pip instead of conda.

0.3.1 - 2020-10-20

Added

  • FFT operator, and FFT regularizer.
  • l2-gradient (smooth) regularizer.
  • Support for multiple regularizers.

Fixed

  • Norm l2b (deadzone) is also weighted now.
  • Weighted least-squares implementation.
  • Crop inverse DWT output when necessary.
  • Changelog of 0.3.0

0.3.0 - 2020-09-23

Added

  • Data fidelity classes:
    • Use as norms for regularizers.
    • New classes: Huber norm, l12, l2b (l2 with deadzone), l1b (l1 with deadzone).
    • Residual computation.
    • Background bias support.
  • Regularization:
    • New classes: smoothness based on gradient, Huber TV, decimated wavelets, Huber wavelet, median filter.
    • Constraint classes (lower and upper limits) based on regularization.
    • Simplified and unified code.
  • Solvers:
    • SIRT now supports various l2 norm data terms.
    • CP and SIRT report better information on regularization.
    • Use of data term to compute residual correctly.
  • More flexibility and options to image denoiser.
  • New module for easing development of tests and examples.

Fixed

  • Python hard crash when CUDA not available.
  • Examples to comply with recent changes.
  • Axes passing to wavelet transform.
  • Stationary wavelet weights calculation.

0.2.4 - 2020-06-01

Added

  • Operator form (based on scipy.linalg.LinearOperator) for regularizers and projectors
  • Data fidelity function classes, including weighted least-squares
  • More test coverage
  • Support for non GPU reconstructions (in 2D)
  • Multi-dimensional volume mask creation

Fixed

  • SIRT regularization
  • Windows conda package build, and Python 3.8 target
  • Laplacian regularizer norm
  • Wavelet regularizer normalization

0.2.3 - 2020-05-05

Added

  • On-demand padding for Wavelet regularizer
  • Projection intensity rescaling for different angles in base projector
  • Support for 3D absorption maps (but not thouroughly tested, yet)
  • Data-term residual computation to all solvers
  • Some tests to solvers and regularizers
  • Automated testing and linting on github workflows
  • Support for ASTRA's super-sampling of pixels and voxels
  • Implemented scipy's sparse LinearOperator interface for the projectors
  • Utility min-log and simple flat-fielding functions for transmission data

Fixed

  • Copy-paste error, and detector data axis order in SART algorithm implementation
  • Weights for masks in SART algorithm
  • Error in unpreconditioned CP implementation
  • Applied linting changes, to improve the readability of the code

0.2.2 - 2020-03-30

Added

  • Unpreconditioned Chambolle-Pock algorithm (as default)
  • Utility functions for sinogram padding and circular volume mask creation
  • FBP data-dependent filters from D. Pelt
  • Improved performance of backprojection in non-symmetric uncorrected

Fixed

  • Wavelet decomposition along one dimension
  • TV regularizer for dimensions larger than ndims
  • Documentation and links
  • Handling of matrices

0.2.1 - 2020-02-25

Added

  • New regularizers: non-decimated wavelets and laplacian
  • Solvers: added projection masks, relaxation parameters, sirt regularizers
  • Uncorrected projector for 2D and 3D data

Fixed

  • sub-pixel attenuation correction

0.2.0 - 2019-11-05

Added

  • Multi-detector reconstruction

Fixed

  • TV-min sign
  • Solvers' name visualization
  • Back-projection behavior with different inputs

0.1.0 - 2019-10-29

Added

  • Initial release, with corrected forward and back-projections.
  • SIRT, SART, and Chambolle-Pock solvers.
  • TV-min and l1-norm based regularizers.