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
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 |