CamiTK 5.0.2
This is the release notes for CamiTK 5.0.2
CamiTK 5.0.2 comes with
- a brand new web site (click here for all the details)
- 13 new features: viewer extension framework, slice arbitrary orientation, mesh projection, and more… (click here for all the details)
- 10 code quality and devops improvements: updated dependencies and toolchain, improved continuous integration, multi-architecture support, improved quality, and more… (click here for all the details)
- and over 11 bug fixed
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
- improves Lookup Table (more details in merge request !166 issue #116)
- improves Volume Rendering (more details in merge request !166 issue #116)
- improves action state machine (start with no param + XML log rendering + can be opened in browser) (more details in merge request !165 issue #114 , merge request !163 issue #113 , merge request !159 issue #57)
- has more coherent UI (actions and menu reorganization) (more details in merge request !166 issue #116)
- replaces copyright text by a more discrete watermark (more details in merge request !168 issue #118)
- has more compact action viewer GUI (the description, targets and parameters of an action are now displayed as tabs)
- removes console on windows version of all GUI CamiTK application (camitk-imp, camitk-actionstatemachine, camitk-wizard) (more details in merge request !157 issue #83)
- simplifies DICOM opening GUI (automatic select when unique series) (more details in merge request !127 issue #56, merge request !128)
- improves ICP algorithm GUI (more details in merge request !125)
- adds tutorial to demonstrates calling actions from another action (more details in merge request !117)
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)
- cQ and devops improvement: CI for debian packaging (more details in merge request !180 , merge request !174 , merge request !171 , merge request !152 , merge request !151 , merge request !99 , merge request !98)
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
- rewritten outdated API documentation (more details in merge request !161 issue #110)
- updated qtpropertybrowser code (more details in merge request !160 issue #99)
- improved CMake macro documentation (more details in merge request !111)
- improved wizard generated Q_PLUGIN_METADATA merge request !101 (more details in issue #76)
- improved config test (more details in merge request !96)
Bug Fixed
We also fixed bugs reported by developers or users
- Fixed “Action Viewer popup selector not working” (more details in merge request !173 and issue #124)
- Fixed “CMake error when trying to install a CEP dependent on another CEP” (more details in merge request !167 issue #119)
- Fixed “Camitk-imp crash when using Application Close on a component” (more details in merge request !158 issue #111)
- Fixed “Invisible VTK 3D widget” (more details in merge request !153 issue #105)
- Fixed “Bug when there is no plugin to open directory data” (more details in merge request !131)
- Fixed “DLL import missing 3 core classes” (more details in merge request !122 issue #88)
- Fixed “Bug on CEP library install” (more details in merge request !121 issue #87)
- Fixed “Add/remove component child in explorer” (more details in merge request !115 issue #84)
- Fixed “Double property limited to int range” (more details in merge request !114 issue #86)
- Fixed “Manual threshold filter parameter” (more details in merge request !110 issue #62)
- and some others (for instance more details in merge request !183 merge request !182 merge request !97)
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 |