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

CamiTK 5.0 is our first Long Term Support release. It will be updated with patches, but no new features will be added for a while as we are busy with a completely new version. CamiTK 5.0 therefore offers stability for the next three years.

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

72 merged requests between 15 July 2018 and 04 May 2021

Merge Request Id Merge date Title Description Link
183 2021-05-03 Resolve "Packaging configuration does not define Core::libDir" Closes #125... more information
182 2021-05-01 Update copyright year ... more information
181 2021-04-29 Improve source code safety using static analysis ... more information
180 2021-03-19 redirecting post build log to proper log directory ... more information
179 2021-03-18 Resolve "Update upstream-ci/master in order to fix package build" Closes #117... more information
178 2021-03-17 Resolve "Update upstream-ci/master in order to fix package build" Closes #117... more information
177 2021-03-17 Resolve "Update upstream-ci/master in order to fix package build" Closes #117... more information
176 2021-03-17 Resolve "Update upstream-ci/master in order to fix package build" Closes #117... more information
175 2021-03-16 Resolve "Update upstream-ci/master in order to fix package build" Closes #117... more information
174 2021-03-16 Resolve "Update upstream-ci/master in order to fix package build" Closes #117... more information
171 2021-03-15 Prepare packaging of CamiTK 5 Prepare the resolution #117... more information
172 2021-03-15 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... more information
173 2021-03-03 Resolve "Action Viewer popup selector not working" Closes #124... more information
170 2021-02-01 Meshprojection adding long due (slightly modernized) meshprojection action to SDK... more information
169 2021-01-28 Resolve "The next CamiTK version should be called CamiTK 5.0" Closes #120... more information
168 2021-01-19 Resolve "Replace Copyright text by a more discrete watermark." Closes #118... more information
161 2021-01-18 Resolve "Outdated documentation" Closes #110... more information
167 2021-01-14 Resolve "CMake error when trying to install a CEP dependent on another CEP" Closes #119... more information
116 2019-07-02 Feature/fix ctest failure This branch fixes inconsistent (and unexplained) random test failures... more information
166 2021-01-05 Resolve "More coherent MISR tutorial actions GUI" Closes #116... more information
156 2020-07-16 Camitk now respect CMAKE_INSTALL_LIBDIR when installing Fixes #109... more information
165 2020-11-25 Resolve "Failed test in action state machine" Closes #114... more information
164 2020-11-22 Resolve "Pipeline does not detect failed tests" Closes #115... more information
163 2020-10-20 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 (... more information
160 2020-10-01 Resolve "Update qtpropertybrowser" Closes #99... more information
147 2020-09-28 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…

more information
119 2019-07-31 Feature/vtk8 compatibility VTK8 compatibility... more information
158 2020-08-28 Resolve "Camitk-imp crash when "Application-Close" on a component." Closes #111... more information
159 2020-08-25 Resolve "Launcher wizard for Action State Machine interface" Closes #57... more information
157 2020-07-30 Resolve "Remove console on windows version of all GUI CamiTK application (camitk-imp, camitk-actionstatemachine, camitk-wizard)" Closes #83... more information
155 2020-07-15 Corrected the bug where camitk refused to compile with itk 5. Fixes #108... more information
153 2020-07-09 Resolve "Invisible VTK 3D widgets" Closes #105... more information
152 2020-07-07 Bug/debian packaging Package build ok, but test in a clean sandbox does not work.... more information
151 2020-07-06 Resolve "Update CI for packaging" Closes #104... more information
150 2020-07-05 Feature/update ci Close #97 ... more information
149 2020-06-29 docker for CI on windows ... more information
145 2020-06-17 Feature/wizard viewer Closes #100 Closes #102 ... more information
146 2020-05-18 feature/gitlab-board-review Update .gitlab/issue_templates/Technical Feature.md... more information
144 2020-03-13 Suppress useless pointer and add missing this Close #94.... more information
141 2020-03-04 Feature/viewer extension Closes #91 #92 #93 #32 ... more information
136 2020-01-18 Bug/arbitrary slice Closes #61... more information
135 2020-01-13 Bug/gdcm file not found When using GDCM 2.X all goes right with lib names, but not with GDCM 3.X this update add a correction to this problem.... more information
137 2020-01-03 Fix/various small bugs + Slice simplification ... more information
134 2019-12-17 Revert "Merge branch 'Bug/GDCM-File-not-found' into 'develop'" This reverts merge request !132... more information
132 2019-12-16 Feature/viewer extension ... more information
133 2019-12-16 Bug/gdcm file not found ... more information
131 2019-12-13 FIX Bug there is no plugin to open directory data A bug in code indicates gives the fake information that there is no plugin to open a data directory. This was due to bad... more information
130 2019-12-04 FIX Code cleaning ... more information
129 2019-12-03 FIX Code cleanning a little cleaning in the code.... more information
127 2019-12-02 WIP: Resolve "New way to open DICOM volumes (or other type of directory component) in imp" Closes #56... more information
128 2019-12-02 Resolve "New way to open DICOM volumes (or other type of directory component) in imp" Closes #56... more information
124 2019-11-05 Feature/switch central viewer MainWindow's central viewer is now a stack widget

This simplify the modification of the central viewer (for instanc…

more information
125 2019-11-04 NEW feature: ICP parameter GUI + show algorithm information at the end parameters of the vtkIterativeClosestPointTransform are now accessible from the action's GUI... more information
122 2019-10-23 Problem import DLL windows Closes #88... more information
117 2019-08-04 Feature/call actions in action demonstrates how to call a pipeline of actions in another one... more information
121 2019-08-03 FIXED library header installation Closes #87... more information
120 2019-08-01 BUG Fix failed compilation with VTK7 vtkSmartPointer header is needed when using it in code with vtk 7 or 8. This was added for VTK8, I just added for vtk 7.... more information
115 2019-05-30 Bug/#84 FIXED functions add and remove modified to delete the child components from the maps as well as to delete the components... more information
114 2019-05-28 Resolve "CamiTK property of type double limited to int limits" Closes #86... more information
111 2019-05-09 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...... more information
110 2019-05-08 Bug/#62 Should close [issue 62](https://gricad-gitlab.univ-grenoble-alpes.fr/CamiTK/CamiTK/issues/62).... more information
109 2019-04-15 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 s…

more information
107 2019-03-01 Feature/vtk7 compatibility The aim of this branch is to provide transparent VTK7 support for the develop branch: - if you have VTK6 installed on yo... more information
105 2019-01-31 bug/xvfb-erratic-access ... more information
104 2019-01-30 Bug/xvfb erratic access Closes #80 (and hopefully closes the bug with it...)... more information
103 2019-01-30 Bug/gitlab runner breaks ci Closes #79... more information
101 2019-01-25 Resolve "change the Q_PLUGIN_METADATA(IID ... string in cep wizzard" Closes #76... more information
100 2018-10-06 FIXED continous integration Trying to fix a strange/unexpected regression introduced since branch feature/improve-CI-packaging-log (or introduced by... more information
99 2018-09-26 UPDATED improve output of packaging summary ... more information
98 2018-08-02 Debian Packaging Continuous Integration Add debian packaging as a stage of the continuous integration. Should be run regularly (once a week?), not for each comm... more information
97 2018-07-25 Bug/cherrypick debian packaging This are patches generated during the packaging of 4.1.2 for debian And more checks using lintian.... more information
96 2018-07-17 UPDATED separate test data array (easier to maintain and understand) ... more information