HomePhabricator
Diffusion MITK 4cc93539239d

2020 Week 25 (Late June)

Authored by kislinsk on Mon, Jun 29, 10:53 PM.

Description

2020 Week 25 (Late June)

The following - possibly updated - changelog can be viewed as formatted
article at https://phabricator.mitk.org/w/mitk/changelog/2020.25/.

NOTE: This is the first merge back from the develop branch into the master branch since we introduced git-flow. These merge commits will be accompanied by curated changelogs. As it is the first changelog, it reflects everything noteworthy that happened since April 2018 that was not already part of the last MITK release v2018.04.2. Over 400 tickets were resolved in that time, hence we focus on the highlights and breaking changes including migration hints.

🛠 Third-party dependency changes

Several dependencies were upgraded to newer versions, removed, or introduced:

DependencyOld versionNew version
Boost1.681.70
cpprestsdk2.10.10
CMake3.103.14.5
CTKfc06bedc (Aug 10, 2018)78341aba (Dec 07, 2019)
DCMQId067f81c (Jun 26, 2018)ea4f0809 (Jan 23, 2020)
DCMTK29f9de10 (Jun 15, 2018)3.6.5
GDCM2.6.33.0.4
freeglut2.8.1
ITK4.13.1e53d1d94 (May 22, 2020)
MatchPoint24ef6072 (Apr 13, 2018)f2a64255 (May 02, 2019)
OpenCV3.4.13.4.8
OpenIGTLink54df50de (Aug 21, 2014)3.0
Qt5.11.15.12
Raptor2.0.15
Rasqal0.9.32
Redland1.0.17
SimpleITK9d510bef (Mar 1, 2018)
zlib66a753051.2.11

✨ New features

New selection concept and UI

The QmitkNodeSelectionDialog is the main widget to be used to select data nodes from the data storage. It is a popup dialog that can be included in any other widget, such as the QmitkSingleNodeSelectionWidget or the QmitkMultiNodeSelectionWidget. It uses a tab widget that holds different data storage inspectors. A data storage inspector shows the (possibly filtered) data nodes of the data storage and allows to select one or more nodes. The selection can be accepted inside the node selection dialog and it is then sent to the including widget.

Screenshot of a selection dialog

Generally, the selection mechanism was designed to be a local selection mechanism per default. Local means that any selection is only valid for the including widget, view, or plugin. However, it is possible to use a QmitkModelViewSelectionConnector and a QmitkSelectionServiceConnector to connect the global selection bus to the selection model of a widget. There are two different modes:

  • SetAsSelectionProvider allows to send a model selection that has been sent by QmitkModelViewSelectionConnector::CurrentSelectionChanged()
  • AddPostSelectionListener allows to receive a bus selection that was received by QmitkModelViewSelectionConnector::SetCurrentSelection()

For an example, see QmitkDataStorageViewerTestView.cpp. More information will be available on the MITK developer manual concepts page (T24771).

New image statistics (preview)

The image statistics (ImageStatistics and ImageStatisticsUI modules as well as the QmitkImageStatisticsView provided by the org.mitk.gui.qt.measurementtoolbox plugin) have been refactored on both the back end and the front end. The rework is not yet finished as the current state just ensures that we have no regression. It does, however, already reveal the potential of the new infrastructure.

More details can be found in T27510: [MITKDoc] Add/revise developers documentation for new statistics back-/frontend.

Back end

Statistics results are now stored (as by default hidden helper objects) in the data storage. They are reused to reduce the number of recalculations. The statistics are attributed with meta information regarding the computation (e.g. number of bins or “ignore zeros”), but also the state of computation (e.g. if it is pending or up-to-date). They are also associated with the data source (e.g. image and segmentation) by a StatisticsToImageRelationRule and StatisticsToMaskRelationRule. The generation is supported by the newly introduced class “family” based on QmitkDataGeneratorBase, e.g. QmitkImageStatisticsDataGenerator ensures up-to-date statistics for any specified image-mask pair.

Some of the benefits of the new back end are:

  • Statistics are faster now (in particular for large masks or 3d+t images) as calculations are cached and can be reused
  • No more superfluous recalculation for the same image or image-mask pair
  • The generation of statistics and its usage can be decoupled, so the same statistic can be used by several views
  • The generation of statistics is efficiently threaded in the background
  • The infrastructure will be able to unify similar types of calculations (e.g. dose statistics for radiation therapy)
  • The introduction of the generation status allows UIs to be more responsive

Front end

The Image Statistics view now uses the new QmitkImageStatisticsTreeModel in conjunction with Qt views to show statistic results. QmitkImageStatisticsTreeModel monitors the data storage and reacts to any change of statistics objects in the storage. It allows a representation of the data similar to the old statistics tables. In the future, the view-model concept will allow to represent the statistics data in a more flexible way (e.g. one specific statistic value like mean, images as rows and masks as column).

