Recent Releases of corrct

corrct - Release version 1.0.0

First official release, changing quite a few things compared to previous pre-releases:

Added

  • Overhaul of physics module:
    • Cleanup of physics API
    • Merged attenuation correction support
    • Added/improved attenuation plotting functions
    • Added units submodule for conversions
  • Optional PyTorch backend for structured illumination (GI) projections
  • Super-sampling support in VolumeGeometry from models
  • Support for progress bar cleanup in solvers
  • Cleanup of legacy API
  • Modern multi-threading code
  • Moved to a src/ directory structure
  • Moved to pyproject.toml instead of setup.cfg
  • New documentation including a couple of tutorials
  • New basic tests for struct_illum and models ### Fixed
  • GI mask resolution computation
  • Building documentation
  • NumPy 2.0 compatibility

NOTE: This is the last release to support Python 3.9

- Python
Published by Obi-Wan 11 months ago

corrct - Release version 0.9.1

New minor release, adding the following features and fixing the following bugs:

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

- Python
Published by Obi-Wan almost 2 years ago

corrct - Release version 0.9.0

New major release, adding quite a few new features and fixing the following bugs:

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

- Python
Published by Obi-Wan about 2 years ago

corrct - Release version 0.8.1

Hotfix release adding the following features and fixing the following bugs:

Added

  • Power spectrum calculation function. ### Fixed
  • Pypi package creation.

- Python
Published by Obi-Wan almost 3 years ago

corrct - Release version 0.8.0

New major release, mainly adding support for Ghost Imaging (structured illumination). In particular, this release adds the following features and fixes the following bugs:

Added

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

- Python
Published by Obi-Wan almost 3 years ago

corrct - Release version 0.7.2

New minor release, adding the following features and fixing the following bugs:

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.

- Python
Published by Obi-Wan about 3 years ago

corrct - Release version 0.7.1

New minor release, adding the following features and fixing the following bugs:

Added

  • More documentation / tutorial content.
  • Energy conversion functions (keV to m, and viceversa).
  • 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.

- Python
Published by Obi-Wan over 3 years ago

corrct - Release version 0.7.0

New major release, adding the following features and fixing the following bugs:

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.

In particular, the API change breaks compatibility with the past, and it thus required a major version bump.

The scikit-image and astra-toolbox backend still present an inconsistent rotation center position definition. There is now a PR to fix the rotation center position in scikit-image: https://github.com/scikit-image/scikit-image/pull/6489

- Python
Published by Obi-Wan over 3 years ago

corrct - Release version 0.6.0

New major release, adding the following features and fixing the following bugs:

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.

The scikit-image and astra-toolbox backend still present an inconsistent rotation center position definition. There is now a PR to fix the rotation center position in scikit-image: https://github.com/scikit-image/scikit-image/pull/6489

- Python
Published by Obi-Wan over 3 years ago

corrct - Release version 0.5.1

New minor release, adding the following features and fixing the following bugs:

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.

- Python
Published by Obi-Wan over 3 years ago

corrct - Release version 0.5.0

New major release, adding the following features and fixing the following bugs:

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. ### Warning
  • Some interfaces and some internal properties have been refactored / renamed.
  • There is still an inconsistency between the scikit-image and astra-toolbox backends, regarding the volume center definition.

- Python
Published by Obi-Wan almost 4 years ago

corrct - Release version 0.4.2

New minor release, adding the following features and fixing the following bugs:

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.

- Python
Published by Obi-Wan about 4 years ago

corrct - Release version 0.4.1

New minor release, adding the following features and fixing the following bugs:

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.

- Python
Published by Obi-Wan about 4 years ago

corrct - Release version 0.4.0

New major release, adding the following features and fixing the following bugs:

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.

- Python
Published by Obi-Wan about 4 years ago

corrct - Release version 0.3.2

New minor release adding the following features and fixing the following bugs:

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.

- Python
Published by Obi-Wan almost 5 years ago

corrct - Release version 0.3.1

New minor release adding the following features and fixing the following bugs:

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

- Python
Published by Obi-Wan over 5 years ago

corrct - Release version 0.3.0

This release adds a few generational improvements in the reconstruction tools.

Added

  • Data fidelity classes:
    • Use as norms for regularizers.
    • New classes: Huber norm, l12, l2b (l2 with dead-zone), l1b (l1 with dead-zone).
    • 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.

- Python
Published by Obi-Wan over 5 years ago

corrct - Release version 0.2.4

New release adding the following features and fixing the following bugs:

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

- Python
Published by Obi-Wan over 5 years ago

corrct - Release version 0.2.3

New release adding the following features and fixing the following bugs:

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

- Python
Published by Obi-Wan almost 6 years ago

corrct - Release version 0.2.2

New release adding the following features and fixing the following bugs:

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

- Python
Published by Obi-Wan almost 6 years ago

corrct - Release version 0.2.1

New release adding the following features and fixing the following bugs:

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

- Python
Published by Obi-Wan almost 6 years ago

corrct - Release version 0.2.0

New release adding multi-element / multi-detector support.

Added:

  • Multi-detector reconstruction ### Fixed:
  • TV-min sign
  • Solvers' name visualization
  • Back-projection behavior with different inputs

- Python
Published by Obi-Wan about 6 years ago

corrct - Release version 0.1.0

Initial release, which offers the basic functionality.

Added:

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

- Python
Published by Obi-Wan about 6 years ago