CamiTK 5.0.2

What is new in CamiTK 5.0.2

This is the release notes for CamiTK 5.0.2

CamiTK 5.0.2 comes with

Thanks to all the direct contributors (committers and issue submitters) and to everyone who gave this project financial, moral or any other kind of support!

Note for developers

please check the detailed migration guide (but don’t worry the API did not change that much).

CamiTK 5.0 teaser

CamiTK 5.0 stats

  • 483 commits
  • 1375 files changed, 253797 insertions(+), 30288 deletions(-)
  • 83 merge requests
  • from 5 contributors (commiters) and more (bug reports)

What OpenHub says about CamiTK

This is an independent review of our code base (click on the links for more information)

New website

This new CamiTK website was completely rewritten from scratch using a static generator:

  • its structure is modern, reactive and comprehensive: it is organized in 7 clear sections (about, community, support, news & release, download, documentation and API documentation)
  • it has an improved presentation of what is CamiTK, explaining the end-user application and framework separately
  • it contains all the documentation previously available in the so-called “wiki” part and all the API documentation
  • the documentation is now fully structured with sections, step-by-steps and a logical learning progression
  • a search box is available on the top right to search an information on the entire website including all the documentation (just type in something and press enter). Note that it is using a local search engine.
  • it is a static web site generated thanks to the Docsy theme of Hugo
  • it is written in MarkDown
  • all the website source is available on the corresponding gitlab project and open to contributors

The Docsy Hugo theme allows us to focus on then content, not on reinventing a website infrastructure from scratch. That’s really similar to the way the CamiTK team feel about prototyping software! But it also deliver the source to anyone who would like to contribute without needing any specific language knowledge (if you don’t know MarkDown, don’t worry, it is self explanatory).

For instance: you see something that you can improve in this page: just click on Edit this page in the top right corner, edit the source, commit and that’s it your contribution will appear here in the next hourly update…

New features

Viewer extension framework

The main new feature of CamiTK 5 is the viewer extension. Viewers are now first class extension in CamiTK.

For users:

  • in CamiTK-imp the central viewer can be customized at any time. CamiTK-imp will remember the user preferences.
  • a new Bitmap viewer is available in CamiTK-imp that improve 2D images visualization (3D rotations are blocked and image is flipped automatically)

For developers:

  • all viewers previously available in CamiTK core are now available as extensions. A new CamiTK extension can easily include a new instance of an existing viewer extension class or use a default instance.
  • you can now develop new viewers quickly and efficiently. All new viewer extensions will be automatically integrated and available in applications (e.g. CamiTK-imp) as are new action and component extensions.
  • you can now very easily integrate existing viewer into a new viewer (e.g. a new 3D + bitmap viewer for instance)

As this changes the viewer management API, we encourage you to check the detailed migration guide (but don’t worry the API did not change that much)

Click to see some C++ example code.

This is an extract of the Bitmap class provided in the SDK. The Bitmap class inherits the provided generic class InteractiveViewer. It restricts the default InteractiveViewer behavior to display 2D images with a gray background and parallel projection.

BitmapViewer::BitmapViewer(QString name) : InteractiveViewer(name, InteractiveViewer::SLICE_VIEWER) {
    // 2D images need x right, y up, z front
    getRendererWidget()->setCameraOrientation(RendererWidget::RIGHT_DOWN);
    // no decoration and grey background
    getRendererWidget()->toggleOrientationDecorations(false);
    getRendererWidget()->setGradientBackground(false);
    getRendererWidget()->setBackgroundColor(0.8, 0.8, 0.8);
    // parallel projection
    getRendererWidget()->getActiveCamera()->ParallelProjectionOn();

    // can only display 2D bitmap = SingleImageComponent
    setComponents(QStringList() << "SingleImageComponent");

    setDescription("BitmapViewer is a simple 2D image viewer");

    ...
}