Some benefits of the new front end are:

  • It is now possible to display the statistics of multiple images at once
  • Statistics are generated for all selected image-mask pairs with congruent geometry
  • The statistic values are now displayed in a table instead of a list and can be directly copied to spreadsheet software like Microsoft Excel
  • Outdated values (e.g. because of a planar figure was moved or a segmentation was modified) are now highlighted and automatically updated
  • The UI of the histogram has been improved and is now aware of the application theme

DICOM image reader

  • The DICOM image reader only reads DICOM files that are in the same image block as the selected file, instead of loading all image blocks of the containing directory. For example, drag'n'dropping a DICOM file into the MITK Workbench will only load the image that the file is part of. Drag'n'drop the directory itself into the MITK Workbench to get the old behavior.
  • The DICOM image reader only condenses images with the same series instance UID into a 3d+t image, instead of condensing everything with fitting geometry. Old behavior can be enabled by setting onlyCondenseSameSeries to false in your configuration XML or through the SetOnlyCondenseSameSeries() method of ThreeDnTDICOMSeriesReader.
  • The DICOM image reader now stores meta data about the reading process in loaded data instances to improve provenance tracking of processed data. The following information is stored:
Property nameDescription
MITK.IO.reader.DICOM.configurationPath to the property containing the name of the DICOM reader configuration used to read the data
MITK.IO.reader.DICOM.filesPath to the property containing the files the dicom reader used in a TemporoSpatialProperty
MITK.IO.reader.DICOM.PixelSpacingInterpretationStringPath to the property containing PixelSpacingInterpretationString for the read data
MITK.IO.reader.DICOM.PixelSpacingInterpretationPath to the property containing PixelSpacingInterpretation for the read data
MITK.IO.reader.DICOM.ReaderImplementationLevelStringPath to the property containing ReaderImplementationLevelString for the read data
MITK.IO.reader.DICOM.ReaderImplementationLevelPath to the property containing ReaderImplementationLevel for the read data
MITK.IO.reader.DICOM.GantyTiltCorrectedPath to the property containing the indicator of the gantry tilt was corrected when reading the data
MITK.IO.reader.DICOM.3D+tPath to the property containing the indicator of the data was read as 3D+t
MITK.IO.reader.DICOM.gdcmPath to the property containing the version of GDCM used to read the data
MITK.IO.reader.DICOM.dcmtkPath to the property containing the version of DCMTK used to read the data

Other readers

  • Meta information about the reading process is now stored in loaded data instances to improve provenance tracking of processed data. The following information is stored:
Property nameDescription
MITK.IO.reader.descriptionPath to the property containing the name of the reader used
MITK.IO.reader.versionPath to the property containing the version of mitk used to read the data
MITK.IO.reader.mime.namePath to the property containing the mine name detected used to read the data
MITK.IO.reader.mime.categoryPath to the property containing the mime category detected to read the data
MITK.IO.reader.inputlocationPath to the property containing the input location used by the reader if loaded by file
MITK.IO.reader.options.*Path to the properties containing the reader options used to read the data

Rendering

  • Depth peeling was reintroduced for 3d renderers (including support for volumes) for highly improved rendering of overlapping translucent objects
  • Anti-aliasing was reintroduced (using Fast Approximate Anti-Aliasing (FXAA)) for all renderers by default. It is managed by RenderingManager. RenderingTestHelper disables anti-aliasing for robust image comparisons in rendering tests.

New apps

  • Fuse3Dto4DImageMiniApp: Fuse n 3d images and fuse them to a single 3d+t image with n time steps
  • FileConverter: Convert data into specific file format
  • ImageTypeConverter: Cast image to another image with different pixel type
  • ResampleImage: Resample image with custom spacing, mapping, and interpolation
  • And many more...

Custom MITK revision description

  • By default, MITK uses the latest Git tag like "v2018.04.2" as revision description in application window titles, about dialogs, and package names
  • This can be overriden by the value of the MITK_CUSTOM_REVISION_DESC CMake cache variable

