Below is a simplified timeline of DICOMautomaton
development, broken down by month.
Note: this list is periodically updated and is likely to be out-of-date!
- CI: added custom gitlab runner tags.
- CI: add wait-and-retry when dealing with (most) package managers.
- ExportFITSImages: notify user how many images are being exported.
- FITS: support full metadata encoding. FITS images are now an option for lossless image transfer.
- FITS: upgrade support from single-image to multi-image for both reader/writer.
- WIP documentation for forthcoming network protocol.
- Add operation for decomposing images using SVD (i.e., 'eigenfaces').
- Add TabulateImageMetadata operation.
- SDL_Viewer: contours: garbage-collect entries for removed ROIs.
- SDL_Viewer: support hot-keys (open, quit, help).
- Add grid-like test meshes to test simplification.
- Address operation parameter compiler warning (unused parameters).
- Always expose SimplifySurfaceMeshes and QueryUserInteractively operations.
- AppImage: proceed if git commit hash not available.
- CMakeLists: enable optimization for memory-constrained builds.
- ConvertContoursToMeshes: add convex hull method.
- QueryUserInteractively: include header.
- ReduceNeighbourhood: add geometric mean reduction method.
- SDL_Viewer: address minor compiler warnings.
- SDL_Viewer: add tooltip 'advertising' drag-and-drop.
- SDL_Viewer: support file drag-and-drop loading.
- SimplifySurfaceMeshes: add Ygor 'flat' mesh simplification method.
- SimplifySurfaceMeshes: disregard option for disengaged functionality.
- SimplifySurfaceMeshes: expose Ygor MinAlignAngle threshold criteria.
- SimplifySurfaceMeshes: fix documentation layout typo.
- Workaround for git CVE-2022-24765 on Arch.
- Added Time and Sleep operations.
- Added file selector helper script.
- Add libnotify as optional (runtime) dependency.
- Add transform file reader and expand writer.
- AnalyzePicketFence: consolidate CSV output files.
- Bug fix: replace numeric_limits::min --> lowest.
- check_syntax: auto-enable Eigen, if available.
- DICOM image loading: provide better message if rows/columns data missing.
- DICOM metadata: add optional pixel extrema.
- DICOM reader: add optional metadata.
- DICOM: support multi-frame images.
- Ensure alignment classes can be in-place constructed from a stream.
- ExportWarps: ensure file has consistent extension.
- Expose Orthogonal Procrustes (SVD) point set alignment.
- ModelIVIM: replace placeholder image metadata.
- OrderImages: ensure the default variant is provided.
- OrderImages: support stable image array sorting.
- OrthogonalProcrustes: confirm solution validity.
- OrthogonalProcrustes: disable use of SVDBase.
- OrthogonalProcrustes: parametrize mirroring and isotropic scaling.
- Pixel mapping: clamp rescale for good measure.
- Pixel mapping: protect against degenerate cases.
- ReduceNeighbourhood: label neighbourhood arg examples as exhaustive.
- Re-introduce previous resample-less WarpImages.
- Rename 'TPlan' to 'RTPlan' for clarity.
- RTIMAGE: explicitly apply top-level LUT.
- Script: add img sort after partitioning.
- SDL_Viewer: image feature matching: default to SVD-based solver.
- SDL_Viewer: image feature matching: visualize transformed points.
- SDL_Viewer: implement manual image feature selector.
- SDL_Viewer: loading bar: decouple wave speed from frame rate.
- SDL_Viewer: meshes: expose yaw, pitch, and roll angles.
- SDL_Viewer: plot viewer: display ordinate and abscissa, if available.
- SDL_Viewer: show loading animation.
- SDL_Viewer: shrink script editor button width.
- SDL_Viewer: speed up loading bar wave speed.
- Surface_Meshes: add missing CGAL header.
- Time: explicitly include stringstream header.
- WarpImages: support resampling warped images.
- Add AnyOf/FirstOf/AllOf/NoneOf operations or aliases.
- Added Eigen support to syntax checking script.
- Add Ignore operation.
- Add NotifyUser operation.
- Add ValidateTPlan example script.
- Dispatcher: lengthen pause time for error messages on Windows.
- Documentation: remove duplicated DICOM RT warnings.
- Harmonize control flow meta-operations.
- ModelIVIM: add example script.
- ModelIVIM: fix bi-exp model matrix coeff access bug.
- ModelIVIM: rewrite script filtering steps.
- Notifications: powershell: switch to blocking notifications.
- NotifyUser: assume powershell is always available.
- PFD: increase result buffer.
- README: update Zenodo DOI for previous release
- SDL_Viewer: add rudimentary RTPLAN viewer.
- SDL_Viewer: avoid drawing scale bar when changing colour map.
- SDL_Viewer: avoid RTPLAN metadata window overlap.
- SDL_Viewer: contouring: standardize contour metadata.
- SDL_Viewer: default to wider table view.
- SDL_Viewer: explicitly check coordinate map validity.
- Tray_Notification: re-order powershell commands.
- Valgrind and TSAN bug fixes.
- ValidateTPlan: add is_VMAT and collimator angle degeneracy checks.
- ValidateTPlan: add minimum jaw-defined field size check.
- Add support for RTPLAN-based grouping.
- Add WIP TPlan checking operation.
- DroverDebug: provide more granular control over verbosity.
- ForEachDistinct: make N/A partition accessible.
- Partitioning: support partitioning tables.
- SDL_Viewer: account for viewer aspect ratio.
- SDL_Viewer: add keyword-based cell highlighting for tables.
- SDL_Viewer: add minimal keyboard positioning for meshes.
- SDL_Viewer: add toggleable face smoothing.
- SDL_Viewer: flip vertical screen axis.
- SDL_Viewer: force deprecation of pre-3.0 OpenGL functionality.
- SDL_Viewer: more aggressively strip chars from GLSL version string.
- SDL_Viewer: OpenGL: switch to shader-based rendering.
- Add basic table operations (Delete, Copy, Generate).
- Added constructive solid geometry functionality using signed distance functions (CSG-SDF).
- Add ExportTables operation.
- Add MakeMeshes example script.
- Add minimal 'table' class.
- AnalyzeHistograms: use OS-dependent tmp dir.
- CSG: add poly chain shape.
- CSG-SDF: add 2D->3D extrusion operation.
- CSG-SDF: add extrusion example.
- CSG: SDF: add rotations and more Boolean ops.
- CSG-SDF: add text primitive.
- CSG: SDFs: add chamfer Boolean variants.
- CSG-SDF: support asymmetric SDFs.
- Expand CSG-SDF operation examples.
- Move README content to wiki.
- parse_functions: added nested function support.
- Remove non-critical FUNCERRs in operations.
- SDL_Viewer: always ensure mesh number is valid.
- SDL_Viewer: enable mesh metadata viewer.
- SDL_Viewer: fix table expansion ID issue.
- SDL_Viewer: force reload of OpenGL meshes after script execution
- SDL_Viewer: integrate table and table metadata editor
- Surface_Meshes: support marching cubes with oracle functor.
- Tables: implement CSV write.
- Added a position-based image sorter.
- Added a position-based image sorter.
- Added de-EQD2 standard script.
- Added ModifyParameters operation.
- Add LoadFilesInteractively, which uses recently-added dialog functionality.
- Add QueryUserInteractively operation.
- Add read support for (proprietary) XIM format images.
- Always prospectively rebuild Ygor on Debian.
- Avoid std::filesystem::absolute on Windows.
- CMake: replace large macro (stringified standard scripts) with generated file.
- ConvertContoursToMeshes: expose marching-cubes extractor.
- Dialogs: disable prospective pfd::kill().
- Dialogs: try to accept more Windows-like systems.
- ExtractRadiomicFeatures: use DCMA marching cubes for speed-up.
- FITS images: imbue minimal DICOM metadata in images.
- OrderImages: add spatial ordering option.
- OrderImages: add spatial ordering option.
- PFD: remove OS version check, which seemingly fails for no discernable reason?
- Replace large macro with generated file.
- Scripts: support quotation escapes.
- SDL_Viewer: add native dialog support via PFD.
- SDL_Viewer: disable optional parameters in stringified scripts.
- SDL_Viewer: handle empty metadata tags.
- SDL_Viewer: isolate dialogs into separate library.
- SDL_Viewer: limit default script open dialog to script extensions.
- SDL_Viewer: rely on select_files defaults.
- SDL_Viewer: simplify file loading.
- SDL_Viewer: simplify script optional parameters.
- Standard_Scripts: generator: disable verbose mode
- Windows: delay for longer when terminating abnormally.
- Windows: provide a new icon.
- Add ConvertWarpToMeshes operation.
- Add MingW-specific winsock libs for Asio/Boost.
- Added ConvertImageToWarp to pair with ConvertWarpToImage.
- CI: GitHub: add aarch64 and x86_64 static builds.
- ConvertWarpToMeshes: provide means to disregard rigid component.
- ConvertWarpTo*: inject user-provided metadata.
- De-CGALify marching cubes implementation.
- Explicitly link imebrashim.
- Fallback to previous wstring offload when needed.
- Imbue converted warps with DICOM-style metadata.
- Imebra_Shim: def reg reading: swap spatial dimensions.
- Img Reg: add an example of accessing images and voxels.
- Img Reg: added placeholder write_to and apply_to functions.
- Img Reg: support reading whole directories of FITS files.
- Musl: Fallback to an identity conversion if iconv does not support required conversion.
- Properly differentiate fv_surface_mesh and Polyhedron meshes.
- Documented current state of GUI intefaces via screenshots in GitHub issue.
- Roughed in field-based deformations.
- SDL_Viewer: add 3D Gaussian brush.
- SDL_Viewer: add custom mesh colouring with alpha support.
- SDL_Viewer: add image auto-advance.
- SDL_Viewer: add rudimentary lighting for meshes.
- SDL_Viewer: cleanup OpenGL textures when re-assigning.
- SDL_Viewer: encapsulate mesh loading and rendering in a class.
- SDL_Viewer: fix clipping bug.
- SDL_Viewer: honour minimizing the script window.
- SDL_Viewer: maintain aspect ratio in model space.
- SDL_Viewer: normalize soft brushes and add tanh{2D,3D}.
- SDL_Viewer: release OpenGL resources while context valid.
- SDL_Viewer: simplify placeholder script.
- SDL_Viewer: support light mode.
- SDL_Viewer: support mesh selection, rotation, and precession.
- SDL_Viewer: tighten range for tanh brushes.
- SDL_Viewer: embed raw opengl mesh in imgui window.
- Script: list exhaustive arguments in debug feedback.
- Scripts: map parent directory to category.
- Split point cloud and image registration working directories.
- Surface_Meshes: accelerate marching cubes.
- Surface_Meshes: face re-orientation: allow unorientable faces.
- Surface_Meshes: implement orientation normalizer.
- Surface_Meshes: marching cubes: track per-component orientation.
- Surface_Meshes: use a faster vertex de-duplication method.
- Swap long int --> int64_t to appease mingw64 ygor linking issue (and some arm archs).
- Support reading and visualizing deformation fields.
- Add minimal Affine registration DICOM read support.
- deformation_field: conceal a spatial index.
- deformation_field: implement basic apply_to().
- Add 'standard' scripts.
- Add an operation to add noise to an image array.
- Add script to build statically-linked DCMA binaries.
- Added extremely minimal terminal-based image viewer.
- Address upstream Boost bind placeholder de-escalation.
- AppImage: manually set rpath for binaries.
- Arm: also avoid clobbering user-provided mcpu and mtune.
- Arm: avoid clobbering user-provided march flag.
- CI: GitHub: WIP: add armv7 static build + test.
- CI: github: be more forceful with artifact sync.
- Common_Plotting: when forking, use std::exit() rather than std::quick_exit().
- Cross compiling: more clearly state which configurations work.
- Cross compiling: remove BUILD_SHARED_LIBS="ON" override.
- Cross-compiling: more tinkering to get armv8 to cross-compile with zig-cc or musl toolchain.
- DCMA: check that CWD is valid, else make it valid.
- DICOM loader: warn when modality cannot be assessed.
- Dispatcher: load command-line script operations before command-line operations.
- Docker: Alpine: add X and OpenGL-related packages.
- Docker: Alpine: add aarch64 and x86_64 build_bases.
- Docker: Alpine: add builders to complement build_bases.
- Docker: Alpine: add note wrt mesa/OpenGL support.
- Docker: Alpine: avoid failing if unable to delete directory.
- Docker: Alpine: fix arm64 --> amd64 typo.
- Docker: Alpine: follow MXE build_base and defer building DCMA.
- Docker: Alpine: make use of GSL and Eigen.
- Docker: CI: ensure patchelf is available.
- Docker: add Alpine armv7 container build_base.
- GenerateSyntheticImages: provide UIDs that parse correctly.
- Metadata: bug fix: to_seconds() string replacement.
- Metadata: generalize metadata evaluation and macro replacement.
- Metadata: implement WIP DICOM module-based metadata coalescers.
- Metadata: provide helper for key-value modifying operations.
- NormalizePixels: add PET SUVbw normalization.
- Remove vestigial getopts.h include.
- Scripts: bundle scripts during builds.
- SDL_Viewer: WIP: support modifying image pixels.
- SDL_Viewer: add 2D median filter brushes.
- SDL_Viewer: add 3D median brushes.
- SDL_Viewer: contouring: handle case with multiple overlapping images.
- SDL_Viewer: display contour metadata as a tooltip.
- SDL_Viewer: drawing: added full complement of 2D and 3D rigid/mean/median brushes.
- SDL_Viewer: hoist image drawing from contouring.
- SDL_Viewer: improve metadata handling for line samples.
- SDL_Viewer: proactively set LIBGL_ALWAYS_SOFTWARE=1 within AppImages.
- SDL_Viewer: provide a way to directly run scripts as actions.
- SDL_Viewer: use bounding box to speed drawing.
- SDL_Viewer: use imgui table for image metadata viewer.
- Terminal_Viewer: add bare-bones shade glyphs display option.
- Terminal_Viewer: add displays for non-ansi, non-unicode terminals.
- Terminal_Viewer: allow user to override display settings.
- Terminal_Viewer: disable use of terminal control codes for completely portable display option.
- ModifyImageMetadata: support macro expansion and time extraction.
- GroupImages: add note about de-grouping.
- Address LGTM static analysis concerns.
- SYCL: switch to triSYCL.
- Operations: separate Drover updates from return/exit.
- Support loading scripts from files.
- Add control flow meta-operations for programming scripts.
- Provide conditional (if-then-else) control flow meta-operation.
- Debian: continue with buster (now oldstable) for now.
- Documentation: do not clobber inline paragraphs.
- Regex_selectors: add compliment to 'numerous': 'fewest'.
- Regex_Selectors: add undocumented image selector (numerous).
- GroupImages: provide automated partition key selection.
- ModelIVIM: support Siemens CSA b-values
- Imebra_Shim: switch pixel extraction to metadata.
- Imebra_Shim: added ad-hoc support Siemens private DICOM tag 'CSA2' binary blob decoding.
- Dispatcher: default to SDL_Viewer.
- Dispatcher: added workaround for AppImageKit chdir() call.
- Replace boost::filesystem with std::filesystem.
- check_syntax: document libraries needed for linkage.
- File_Loader: verbosely report unloadable files.
- File_Loader: attempt to resolve relative paths.
- File_Loader: add a few more short-circuit extensions.
- File_Loader: only FUNCINFO notice when loader is invoked.
- Load_Files: bug fix: let user override extension filtering.
- Dispatcher: disable file checking logic.
- Scripts: check for shebang and provide compilation feedback to stdout.
- Script_Loader: merely suggest non-expected arguments.
- SDL_Viewer: expose abscissa for time courses.
- SDL_Viewer: default to 'dt' metadata element for time courses.
- SDL_Viewer: WIP time course viewing.
- SDL_Viewer: display aliases in add-to=script menu.
- SDL_Viewer: support saving generated contours.
- SDL_Viewer: plots: give buttons unique IDs.
- SDL_Viewer: plots: allow legend to be disabled.
- SDL_Viewer: plots: more tooltip weidth tweaking.
- SDL_Viewer: Plots: adjust column widths.
- SDL_Viewer: attempt to widen plot hover metadata.
- SDL_Viewer: Plots: view metadata and add on-the-fly normalization.
- SDL_Viewer: plot selection bug fix.
- Dispatcher: permit directory file command line arguments.
- Testing: report verbose results before summary.
- CI: provide verbose feedback for integration test failures.
- TAR loader: attempt to use file extensions from the archive.
- DICOM: add (ad-hoc) proprietary CSA header tag parser.
- check_syntax: optionally check YAML files.
- DCMA-Dump: support printing beyond null bytes.
- File_Loader: recursively find files when directories provided.
- File_Loader: disable reprioritization when extension missing.
- File_Loader: switch from constexpr lambda to regular function.
- File_Loader: switch to priority-based file loading via file extension.
- Load_Files: provide more insight into which loaders are being used.
- ContourWholeImages: only allocate space when creating contours.
- Scripts: accept up to 500 feedback notifications.
- Add single-thread worker FIFO queue class.
- ModelIVIM: use fuzzy key-value lookup for b-values.
- Docker: avoid unnecessary costly rebuilds (Debian stable).
- Add support for shellcheck-based checks.
- Provide better support for remote aarch64 compilation.
- CI: attempt to add armhf CI builds.
- CI: GitLab: use a loopback swapfile for all builders.
- Script_Editor: make variable replacement exhaustion an error.
- Script_Loader: support variable replacements.
- Script_Editor: recursively parse operations and variables.
- Script_Editor: imbue characters with basic parsing metadata.
- Script_Editor: expand script validation feedback.
- Script_Editor: validate parentheses and quotations.
- SDL_Viewer: bug-fix: honour user image view setting.
- SDL_Viewer: Script_Editor: provide line numbers.
- SDL_Viewer: added rudimentary script parser.
- SDL_Viewer: make auto-scaler aware of multi-channel images.
- SDL_Viewer: script editor: emphasize active script file better.
- SDL_Viewer: continue to display previous image texture without locking.
- SDL_Viewer: used timed mutex to skip locked data access.
- SDL_Viewer: compartmentalize sub-operations.
- SDL_Viewer: roughed-in worker offload thread.
- SDL_Viewer: roughed-in script support.
- CI: add binutils explicitly.
- CI: adjust rpath for aarch64 dynamic linked binaries and libraries.
- CI: mitigate AppImage naming differences on aarch64.
- CI: GitHub: account for chroot-nested AppImage.
- CI: altogether disable Wt for CI builds.
- CI: switch to CMake '-B' option.
- CI: more Wt compilation wrangling.
- CI: adjust Wt optimization level.
- CI: speed up Wt compilation.
- CI: GitHub: lengthen timeout for aarch64 AppImahe building.
- CI: AppImage: fallback to linuxdeploy for x86_64.
- CI: permit longer aarch64 builds.
- CI: Debian: add script to make aarch64 chroot.
- AppImage: switch to appimagetool directly.
- CellularAutomata: added simplistic 'gravity' mode for voxel values.
- Added 2D cellular automata operation.
- ModelIVIM: Fixed bugs for Kurtosis model fitting
- ModelIVIM: utilize multiple model params as separate channels
- WIP: ModelIVIM: add bounds checks for debugging.
- WIP: ModelIVIM: Bayesian kurtosis model with noise floor (CSample)
- HighlightROIs: use r*-tree for faster spatial lookups.
- HighlightROIs: rely on modified upstream Mutate_Voxels() for contour overlap
- HighlightROIs: added integration test.
- HighlightROIs: expose receding-squares method
- HighlightROIs: add WIP marching-squares-inverse algorithm
- ContourViaThreshold: consistently handle contour orientation
- ContourViaThreshold: support marching-sqaure lower and upper thresholds
- ContourViaThreshold: make marching-squares handle boundaries
- ContourViaThreshold: add marching squares option.
- SDL_Viewer: support 3D contour brushes.
- SDL_Viewer: add snapping distance measuring tool.
- SDL_Viewer: provide colour map scale bar.
- SDL_Viewer: provide visual cue of contouring brush
- SDL_Viewer: avoid double-counting overlapping line segments.
- SDL_Viewer: support gapless contouring.
- SDL_Viewer: added square rigid brush.
- SDL_Viewer: add channel selector.
- SDL_Viewer: support erosion and dilation (margins)
- SDL_Viewer: contouring respects image aspect ratio
- SDL_Viewer: use public ContourViaThreshold interface
- SDL_Viewer: support multi-plotting
- SDL_Viewer: contouring: notify user of contour deletion
- SDL_Viewer: marching squares: switch to grid-based representation.
- SDL_Viewer: contouring: implemented marching squares
- SDL_Viewer: provide contouring fallback method.
- SDL_Viewer: give user control of contouring resolution.
- Added diffusion MR DICOM attributes.
- CI: GitLab: Fedora: workaround LD_PRELOAD issues, explicitly preload libs, add gmp-c++ dependency.
- CI: remove Travis.ci.
- CI: upload artifacts to GitHub.
- Docker: added Ubuntu build_base.
- ModelIVIM: account for extra voxel value.
- ModelIVIM: bug fix: log-transform MR intensities
- ModelIVIM: expose model selection flag.
- ModelIVIM: merge pull request from samplecm (biexponential model)
- Regex_Selectors: add simplistic regex inversion mechanism.
- Regex_Selectors: provide basic missing key selector.
- SDL_Viewer: WIP asynchronous contours overlay
- SDL_Viewer: WIP contours overlay
- SDL_Viewer: WIP mask-based contouring.
- SDL_Viewer: add image coordinates tooltip.
- SDL_Viewer: add realtime row and column profile viewer
- SDL_Viewer: add realtime-updating image metadata window.
- SDL_Viewer: add simple linesample plots.
- SDL_Viewer: add voxel intensity probe.
- SDL_Viewer: allow contour line thickness adjustment, provide per-contour display toggle
- SDL_Viewer: cache filesystem queries.
- SDL_Viewer: disable default OpenGL word-alignment.
- SDL_Viewer: expose window/level and colour maps.
- SDL_Viewer: generate mipmaps and use nearest pixel sampling.
- SDL_Viewer: improve file opener edge cases.
- SDL_Viewer: load files asynchronously.
- SDL_Viewer: protect against empty root paths.
- SDL_Viewer: provide rudimentary file loader.
- SDL_Viewer: report DICOM position.
- SDL_Viewer: retain custom window and level
- SDL_Viewer: revert mipmaps, keep nearest pixel sampling.
- SDL_Viewer: support contour colour adjustment
- SDL_Viewer: support mouse zoom and pan, zooming and panning images, keyboard image navigation
- SDL_Viewer: support multiple file selections.
- SDL_Viewer: support synchronized low-high and window-level.
- SDL_Viewer: use shared_mutexes for contour threads
- SDL_Viewer: workaround wstring/wchar.
- Support remote AppImage builds.
- SDL: provide explicit format strings.
- Perfusion: implement a single-compartment model
- SDL_Viewer: make specific views toggleable.
- SDL_Viewer: added basic operation documentation menu.
- Convert version macro to extern variable.
- CI: GitHub: support manual launch.
- Merge pull requests/branches from anthonyho.
- Simple_Meshing: accept disoriented contours.
- PurgeContours: expand functionality.
- Expose Drover partitioning backend.
- Merge pull requests/branches from mojanjz and ceringstrom
- Provide version information.
- CI: use GitHub actions to deploy CI to GitHub page.
- Add no-op operation.
- Bug fix: properly document Repeat operation.
- Support fuzzy operation names and explicit aliases.
- Clean up and similarity threshold
- Rearranged includes and fixed a lot of warning and added more parameters
- ContourViaThreshold: enable partial support without CGAL.
- Added DeleteContours operation.
- Avoid running tests when functionality unavailable.
- Add a non-trivial example (double-threaded screw).
- ConvertContoursToMeshes: contour selection bug fix.
- CGAL: use exact-exact kernel for boolean operations.
- CopyContours: rely on metadata update member.
- CopyContour: added missing contour duplication operation.
- WarpImages: test spatial mirroring.
- GenerateTransform: rely on upstream affine factories.
- Enable rigid and affine registration implementation
- Improve compatibility with older Boost::Serialization versions.
- Support for Boost::Serialization 1.74.
- Support loading point clouds and surface meshes from both ASCII and binary PLY files.
- Added support for vertex normals (surface meshes, point clouds).
- Added basic support for vertex colours (surface meshes, point clouds).
- Partial migration from Travis CI to GitHub actions.
- Added explicit support surface mesh export in (ASCII+binary) PLY, OBJ, OFF, and (ASCII+binary) STL formats.
- Support loading point clouds from OBJ and OFF files.
- Added ConvertMeshesToPoints operation with vertex extraction and random surface sampling.
- SYCL: added test file generation program, SCDI perfusion model minor bug fixes.
- Nix: overhaul of all nix files, slightly more idiomatic file hierarchy.
- SDL_Viewer: make image array viewing optional, but still a WIP.
- CI: ensure all systems provide libOpenGL.so.
- Docker: added WIP debian:oldstable support. Might have to wait for next oldstable.
- Reworked EQDx operation to also provide BED conversion, added tests.
- Simplified very old code (contours_with_meta class).
- Simplified ROI operation parameter selectors and documentation.
- Webserver: relocate config directory, simplify parameter selection when exmaples are exhaustive.
- Add SDL2 and Glew dependencies on all platforms.
- SFML_Viewer: provide cross-platform partial replacements for Zenity dialogs.
- Explicator: provide built-in lexicon, default to most generic lexicon provided by Explicator (if available).
- ContourSimilarity: sync documentation with current implementation.
- Documentation: indicate version in online documentation.
- Added mock-up starting point for deformable registration algorithm development.
- Added development log.
- Modernized use of 'new' for Contour_Data and Image_Data unique_ptr/shared_ptr allocations.
- Added support for nested operations and meta-operations, Repeat and ForEachDistinct. These can be used to partition data, analyze group-wise, or implement control flow at the level of operations.
- Nix: nix files reconfigured to use git master branches rather than commit pinning.
- Successfully ported DCMA to Windows.
- CI: added MXE cross compilation and expose build artifacts.
- CI: expanded number of builds and test matrix, added nightly scheduled builds.
- CI: updateCI scripts and AppImage creation, switched base image to Debian for greater stability.
- Docker: separated setup scripts from Dockerfiles for easier re-use.
- Docker: parameterized multi-part builds.
- Addressed some static analysis warnings (memcpy, localtime, if(false), std::bind, ...).
- CI: publish AppImage artifacts.
- CMake: better support for ARM builds.
- ReduceNeighbourhood: support statistical standarization.
- ReduceNeighbourhood: support adaptive renormalization.
- CMake: easier support for sanitizer builds.
- TPS-RPM: report bending energy, support for alternative solver methods, support double-sided outlier handling, added tolerance-based Sinkhorn normalization for adaptive refinement, finalize user-interface.
- IO: normalize floating-point precision to maximum for exact round-trips.
- AnalyzeHistograms: fix conversion typo (cm^3^ to mm^3^).
- Added Transform3 as first-class object to support registrations.
- Preliminary TPS-RPM implementation for deformable registration.
- Many small tweaks throughout code base (UID generation, debugging features, IO
- Added test files for meshing.
- Simple_Meshing: force manifoldness at edges.
- Added Simple_Meshing routine to quickly stitch together well-behaved contours. It is experimental, but has limited support for N-to-M contour connections, holes, and nested contours. Meshes produced this way are extremely unreliable, except in well-constrained situations!
- Support for explicit DVH Line_Sample files.
- Attempted WASM compilation, but SFML and few others are currently blocking such a port. Will likely have to move to SDL at some point, probably with a more functional interface.
- Added script to generate AppImages.
- Added minimal Nix scripts for building with Nix and integrating into NixOS.
- Overhauled entire histogram sub-system.
- Docker: added X-passthrough script for distributing full
DICOMautomaton
builds, including graphical parts. - Added Linux live-cd distribution method, which provides full
DICOMautomaton
builds and all requirements. Also provides a script to download all sources for all packages. This distribution method is rock-solid, but fairly inconvenient. Best for archival or offline distribution. - Support reading and writing of gzipped-TAR files.
- File_Loader: support (uncompressed) TAR files.
- DICOMExportImagesAsCT: upstream class name change.
- Support writing TAR archives when exporting multiple files (e.g., CT images).
- SimulateRadiograph: faster ray marching, smarter ray pruning, optimized code hot-paths, and truncate rays to bounding volumes.
- Upstream (Ygor) planar_image_adjacency change: switched from map to linear lookups for int-to-images, which will significantly speed-up ray-casting through rectilinearly voxelized geometries.
- Added basic treatment plan analysis routine. Basically just a shell to build on later (e.g., for automated plan checks).
- Address excessive Docker build memory consumption.
- Added small collection of test files of various kinds, mostly for development and testing.
- Added support for reading STL files.
- Added TransformContours operation.
- Meshing: prune irrelevant candidate vertices (Marching Cubes) to speed-up large meshing operations.
- Added Fuzzing Docker container for easier fuzzing with AFL.
- EQDConvert: typo fix: conversions mistakenly always used a non-pinned conversion scheme.
- Added documentation for fuzz testing, expanded Termux documentation.
- PointSeparation: reduce to constant memory usage.
- PointSeparation: report Hausdorff distance.
- Added operation to compute extreme distances between point clouds (PointSeparation).
- Improved linking, dependency tracking, and invalid flags when clang is used.
- Switched to C++17 to expand compiler compatibility (wrt std::experimental).
- portable_dcma: provide default lexicon for all wrapper scripts.
- Provide an embedded fallback font.
- PartitionContours: ensure sub-segment ordering when some are omitted.
- Added operation to partition ROIs (PartitionContours).
- SubsegmentContours: provide means of re-ordering cleaves.
- Extracted sub-segmentation operation from earlier segment+analyze operation.
- AnalyzeDoseVolumeHistograms: hoist macro expansion routine into Ygor for broader use.
- DeDuplicateImages: add simple means of de-duplicating image arrays.
- ContourBooleanOperations: ensure at least one contour has been selected.
- DCMA_DICOM: Provide a custom DICOM writer.
- Imebra: extract DICOM tag writing sub-routines.
- Optional external dependencies: support conditional compilation for major external dependencies. This will eventually be needed for increasing portability to other Linuxes, Windows, and WebAssembly.
- Joint_Pixel_Sampler: rely on Mutate_Voxels img_refw.
- Joint_Pixel_Sampler: eliminate racy static logging.
- AlignPoints: provide implementation of exhaustive ICP.
- AlignPoints: handle cases of 2D and 1D degeneracy for PCA alignment.
- ConvertContoursToPoints: provide an operation to extract vertices from contours as a point cloud.
- Added an operation for registration of point clouds (AlignPoints).
- XYZ loading: load each file as a separate point cloud.
- Moved point cloud implementation to Ygor.
- AnalyzeDoseVolumeHistograms: increased support for literals, sig. figs., and unrecognized constraints.
- Added support for Line_Samples as first-class objects. This will be used for DVH handling and possibly some tabular data applications.
- Provide a routine to deal with non-manifold meshes.
- EvaluateDoseVolumeHistograms: switch to more sophisticated backend.
- Supersampling: clean up metadata and intermediate images.
- Interpolate_Image_Slices: exploit rectilinearity to interpolate slices much more quickly.
- Experimental support for treatment plans.
- Docker: Added Void Linux Docker (musl) build. Note that this container still builds dynamic artifacts.
- Generalized compilation convenience scripts wrt which Linux distribution is being called and whether to delegate to Docker.
- Surface_Meshes: specify image traversal order.
- SimulateRadiograph: WIP: added path integration, parameterized more image characteristics.
- Added operation for exporting images in FITS format.
- Added operation for convolution, correlation, and pattern-matching with two images.
- Added support for reading DOSXYZnrc 3ddose files.
- Added operation for rigid mesh transformations.
- Added mesh processing routines (remeshing, subdivision, and simplification).
- Added preliminary support for first-class surface meshes.
- ContourSimilarity: revamped earlier quick implementation.
- Added runtime ELF patching for portable dcma binary.
- DumpImageSurfaceMeshes: added user-facing interpolative surface mesher.
- VolumetricNeighbourhoodSampler: clarify exception when images overlap.
- ContourViaThreshold: support non-binary marching cubes contouring.
- DrawGeometry: added solid sphere pattern.
- Docker: Arch: use dynamic mirrorlist to avoid timeouts or reliance on any one mirror.
- PresentationImage: expose window and level configuration, permit not specifying any window/level.
- DumpROISurfaceMeshes: expose contour interprettation options.
- Expose contour inclusivity for mesh generation.
- DumpImageMeshes: simplify specification of output base and expose more options, including normalization.
- SFML_Viewer: added explicit window/level entry, replace DB contour export with local export.
- DrawGeometry: added a wireframe cube shape.
- DumpImageMeshes: added image export as 3D OBJ and MTL models.
- SubtractImages: support more advanced image selection.
- BoostSerializeDrover: support export of inidividual components.
- ReduceNeighbourhood: explicitly mention 'erosion' and 'dilation'.
- ReduceNeighbourhood: add fixed isotropic spherical neighbourhoods.
- DetectGrid3D: WIP tweaks for improving image intensity-based detection of regular grids (RANSAC, reporting, Procrustes and algorithmic tweaks).
- FVPicketFence: hide parameters from picket fence web interface, use whitelist for exposing parameters.
- Added operation implementing Otsu thresholding.
- Add a volumetric spatial blur operation.
- ImprintImages: update image description.
- Added conservative filter for speckle reduction.
- DumpROISurfaceMeshes: generate more precise surfaces by default (CGAL).
- Ensure Gram-Schmidt orthogonalization retains unit vector magnitudes.
- ContourViaGeometry: pre-filter degenerate contours.
- Added operation for making volumetric contours from 3D shape primitives.
- SFML_Viewer: added a simple DICOM distance measurement tool, factored common coordinate transformations.
- ScalePixels: added operation for scaling pixel/voxel intensities.
- VirtualGenerators: correct invalid PatientOrientation metadata.
- ModifyImageMetadata: allow modification of image spatial characteristics.
- GenerateSyntheticImages: bug fix: make metadata optional.
- Avoid null deference when no contours are loaded.
- GenerateSyntheticImages: bug fix: stringify metadata ints.
- LoadFiles: added operation for on-the-fly file loading.
- VolumetricSpatialDerivative: switch to pre-indexed trilinear interpolation.
- VolumetricSpatialDerivative: added non-maximum suppression for 3D derivatives.
- VolumetricSpatialDerivative: separate end-user-callable operation from implementation.
- DetectGrid3D: added support for PLY file writing.
- Added operation to imprint images with point clouds.
- Added read support for ASCII XYZ point cloud file format.
- Added routine for more easily creating test images.
- Structs: enable point_data copying for Drover class.
- DroverDebug: add image modality and min/max pixel values.
- DroverDebug: add point clouds to debug operation.
- WebServer: improve clarity of user-facing parameters.
- Add a customized reduced-memory CMake option.
- Hide shared template functions rather than expose them directly.
- ConvertPixelsToPoints: added routine for generating point clouds from images.
- Docker: base/archlinux -> archlinux/base.
- Add support for CI (Travis).
- Partial switch from std::regex() to more homogeneous Compile_Regex().
- Recognize RTRECORD file signatures.
- Breaking change: removed Dose_Arrays in favour of Image_Arrays.
- SupersampleImageGrid: support for 3D supersampling.
- CompareVoxels: elaborate DTA and discrepancy computations.
- ComparePixels: support for multipe types of discrepancy.
- PresentationImage: allow specification of colour map.
- Added operation for image slice interpolation.
- Added ability to mimic planes with planar contours.
- Explicitly indicate Drover serialization version.
- Break-out operations created for image detection functionality.
- Added script for easy syntax checking.
- Added operation for generating calibration curves.
- ReduceNeighbourhood: added NaN replacement variants.
- ReduceNeighbourhood: support for logical filters (is_min, is_max).
- Added 3D voxel neighbourhood sampler.
- Added an isotropic remeshing routine.
- MarchingCubes: handle inconsistent contour orientation and spacing.
- Surface Dose Sampler: switch to Surface_Meshes Marching Cubes implementation.
- Added a Marching Cubes surface generator.
- CompareImages: Migrate to Ygor image 3D adjacency routines.
- CompareImages: replace R*-tree approach with grid-traversal.
- ThresholdImages: fix threshold inclusivity.
- Added basic man page render of reference guide.
- Added script to compile documentation to pdf and html.
- Added html and pdf versions of documentation.
- Added snapshot of documentation.
- Revamp runtime documentation.
- Added rudimentary shell tab completion.
- RankPixels: added operation for ranking pixel values.
- Added script for bundling dispatcher binary and necessary shared libraries.
- Added routine for negating image pixel values.
- Boost Serialization: switch from binary to XML by default.
- DetectShapes3D: add WIP clustered RANSAC detector for planes and spheres.
- WebServer streamlining.
- DoseDecay: switch to planar inclusive catchment by default.
- DoseDecay: add a mask channel to avoid re-decay in multi-pass workflows.
- OrderImages: added a robust image sorter.
- GroupImages: added two logic-based grouping options.
- Added regex selector inversion.
- RTDOSE export: ensure UIDs do not have leading zeros.
- ThresholdImages: reduce verbosity.
- Increased flexibility in image selection.
- Added image thresholding operation.
- Edge-detection: added non-maximum suppression to thin edges.
- Added support for upstream vertex collapse contour simplification.
- Radiomics: add a simplified interface for web.
- Gracefully handle REG-modality DICOM files.
- Surface Meshing: default to reasonable criteria to avoid ambiguities.
- Added contour simplification operation.
- Radioimics: added additional morphology features based on surface meshed ROIs.
- Added perimeter-based contour features.
- Validation of select distribution-based statistical radiomic features.
- Limit number of concurrent build jobs to reduce memory usage.
- Honour TreatAsEmpty regex selector option.
- Added convenience script for remote building.
- Added 3D surface-based inset, outset, and shell operations.
- Static beam optimizer: switch from hypersphere-constrained parameters to direct hyperplane parameters, constrain beam weights to the coordinate n-sphere cartesian coordinate sector, improve transparency and reporting.
- Field-weight optimization: permit run-time parameter tweaking.
- Switch docker base from Debian to Arch Linux to access newer upstream packages.
- Support subtraction of arbitrary images, if necessary.
- Support for surface mesh processing.
- Switch from deprecated CGAL routine.
- Protect against incomplete data and when zero junctions detected.
- Permit inexact decimation factors.
- Added partial support for Boolean negation.
- Expose EQD2Convert operation to web server.
- FVPicketFence: swap autocrop and pixel crop.
- AutoCrop: account for non-identity SAD-to-SID scaling.
- Protect against degenerate contours.
- Added dual operation to TrimROIDose.
- Only show hover info on parameter name column.
- Added image array subtraction operation.
- Added operation to delete image arrays.
- Respect the tag element count.
- Added TemporalPositionIndex DICOM tag to dictionary.
- Renamed default PACS file store location.
- Support for non-default DB store locations.
- Added an operation for static beam optimization.
- Simplified ROI dose trimming operation.
- Added multi-stage Picket Fence analysis operation.
- Added centroid-based selectors for ContourVote operation.
- Sub-segmentation: permit specification of bisection stopping parameters.
- More clearly documented OBJ/MTL contour export operation.
- Picket Fence: provide threshold boundaries as a contour, added contours for detected peak locations.
- Picket fence: added a summary file for quick inspection.
- Picket fence: project analysis results onto isoplane.
- Added image grouping operation.
- WebServer: layout updates using CSS animations, exposed operation descriptions.
- Translated in-source operation descriptions to runtime documentation functions.
- Plumbing for RTIMAGEs with z!=0 and dz!=0.
- Disallow explicit rescaling for RTDOSE exports.
- More clearly differentiate anonymization levels in the source.
- Default to more obviously phony date for missing/anonymized RTDOSEs.
- Feed Imebra correct FrameIncrementPointer value.
- Basic support for concealing parameters from user-facing interfaces.
- Added explicit dependencies for building.
- Added additional boost library dependencies.
- Added temp file suffixes.
- Picket fence: explicitly colour junction contour lines to avoid colour clash, crop line contours to the provided image.
- Remove unnecessary termination points and irrelevant metadata lookups.
- Fix infinite loop when loading a bad DICOM image file.
- Fix setColor() SFML deprecations.
- Harden against missing contour metadata.
- Added a slew of named colours.
- Refined MLC model selection for picket fence analysis.
- Added contour metadata injection operation.
- Added simplistic screenshot extractor.
- Handle special case where all voxels are exactly zero.
- Added an operation to apply arbitrary calibration curves.
- Genericized HighlightROIs YgorFunctor.
- Mass header cleaning using include-what-you-use.
- Workaround for libc++'s std::optional::swap.
- Fixed UB in old Imebra code.
- Removed several unnecessary std::move (-Wpessimizing-move).
- Let the user opt-out of interactive plots.
- Added sanity check for images with volume.
- Added light-rad analysis edge visualization.
- Added basis spline peak-finding.
- Light-rad field coincidence analysis operation completed.
- Added autocrop operation using per-image metadata to crop.
- DICOM reading: added support for nested sequence items.
- Added free-form image cropping operation.
- Added percentile-based contour thresholding.
- Added multi-sequence metadata support for deeply nested DICOM tags.
- Split edge detection routine into two parts.
- Indicate invalid plots more clearly.
- Added an operation for selecting a contour via various criteria.
- Completed percentage-based contouring.
- Added relative contour by threshold capabilities.
- Added a cyclic colour map for viewing gradient orientation angles.
- Support for 5x5 variants of the Sobel and Scharr derivative estimators.
- Reoriented gradient orientations for consistency.
- Added pixel sharpening operator.
- Imbued LogScale operation with an image selector.
- Exposed new upstream blur convolution-based estimators.
- SFML_Viewer: indicate where the mouse is in sub-plots.
- Overhauled row, column profiles in the SFML-based viewer.
- Permit selection of first image in an array.
- Support additional upstream derivative estimators for edge detection.
- Auto-compile without CMakeCache invalidation.
- Removed audio from SFML-based viewer.
- Generalized partial derivative imaging functor for edge detection.
- Added WIP edge detection operation.
- Removed hard-coded gcc-isms.
- Added image metadata insertion operation.
- Added contour simplification pass.
- Permit display of contours that extend beyond image bounds.
- Added metadata to generated contours.
- Many clang-tidy modernizations.
- Patched in-tree Imebra to rid auto_ptrs.
- Added a new, standalone DVH routine.
- Migrated to libWt v4.
- Updated CGAL header name changes.
- BED: added a longer description for an alpha/beta parameter.
- Removed BED from TCP/NTCP evaluation operations.
- Added explicit EQD2 conversion operation.
- Added image sampling routine to the SFML_Viewer.
- Protect against empty dose arrays.
- Added UserComment column to all recent evaluation operations.
- Avoid NaN contamination in LKB NTCP model.
- Exposed dose melding operation.
- Webserver displays generated CSV files.
- Added mimetypes to file OptArgDocs.
- Added a from-scratch window update routine.
- Added a routine to read standard (uint8_t-typed) FITS images.
- Added operation for reporting dose-volume statistics.
- Changed behaviour for missing ROI NormalizedROINames in Boolean operation.
- Added support for new YgorImages voxel iteration wrapper routine.
- WIP implementation for direct contour growth.
- Added a routine for explicit contour seaming.
- Webserver: added support for multi-pass operations.
- Added a 'paranoia' mode for dose export.
- Added a virtual dose data generator.
- Added paranoid mode for RTDOSE export.
- Bug fix: erroneously used hypothetical course 2 fractionation for course 1 BED conversion.
- Implemented a NTCP models operation.
- Added the Fenwick TCP model.
- Added a contour-based Boolean function operation using CGAL.
- Added CMake-sanctioned pthreads flags.
- Added image --> dose conversion routine.
- Added two temporal dose decay models for re-irradiation dose estimates.
- Added utility file for dose <--> BED conversion.
- Recognize but skip over RTPLAN files and emit warning.
- Strip executables and shared libraryies for Debian packages to reduce excessive binary sizes.
- Improved support for foreign FITS files.
- Added option for voxel inclusivity tweaking.
- Bump from c++14 --> c++17.
- Capped dose_scaling.
- Dead code elimination.
- Completed simplistic, constrained RTDOSE export routine.
- Extended functionality of Highlight images functor and created standalone operation for it.
- Added gnuplot optional dependency.
- Added font dependencies.
- Clarified that YgorClustering is a header-only library dependency.
- Cleaned up PKGBUILD.
- Removed some auxiliary analysis files.
- Small changes for segmentation visualization.
- Added a backup font found on a Debian installation.
- Added Debian packaging scripts (via CPack).
- Added ROI exclusion capability.
- Added pixel stats reporting for the working contour ROI.
- Fixed race condition.
- Made ContourWholeImages operation tolerant of spatially overlapping images.
- Added whole-image ROI generation.
- Added a custom colour map.
- Added on-the-fly colour mapping.
- Toned down NaN colouring.
- Added empty image_array pruning operation.
- Added a no-op option for easier script tweaking.
- Use contour colour to convey contour orientation.
- Added rudimentary contour-via-pixel-threshold operation.
- Added SNR computations for comparison purposes.
- Fully pruned CSVTools dependency.
- Removed old, unused code causing unspecified custom library dependencies.
- Added output file options for surface-based ray casting operation.
- Added safer internal-to-ROI check for surface seed point.
- Exposed surface-based ray casting operation options to the user.
- Added trilinear interpolation to surface-based ray casting computation.
- Surface-based ray casting: only consider a single ray intersection.
- Made pacs_ingress safer to use on duplicate files.
- Added a rudimentary pop-out realtime plotting window.
- Additional ROI topological/morphological data in dumps.
- Disabled non-critical computations in surface mesh dump operation.
- Added a voxel stats dump operation.
- IVIM/ADC tweaks.
- Operationalized many existing sub-operations.
- Added sub-segment area logging for sub-segmentation routine.
- Provided an option to forgo dumping of voxel distributions.
- Moved 'usemtl' specification prior to vertices to accomodate evrtex colouring.
- Converted ROI contour dumping to export Wavefront OBJ files.
- Added a routine for dumping ROI contours.
- Purged old CSVTools, Demarcator, and Distinguisher references from modern executables.
- Added supersampling and blurring to raster grid surface map.
- Added a standalone FITS file loader for easier viewing.
- Decoupled grid-based ray casting surface raster grid voxel size from ray source/detector grid size.
- Added an ROI-based cropping routine. Added to van Luijk script.
- Added supersampling pre-processing step to sub-segmentation script.
- Separated bisection and sub-segmentation to more easily switch sub-segmentation schedule.
- Improved bisection reporting and added a script for viewing multiple sub-segmentations.
- Improved stewardship of file-based loaders.
- Added additional sub-segmentation to van Luijk operation.
- Added a boost.thread and asio based thread pool to improve grid-based ray casting throughput.
- Converted grid-based surface mask construction to use simple parallel for-loop.
- Converted ray-casting to use simple parallel for-loop.
- Separated surface mask grid creation from ray casting source+detector creation.
- Added a routine for generating a surface mask (and interior mask) over an image grid.
- Made 'van Luijk' subsegmentation selection extents less sensitive to numerical issues.
- Reverted PACS_Loader to load dose files as Dose_Arrays, not Image_Arrays.
- Added basic DICOM file loader based on PACS loader.
- Added a lexicon building operation.
- Fixed bug in which clustered surface mesh facets' clusters were not reported correctly.
- Added runtime parameters to control fast, approximate Chebyshev multiplication.
- Updated post-computation model evaluation for 1C2I model Reduced3Param.
- Added CXX_FLAGS needed for CGAL (-frounding-math) and others to improve compiler optimization.
- Another hierarchial rename. Added Reduced3Param variant of 1C2I model (no gradient yet!).
- Hoisted a deserialization outside of a loop.
- Added a post-modeling parameter dumping routine.
- Added a Levenberg-Marquardt-based direct linear interpolation variant of the 1Compartment2Input_5Param model.
- Exposed B-spline and Chebyshev coefficient totals as runtime parameters for level-of-detail adjustment.
- Added B-spline interpolation for AIF and VIF approximation.
- Basic support for storing model state with parameter maps.
- Streamlined pre-pharmacokinetic modeling AIF & VIF plotting.
- Factored some similar plotting routines together.
- Added pre-pharmacokinetic modeling AIF and VIF plot popup.
- Added runtime ROI selection for Cheby-based pharmacokinetic modeling.
- Added runtime plotting specification to pharmacokinetic modeling operation.
- Clean-up of GSL modeling routine.
- Completed 5Param Chebyshev Least-Squares modeling via Levenberg-Marquardt in GSL.
- Improved linear (non-Chebyshev) perfusion model optimization stopping criteria.
- Wrapped plotting calls with fork() to improve stability.
- Added another optimization criteria.
- Removed possibly misleading vestigial code.
- Added an ROI-based slice selector for pruning image slices.
- Made example values more explicit for disabling pre-analysis decimation.
- DVSM: updated minetest skeleton location.
- Added a dry-run mode for the ingress tool.
- Migrated CGAL code to CGAL>=4.8, addressing breaking API changes.
- Decoupled contour resolution from image pixel size, fixed is-cursor-in-contour bug.
- Added dependencies to the PKGBUILD.
- Added support for computing centroids for CGAL surface mesh polyhedra.
- Added per-ROI dose info dumping.
- Changed regex type from grep to extended POSIX throughout code base.
- Attempted to improve surface meshes by emulating planar contour extrusion with point set techniques.
- Added CGAL Scale-Space Surface Reconstruction operation.
- Added standalone operations for Max-Min pixel filtering, ROI time course plotting, and image copying.
- Added workaround for reading NaN and +-Inf in Boost.Serialization text and xml formats.
- Completed support for Boost.Serialization of the Drover class.
- Replaced Protobufs with Boost.Serialization.
- Created stubs for serialization, separated into a new file.
- Renamed 'Analyses' to 'Operations' where applicable to be more accurate.
- Added a default, reasonable .clang-format file.
- Major refactoring to decouple invocation handling, file loading, analysis dispatch, and analysis.
- Removed rarely-used but pervasive verbosity mechanism using awkward global state.
- Added support for image modality 3D rotation.
- Added explicit image reordering after modeling for improved viewing.
- Applied tweaks from 3-parameter testing to the 5-parameter perfusion modeling routine.
- Partially converted many image processing tasks to parallel execution.
- Added a work-around for recurring inconvenience regarding DICOM pixel mapping.
- Optimizer tweaking and transparency improvements.
- Added plotting capabilities to perfusion modeled pixels for in-situ inspection.
- Incorporated pixel decimation into the CT liver perfusion modeling routine.
- Added pharmacokinetic modeling library sources.
- Added pixel decimation to do block-wise spatial pixel aggregation.
- Bug fix. Supersampled pixel 3D offset was not properly set.
- Split (some) pharmacokinetic modeling into separate library.
- Removed vestigial files from years ago.
- Added a more focused metadata dumper for image registration and non-DICOM image viewers.
- Added ability to call a modified Minetest for contouring purposes ("DVSM")
- Tweaked orthogonal view defaults; added filters for new data; added an executable.
- Simplified YgorImage_Functor image description and window centre/width updating and Liver Perfusion map generation.
- Added support for custom display window centre and level.
- Added a proper orthogonal slice functor. Required modifications in Ygor.
- Implementation error: incorrect integral manipulation fixed.
- Migrated from hand-made Makefiles to CMake.
- Liver perfusion functionality enhancements.
- Migration to git.