(more details in merge request !147 issue #98 , merge request !145 issue #100 issue #102 , merge request !144 issue #94 , merge request !141 issue #92 issue #92 issue #93 issue #32 , merge request !137 , merge request !132 , merge request !124)

Arbitrary orientation in 3D volume

This features allows the user to create a slice in a 3D image of an arbitrary orientation. With this feature, the visualization of a 3D image is not limited anymore to orthogonal axial, coronal and sagittal slices.

The GUI allows the user to interact with the arbitrary orientation by modifying any of the degrees of freedom (3 rotations, one translation) in order to position the arbitrary slice anywhere in the volume.

The GUI also allows the user to visualized the arbitrary slice in 3D only, in the medical image viewer or in the dedicated arbitrary slice viewer. Check the new “View → Arbitrary Slice” action!

(more details in merge request !136 issue #61)

Mesh projection

This new action adds the visualization of the contour of a mesh onto a 3D image. This action creates mesh contour in the direction of the axial, coronal, sagittal and arbitrary slices and “project” them in the 3D and 2D viewers.

This action takes into account the frame framework of the slice and mesh.

To try it open the sinus test data (image and mesh), right-click on the mesh in the explorer and choose “View → Mesh Projection”.

(more details in merge request !170)

…and 10 other new features

CamiTK 5.0 also

Code quality and devops improvements

Updated dependencies

Most of CamiTK 5.0 dependencies were updated:

  • Win7 → Win10
  • CMake 3.2 → 3.13 (min, 3.17 supported)
  • Qt 5.3 → 5.11 (min, 5.15 supported)
  • VTK 6 → VTK 7.1 (min, VTK 8 supported)
  • ITK 4.12 (min, ITK 4.13 supported)
  • gdcm 2.8 (min, 3.0 supported)

Check the full support policy documentation for more information.

(more details in merge request !179 issue #117 , merge request !147 , merge request !119 , merge request !155 issue #108 , merge request !135 , merge request !134 , merge request !133 , merge request !120 , merge request !107)

Updated toolchain

CamiTK is now compatible to C++14 and C++17 standards. Three compilers were tested successfully :

  • gcc 8 and 9
  • clang 11
  • MSVC++ 14.26
Note for developers

Only C++14 standard is enforced as precompiled xsd cxx used on Win10 platforms generates auto_ptr depreciation errors when standard is set to C++17

(more details in merge request !181)

Improved Continuous integration

Our gitlab continuous integration was also largely improved

  • All continuous integration is now using docker images (even on Windows 10/11!). This facilitates deployment and reuse as well as allow any developer to reproduce the same continuous integration system. You can download the windows docker image in our gitlab container repository
  • failed test are reran during the same pipeline to avoid false positive
  • and much more…

(more details in merge request !164 issue #115 , merge request !150 issue #97 , merge request !149 , merge request !146 , merge request !109 , merge request !105 , merge request !104 issue #80 , merge request !103 issue #79 , merge request !100)

Multi-arch support

On Linux, we added multi-arch support. This means means that if you are not using Debian or Ubuntu, there is a great chance that you will be able to build and install CamiTK easily. This also means that processors other than x86-4 (aka amd64 x64 or Intel 64) can also be used if the dependencies are available.

(more details in merge request !183 issue #125 , merge request !172 issue #123 , merge request !156 issue #109)

Improved code quality

CamiTK Community Edition source code quality for also improved thanks to static analysis and various code cleaning, mainly:

  • Compilation with three different compilers and -Wall (all warnings flag)
  • clang-tidy
  • cppcheck
  • clazy

(more details in merge request !181 , merge request !130 , merge request !129)

Other quality improvements

We also took care of other various things in order to improve the quality of the code base

Bug Fixed

We also fixed bugs reported by developers or users

Full list of merge requests

64+ Merged Requests (July 2018 - May 2021)

Date Title Description Tags Link
May 2021 Resolve "Packaging configuration does not define Core::libDir" Closes #125 Bug Confirmed Track Dev Support Details
May 2021 Update copyright year Details
April 2021 Improve source code safety using static analysis Details
March 2021 redirecting post build log to proper log directory Details
March 2021 Resolve "Update upstream-ci/master in order to fix package build" Closes #117 Bug Track Continuous Integration Details
March 2021 Resolve "Update upstream-ci/master in order to fix package build" Closes #117 Bug Track Continuous Integration Details
March 2021 Resolve "Update upstream-ci/master in order to fix package build" Closes #117 Bug Track Continuous Integration Details
March 2021 Resolve "Update upstream-ci/master in order to fix package build" Closes #117 Bug Track Continuous Integration Details
March 2021 Resolve "Update upstream-ci/master in order to fix package build" Closes #117 Bug Track Continuous Integration Details
March 2021 Resolve "Update upstream-ci/master in order to fix package build" Closes #117 Bug Track Continuous Integration Details
March 2021 Prepare packaging of CamiTK 5 Prepare the resolution #117 Details
March 2021 Made CamiTK take into account CMAKE_INSTALL_LIBDIR This should solve #123 Removed all the hard coded "/lib" and replaced them by CMAKE_INSTALL_LIBDIR. Closes #123 Bug Track None Details
March 2021 Resolve "Action Viewer popup selector not working" Closes #124 Bug Confirmed Track End User Experience Details
February 2021 Meshprojection adding long due (slightly modernized) meshprojection action to SDK Details
January 2021 Resolve "The next CamiTK version should be called CamiTK 5.0" Closes #120 Feature Request Details
January 2021 Resolve "Replace Copyright text by a more discrete watermark." Closes #118 Feature Request Track End User Experience Details
January 2021 Resolve "Outdated documentation" Closes #110 Bug Confirmed Next Release Track Dev Support Details
January 2021 Resolve "CMake error when trying to install a CEP dependent on another CEP" Closes #119 Bug Confirmed Track Dev Support Details
January 2021 Resolve "More coherent MISR tutorial actions GUI" Closes #116 Feature Request Track End User Experience Details
November 2020 Resolve "Failed test in action state machine" Closes #114 Bug Confirmed Track Continuous Integration Details
November 2020 Resolve "Pipeline does not detect failed tests" Closes #115 Bug Confirmed Track Continuous Integration Details
October 2020 New action state machine log Closes #113 And also: - offers a new design of the XML viewed in the browsers - embed xsl for modern browser support … Bug Track Debugging Details
September 2020 bug/camitk 4.2 blocking bugs - [X] Compile with VTK > 6 - [x] viewer's extension targets are not exported properly and generate an error Fixes #98 Details
August 2020 Resolve "Camitk-imp crash when "Application-Close" on a component." Closes #111 Bug Confirmed Next Release Track Debugging Details
August 2020 Resolve "Launcher wizard for Action State Machine interface" Closes #57 Feature Request Next Release Track Prototyping Experience Details
July 2020 Resolve "Remove console on windows version of all GUI CamiTK application (camitk-imp, camitk-actionstatemachine, camitk-wizard)" Closes #83 Feature Request Next Release Track End User Experience Track Prototyping Experience Details
July 2020 Camitk now respect CMAKE_INSTALL_LIBDIR when installing Fixes #109 Details
July 2020 Corrected the bug where camitk refused to compile with itk 5. Fixes #108 Details
July 2020 Resolve "Invisible VTK 3D widgets" Closes #105 Bug Confirmed Track Debugging Track End User Experience Details
July 2020 Bug/debian packaging Package build ok, but test in a clean sandbox does not work. Details
July 2020 Resolve "Update CI for packaging" Closes #104 Track Continuous Integration Details
July 2020 Feature/update ci Close #97 Details
June 2020 docker for CI on windows Details
June 2020 Feature/wizard viewer Closes #100 Closes #102 Track Prototyping Experience Bug Confirmed Track Debugging Details
May 2020 feature/gitlab-board-review Update .gitlab/issue_templates/Technical Feature.md Details
March 2020 Suppress useless pointer and add missing this Close #94. Details
March 2020 Feature/viewer extension Closes #91 #92 #93 #32 Feature Request Details
January 2020 Bug/arbitrary slice Closes #61 Feature Request Track Debugging Track Prototyping Experience Details
January 2020 Fix/various small bugs + Slice simplification Details
December 2019 Feature/viewer extension Details
December 2019 Resolve "New way to open DICOM volumes (or other type of directory component) in imp" Closes #56 Feature Request Track Prototyping Experience Details
December 2019 WIP: Resolve "New way to open DICOM volumes (or other type of directory component) in imp" Closes #56 Feature Request Track Prototyping Experience Details
November 2019 Feature/switch central viewer MainWindow's central viewer is now a stack widget This simplify the modification of the central viewer (for … Details
November 2019 NEW feature: ICP parameter GUI + show algorithm information at the end parameters of the vtkIterativeClosestPointTransform are now accessible from the action's GUI Details
October 2019 Problem import DLL windows Closes #88 Bug Confirmed Track Debugging Details
August 2019 Feature/call actions in action demonstrates how to call a pipeline of actions in another one Details
August 2019 FIXED library header installation Closes #87 Bug Details
July 2019 Feature/vtk8 compatibility VTK8 compatibility Details
July 2019 Feature/fix ctest failure This branch fixes inconsistent (and unexplained) random test failures Details
May 2019 Bug/#84 FIXED functions add and remove modified to delete the child components from the maps as well as to delete the components … Details
May 2019 Resolve "CamiTK property of type double limited to int limits" Closes #86 Bug Details
May 2019 FIXED add the name of the produced target variable and specify what it is Just add some information in the CMake macro documentation, nothing fancy... Details
May 2019 Bug/#62 Should close [issue 62](https://gricad-gitlab.univ-grenoble-alpes.fr/CamiTK/CamiTK/issues/62). Details
April 2019 FIXED separating gitlab runner debian stable and packaging now have their own runners on two different VM hosts What happened : At one stage, the VM … Details
March 2019 Feature/vtk7 compatibility The aim of this branch is to provide transparent VTK7 support for the develop branch: - if you have VTK6 installed on … Details
January 2019 bug/xvfb-erratic-access Details
January 2019 Bug/xvfb erratic access Closes #80 (and hopefully closes the bug with it...) Details
January 2019 Bug/gitlab runner breaks ci Closes #79 Details
January 2019 Resolve "change the Q_PLUGIN_METADATA(IID ... string in cep wizzard" Closes #76 Feature Request Track Prototyping Experience Details
October 2018 FIXED continous integration Trying to fix a strange/unexpected regression introduced since branch feature/improve-CI-packaging-log (or introduced by … Details
September 2018 UPDATED improve output of packaging summary Details
August 2018 Debian Packaging Continuous Integration Add debian packaging as a stage of the continuous integration. Should be run regularly (once a week?), not for each … Details
July 2018 Bug/cherrypick debian packaging This are patches generated during the packaging of 4.1.2 for debian And more checks using lintian. Details
July 2018 UPDATED separate test data array (easier to maintain and understand) Details