Auto-cleaning external projects on updates

  • Updates of external projects like CTK, ITK, or VTK were difficult to get right in existing MITK builds as sometimes old build artifacts, header files, or configuration files had to be removed manually to successfully build MITK again
  • The MITK_AUTOCLEAN_EXTERNAL_PROJECTS CMake cache variable was introduced to automate this process, as soon as a corresponding CMakeExternals/*.cmake file was modified since the last build (OFF by default, but highly recommended)

Visual Studio project folders

  • All MITK targets are now categorized in folders like Applications, Modules, or Plugins
  • MITK extension targets have their own root folders

Fixed-size planar figures

  • PlanarCircle and PlanarDoubleEllipse allow the explicit setting of fixed diameters now

Model fitting / pharmacokinetic modelling

  • A simple semi-quantitative 2-step-linear model was added

BaseData: Serialization of unique IDs

Compressed serialization for TemporoSpatialStringProperty

  • The JSON serialization format of TemporoSpatialStringProperty supports compression now
  • Attributes tmax and zmax can be used to indicate that a value is the same for all time points in a slice or for all slices

Rendering tests on headless Linux clients

  • Rendering tests on headless Linux clients can be easily activated with the MITK_XVFB_TESTING CMake cache variable
  • By default, this will prepend testdriver calls with xvfb-run --auto-servernum, resulting in having a virtual frame buffer available for rendering tests
  • On Ubuntu, install Xvfb with sudo apt install xvfb
  • Having a notoriously buggy history on different Linux distributions, the command can be customized with MITK_XVFB_TESTING_COMMAND, to call scripts with alternative names for example

CTest subprojects in MITK extensions

  • MITK extensions can add CTest subprojects through a list called MITK_CTEST_SUBPROJECTS in their optional CMake/CTestSubprojectList.cmake file

Custom multi widget with render window management

🔥 API-breaking changes

Render window names

  • The render window names stdmulti.widget[1-4] were changed to stdmulti.widget[0-3]. For example, the standard 3d render window now is stdmulti.widget3 instead of stdmulti.widget4.
WARNING: This may fail silently as it is only a change of literal strings!

DICOM image reader

  • See the "New features" section above

DataNode

  • The dysfunctional Clone() method was removed from DataNode

Unique ID generation

  • UIDGenerator now uses boost::UUID, making the optional lengthOfRandomPart parameter of its constructor obsolete

Python

  • MITK_USE_Python CMake variable was renamed to MITK_USE_Python3
  • On macOS, CMAKE_FRAMEWORK_PATH can be used to find a specific version of Python

RenderingManager and rendering mode

  • Access to the rendering manager was unified to the static method RenderingManager::GetInstance() (remove any parameters of type RenderingManager from function calls that generate corresponding compiler errors)
  • The rendering mode was removed as it represented different independent concepts (remove any parameters of type BaseRenderer::RenderingMode::Type from function calls that generate corresponding compiler errors)

CommandLineParser

  • CommandLineParser::<Input|Output>File was replaced by CommandLineParser::File

Level window

  • LevelWindowManager::RecaluclateLevelWindowForSelectedComponent() was renamed to RecalculateLevelWindowForSelectedComponent()

QmitkStdMultiWidget and QmitkStdMultiWidgetEditor

  • The level window slider is now controlled by StdMultiWidgetEditor
  • QmitkMultiWidgetLayoutManager was introduced to change the layout of multi widgets. It supports more general layouts and reacts dynamically, depending on the selected/active render window widget. For example, to enlarge a specific render window widget or to move a specific render window to the left.
  • The enum IRenderWindowPartStrategy moved into WorkbenchUtil
  • These methods of QmitkStdMultiWidget were removed:
    • SetWidgetPlaneModeToSlicing()
    • SetWidgetPlaneModeToRotation()
    • SetWidgetPlaneModeToSwivel()
    • SetWidgetPlanesLocked()
    • SetWidgetPlanesRotationLocked()
    • SetWidgetPlanesRotationLinked()
    • EnableStandardLevelWindow()
    • DisableStandardLevelWindow()

Qt-related variables removed from dashboard scripts

  • QT5_INSTALL_PREFIX and QT_BINARY_DIR were removed. Add the Qt path to the PATH environment variable instead. For example, right in the dashboard script like set(ENV{PATH} "$ENV{PATH}...").

Auto-load modules not allowed as link-time dependencies anymore

  • mitk_create_module() and mitk_create_plugin() now ensure that module dependencies are not auto-load dependencies, meant to to loaded only during runtime

Removed modules and plugins

The following legacy modules and plugins were removed without successors:

  • GPGPU
  • PlanarFigureSegmentation
  • RDF
IMPORTANT: MITK Diffusion moved into a separate MITK extension.

Details

Committed
kislinskMon, Jun 29, 10:53 PM
Pushed
kislinskMon, Jun 29, 11:00 PM
kislinskMon, Jun 29, 10:59 PM
Parents
rMITKaf38ac4d8840: Fix StdMultiWidget initialization and add LevelWindowWidget
rMITKc0f884b289ec: Fixed T27406 - TemporoSpatialStringProperty::IsUniform
Branches
Unknown
Tags
Unknown

Merged Changes

This commit merges a very large number of changes. Only the first 50 are shown.
CommitAuthorDetailsCommitted
af38ac4d8840kalali
Fix StdMultiWidget initialization and add LevelWindowWidget 
Jun 19
79cadd0edb2bnolden
Fix CMake variable type of MITK_XVFB_TESTING_COMMAND 
Jun 19
a0144be45fa8nolden
Fix CMake variable type of MITK_XVFB_TESTING_COMMAND 
Jun 19
1cf33a463ff7floca
Segmentation views and statistic views support sub geometries for masks (again) 
Jun 18
7a9970c3d819floca
Fixed reviewer remarks 
Jun 18
85c89861cb84kislinsk
Enable depth peeling only for 3d renderers 
Jun 17
3ad9deb24f36kislinsk
Disable depth peeling if renderer type changes to 2D 
Jun 17
44982e574823kislinsk
Enable depth peeling only for 3d renderers 
Jun 17
517a7de4e260kislinsk
Fix Visual Studio 2019 v16.6 compiler warnings/errors 
Jun 17
5e75dcd741cfkislinsk
Fix Visual Studio 2019 v16.6 compiler warnings/errors 
Jun 17
93a367e3566akalali
Fix StdMultiWidget initialization and add LevelWindowWidget 
Jun 16
7a9446c8d4e2floca
T24302 - persist ID of Identifiable 
Jun 15
6f77474e0780floca
BREAKING. Fixed review remarks. 
Jun 15
3cf5a6d0162bkompan
Rename "Using T1 map"-related UI entries to more specific variable flip angle… 
Jun 9
cdaeb282cfa4floca
Fixed gcc error unused variable 
Jun 8
5dcbe97689cffloca
Fixed gcc error and added test for NodePredicateSubGeometry 
Jun 8
ae05e678acfdthomass
<<Allow 4D image handling in Boundingshapecropper> 
Jun 8
258d5a9048e1kompan
Rename "Using T1 map"-related UI entries to more specific variable flip angle… 
Jun 8
b57719b8a6a2floca
Fixed errors/warnings in statistics view 
Jun 7
662e45c18578floca
Fixed T27488 
Jun 7
213a7ccfdcb0floca
Fixed T27467 
Jun 7
f0b1443d965bfloca
Fixed T27466 
Jun 7
b585543dbe5fkompan
Remove errorMessageLabel and label_4. 
Jun 5
c615c144ad47kompan
Merge branch 'T27023-MRPerfusion-ChangeTitleOfModelSelection' into develop 
Jun 5
6a3ea89dafb4kislinsk
Allow parallel use of segmentation and multilabel segmentation 
Jun 4
c9a6e52b46a1kislinsk
Allow parallel use of segmentation and multilabel segmentation 
Jun 4
c7ee88da8242kislinsk
Hide interpolation widgets 
Jun 3
4d62dc9820f4kislinsk
Hide interpolation widgets 
Jun 3
a3d2e8fb0144floca
Fixed T23741 
Jun 2
7cfb5d5d7209floca
Fixed T27259 
Jun 2
6e66c957ba95floca
Fixed review remarks 
Jun 2
efba18f80b67floca
Fixed unit test for T27200 
Jun 2
0c760db11818floca
Fixed typo 
Jun 2
827181f9372dkislinsk
Add more configuration values to .arcconfig for convenience 
Jun 2
988886adccaekislinsk
Add more configuration values to .arcconfig for convenience 
Jun 2
9947847e72e7floca
Addapt usages of UIDGenerator to changed GetUID interface. 
Jun 1
bf3c553ec3c4floca
Added support for Identifiable UID in MAPRegistrationWrapper(IO) 
Jun 1
88d7f656e5c1floca
Added UID serialization support for scene serialization 
May 31
b2fa1a668385floca
Added UID serialization support for LabelSetImageIO 
May 31
3a0148329867floca
Added UID serialization support for ItkImageIO 
May 31
54790aa7c230floca
Added more information according the persistance of mitk::Identifiable UIDs. 
May 31
f3fa7f7ca0b9floca
Fixed T23741 
May 31
e3a8abadeb43floca
Fixed unit test for T27200 
May 30
75fbc50c2cfefloca
Fixed gcc error. 
May 29
b2ef9c47e971floca
Fixed T27259 
May 29
1bab67a27d3dfloca
Fixed T24144 by migrating 2-step-linear model 
May 29
5317a6b4c554floca
Fixed T26979 
May 29
f24add379fc6floca
Optimized parameter settings layout for contrast conversion 
May 28
31021942ae26floca
Fixed review remarks 
May 28
ef453c4b061efloca
Fixed T27444 - Crash in manipulator 
May 27