Skip to content
master
Switch branches/tags
Go to file
Code

Latest commit

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

NOTE: This is a release changelog. It is composed of a selected short list of highlights since the last release v2018.04.2 - split into dedicated user and developer sections. See the past ten [[mitk/changelog | changelogs]] starting from [[mitk/changelog/2020.25]] for a comprehensive, developer-centric overview of changes.

---

= News for MITK Workbench users =

== In-application help pages ==

We revised all of our in-application help pages and user manuals. Whenever you feel lost or overwhelmed, just press the universal help key {key F1}, to open the help page for the currently active plugin.

{F2104219, layout=center, alt="Press F1 to open a context-specific help page"}

== Segmentation ==

Following MITK v2018.04.2, which put much focus on the segmentation tools, we did not stop for this release and continued to improve our segmentation.

==== Segmenting dynamic patient images ====

Besides many minor bugfixes and new features, we put most of our effort into the robust segmentation of dynamic, time-resolved patient images. A prominent difference to the previous release is the option to create either static segmentations that span over all time steps, or dynamic segmentations that enable individual segmentations for different time steps.

{F2108339, loop, autoplay, alt="Static and dynamic segmentation"}

==== Label set presets ====

You can now share a certain style or scheme for labels between different segmentation sessions (or provide templates for new segmentation sessions) to greatly reduce the time spent for repetitive segmentation tasks.

Properties of labels like their names, colors, and visibilities are saved as label set presets. They can then be applied to any segmentation session. If a label for a certain value already exists, its properties are overridden by the preset. If a label for a certain value does not yet exist, an empty label with the label properties of the preset is created. The actual segmentations of labels are unaffected as label set presets only store label properties.

{F2108428, layout=center}

==== Reduction of segmentation tools ====

We noticed that the 2-d correction tool was rarely used at all. Instead, the add and subtract tools are commonly used to accomplish the same task, so we removed the correction tool to simplify the user interface. Did you already know that you can subtract with the add tool and add with the subtract tool by pressing {key ctrl} while drawing? 💡

We plan to further reduce the number of rarely used tools in the future to streamline the user interface and to make way for fewer but more handy tools. Stay tuned.

== Image Statistics ==

Our image statistics were completely overhauled. They are much more efficient now and reliably cache the results of calculations to increase productivity. Speaking of productivity, it is now possible to display the statistics of multiple images at once, while multiple image masks can automatically be considered. Statistic values can now be copied directly into spreadsheet software like Microsoft Excel.

{F2104149, layout=center, alt="Measurement View and Image Statistics View"}

== Data Selection ==

Data selection is now separate for each plugin, giving you a filtered pre-selection of suitable data for your task. Plugins do no longer interfere with each other through an out-of-context selection in the Data Manager, supporting you in establishing stable workflows. Utilize the favorites or selection history lists to quickly find the data you need in complex projects.

{F1646868, size=full, layout=center, alt="New selection dialog"}

== Visualization ==

We improved the visualization of translucent objects. Also a correct depth perception is now retained in combination with volume rendering (see video below). The visualization in general has a smoother appearance since we use so-called anti-aliasing techniques to reduce jagged pixel edges of objects.

{F1646878, loop, autoplay, alt="Improved visualization"}

== Improved support of DICOM files ==

We have to admit that this went unfortunate for previous releases on Linux and macOS. 🙈

We were always proud of our broad support of DICOM files. Our sophisticated, configurable loading mechanism matured over many years to come up with image blocks in the application even in difficult scenarios, when many other tools failed to deliver. However, it turned out that for quite some years now we screwed up the packaging of our installers without noticing. Hence, your experience on Linux and macOS potentially differed from our expectations and advertisements, as we didn't see any issues in our build versions of MITK.

Well, we are happy to announce that this belongs to the past now. 🎉

We also improved the support of reading specific DICOM image volumes from directories that contain multiple volumes. In the past this sometimes lead to the situation that different series located in the same directory ended up in one dynamic image after loading. Now, only the slices that belong to the same series as the selected file will be loaded. You can still load the whole directory at once when you select or drag'n'drop the directory itself.

== Command-line apps ==

The official installers now come with our most used command-line apps in addition to the MITK Workbench application. Execute them with the `--help` parameter for instructions.

{F2108385, layout=center, alt="MitkFileConverter command-line app"}

==== File converter ====

An incredibly useful and powerful command-line app that supports all file types known to MITK, including DICOM. For example, to convert a DICOM image into a NRRD image, execute:

```lang=bash
$ MitkFileConverter --input my/dicom/series.dcm --output output_image.nrrd
```

==== Image type converter ====

A bit more technical but also very handy is the image type converter to convert/cast pixel types of images. For example, to convert to an unsigned 16-bit integral pixel type, execute:

```lang=bash
$ MitkImageTypeConverter --input input_image.nrrd --output output_image.nrrd --type ushort
```

== 💔 Known issues ==

- DICOM file names/paths with non-ASCII characters (e. g. German umlauts) may fail to load on Windows. Two different workarounds are:
 - Rename the file
 - Switch to the UTF-8 locale of Windows 10 2019-03 or later before starting the MITK Workbench
- 3-d picking and 3-d region growing segmentation tools do not yet support dynamic images

---

= News for developers =

- 🧭 We added navigation links to the top and bottom of the [[https://phabricator.mitk.org/w/mitk/changelog/release-v2021.02/ | Phabricator-versions of our changelogs]]. Please use them to flip through the past changelogs for a comprehensive overview of changes.
- 💡 After a short list of a few mentions to raise awareness of new features and concepts, we focus on merging the tables of dependency changes over time and on referencing all relevant API-breaking changes.

==  New features ==

=== New selection concept and UI ===

A [[mitk/changelog/2020.25 | new selection concept]] was introduced, following our mission to decouple plugin views from selections in the Data Manager view. We recommend that you adapt your plugins to the new concept in an effort to unify user experience.

{F1646868, size=full, layout=center, alt="New selection dialog"}

=== Snapshot installers ===

You certainly noticed that we merge the latest developments once or twice a month into our master branch and tag these commits as snapshots. These snapshots are always accompanied by comprehensive changelogs. We also started to automatically deploy unofficial (as in "no guarantees given") [[https://www.mitk.org/download/ci/snapshots/ | snapshot installers]] to our website for convenient previews.

=== Project organization in Visual Studio ===

Projects in the MITK Visual Studio solution are now automatically organized into folders for applications, modules, plugins, and so on. MITK extensions have separate root folders to easily navigate through MITK's and your code.

{F2103749, size=full, layout=center, alt="Visual Studio folders"}

=== OpenSSL ===

OpenSSL as run-time dependency was a bit tricky to get right in particular on Windows and in installers in general. It is now an optional default dependency of the MITK superbuild. When it is found during configuration, OpenSSL-specific features like the HTTPS support of POCO are automatically enabled.

On Windows, we recommend to use the Qt online installer to install OpenSSL. MITK will look for it at this specific location by default.

{F2103870, layout=center, alt="OpenSSL in the Qt online installer"}

Until we figured out how to reliably query the DLL locations of OpenSSL in CMake, everything you need to do is to set their locations in the MITK build through the CMake cache variables `MITK_OPENSSL_CRYPTO_DLL` and `MITK_OPENSSL_SSL_DLL`.

=== Auto-cleaning of 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. This is no longer the case since we implemented a mechanism to automatically clean an external project, if its definition file changed. This feature can be disabled through the `MITK_AUTOCLEAN_EXTERNAL_PROJECTS` CMake cache variable.

{F2103841, layout=center, alt="The auto-clean feature of modified dependencies"}

=== Packaging on Windows ===

Installers do no longer need to include an extra installer for Visual Studio redistributables. All necessary run-time libraries are now packaged, making installers fully installable without administrator rights.

We also generate shortcuts for packaged applications now so no need to crawl through the bin folder anymore to find the MITK Workbench or any other command-line app.

{F2103808, size=full, layout=center, alt="Root folder of the WorkbenchRelease package"}

=== CMake-style dependencies ===

Besides the `PACKAGE_DEPENDS` mechanism you can now also use `TARGET_DEPENDS` to specify plain CMake targets without any indirection. These targets are passed down verbatim to `target_link_libraries()`.

=== Build status on GitHub ===

Beside our [[https://cdash.mitk.org/index.php?project=MITK | CDash site]] for detailed build status reports, we now provide a quick overview of build statuses on our [[https://github.com/MITK/MITK | GitHub page]].

{F2065891, size=full, layout=center, alt="CI badges on GitHub"}

=== Doxygen documentation warnings ===

We fixed all Doxygen documentation warnings. We encourage you to check your documentation build output after migration to discover potential warnings that previously drowned in noise.

=== New command-line apps ===

In addition to the bundled command-line apps mentioned above in the users section, we also introduced new command-line apps, for example:

- Fuse3Dto4DImageMiniApp: Fuse //n// 3-d images to a single 3d+t image with //n// time steps
- StitchImagesMiniApp: Stitch multiple images together into a single image
- ResampleImage: Resample images with custom spacing, mapping, and interpolation

== 🛠 Third-party dependency changes ==

NOTE: [[https://docs.mitk.org/2021.02/SupportedPlatformsPage.html | Here]] is the [[https://docs.mitk.org/2021.02/SupportedPlatformsPage.html | list of supported platforms]] for MITK v2021.02.

The following table shows a complete list of changed third-party dependencies. Considerable changes include:

- Minimum required versions of our prerequisites
 - CMake 3.18
 - Qt 5.12 (5.12.9 on Windows)
 - NSIS 3 for building Windows .exe installers
- Major core dependency updates
 - VTK 8.1 {icon arrow-right} VTK 9 ([[mitk/changelog/2020.47 | migration guide]])
- Replacements
 - TinyXML {icon arrow-right} TinyXML-2 ([[mitk/changelog/2020.52 | migration guide]])
 - ACVD {icon arrow-right} OpenMesh ([[mitk/changelog/2020.47 | rationale]])

Some outdated and experimental components of MITK were removed which resulted in the removal of a few dependencies without replacement.

| Dependency | Old version | New version |
| --- | --- | --- |
| ~~ACVD~~ | `3d5ae388` (Dec 19, 2014) | |
| Boost | 1.68 | 1.74 |
| cpprestsdk | | 2.10.16 |
| CMake | 3.10 | 3.18 |
| CppUnit | 1.12.1 | 1.15.1 |
| CTK | `fc06bedc` (Aug 10, 2018) | `7210c5bc` (Nov 08, 2020) |
| DCMQI | `d067f81c` (Jun 26, 2018) | `83f498e9` (Feb 8, 2021) |
| DCMTK | `29f9de10` (Jun 15, 2018) | 3.6.5 |
| GDCM | 2.6.3 | 3.0.8 |
| ~~freeglut~~ | 2.8.1 | |
| ITK | 4.13.1 | 4.13.3 |
| MatchPoint | `24ef6072` (Apr 13, 2018) | `f2a64255` (May 02, 2019) |
| NSIS | 2 | 3 |
| OpenCV | 3.4.1 | 3.4.8 |
| OpenIGTLink | `54df50de` (Aug 21, 2014) | 3.0 |
| OpenMesh | | 8.1 |
| Qt | 5.11.1 | 5.12 (5.12.9 on Windows) |
| Qwt | 6.1.0 | 6.1.5 |
| ~~Raptor~~ | 2.0.15 | |
| ~~Rasqal~~ | 0.9.32 | |
| ~~Redland~~ | 1.0.17 | |
| ~~SimpleITK~~ | `9d510bef` (Mar 1, 2018) | |
| ~~TinyXML~~ | 2.6.2 | |
| TinyXML-2 | | 8.0.0 |
| VTK | 8.1 | 9.0.1 (patched) |
| zlib | `66a75305` | 1.2.11 |

== 🔥 API-breaking changes ==

=== Dangerous changes ===

- ⚠️ [[mitk/changelog/2020.52 | Migration from TinyXML to TinyXML-2]] has a few implicit but major pitfalls. Please follow the migration guide thoroughly.
- ⚠️ [[mitk/changelog/2020.52 | Render window names]] were changed from `stdmulti.widget[1-4]` to `stdmulti.widget[0-3]`. Since it is only a change of literal strings it has a high potential to fail unnoticed.

=== Behavioral changes ===

- The default mechanisms of [[mitk/changelog/2020.25 | assembling DICOM images]] from a collection of files or a folder changed

=== Documentation changes ===

- Implementation files like .cpp files are now excluded from the doxygen parser

=== Build system changes ===

- [[mitk/changelog/2020.52 | ITK dependencies]] of modules and plugins were completely redone
- The [[mitk/changelog/2020.52 | PACKAGE_DEPENDS]] mechanism (third-party dependencies of modules and plugins) was overhauled for many dependencies like Boost, OpenMesh, OpenMP, OpenSSL, or Python3
- [[mitk/changelog/2020.25 | Auto-load modules]] are not allowed as link-time dependencies anymore
- The [[mitk/changelog/2020.39 |SUBPROJECTS]] parameter of `mitk_create_module()` is not parsed anymore

=== Other API-breaking changes ===

- 📂 Modules
 - 📂 Core
  - [[mitk/changelog/2020.25 | DataNode]]
  - [[mitk/changelog/2020.25 | LevelWindowManager]]
  - [[mitk/changelog/2020.25 | RenderingManager]]
  - [[mitk/changelog/2020.27 | SliceNavigationController]]
  - [[mitk/changelog/2020.25 | UIDGenerator]]
 - 📂 CommandLine
  - [[mitk/changelog/2020.25 | CommandLineParser]]
 - 📂 ContourModel
  - [[mitk/changelog/2021.04 | ContourModel]]
 - 📂 DataTypesExt
  - [[mitk/changelog/2021.04 | CompressedImageContainer]]
 - 📂 DICOMReader {icon arrow-right} 📂 DICOM
 - 📂 DICOMReaderServices {icon arrow-right} 📂 DICOM/autoload/DICOMImageIO
 - 📂 DicomRT {icon arrow-right} 📂 RT
 - 📂 DicomRTIO {icon arrow-right} 📂 RT/autoload/DICOMRTIO
 - 📂 DicomUI {icon arrow-right} 📂 DICOMUI
 - 📂 ImageStatistics
  - [[mitk/changelog/2020.47 | ExtendedLabelStatisticsImageFilter]]
 - 📂 QtWidgets
  - [[mitk/changelog/2020.47 | QmitkRenderWindow]] (also [[mitk/changelog/2020.52 | here]] and [[mitk/changelog/2021.06 | here]])
  - [[mitk/changelog/2021.06 | QmitkRenderWindowMenu]]
  - [[mitk/changelog/2020.25 | StdMultiWidget]]
 - 📂 [[mitk/changelog/2020.47 | Remeshing]]
 - 📂 Segmentation
  - [[mitk/changelog/2020.36 | AutoSegmentationTool]]
  - [[mitk/changelog/2021.04 | DiffSliceOperation]]
  - [[mitk/changelog/2021.04 | SegTool2D]]
  - [[mitk/changelog/2020.36 | Tool]]
- 📂 Plugins
 - 📂 org.mitk.gui.qt.common
  - [[mitk/changelog/2020.25 | IRenderWindowPartStrategy]]
 - 📂 org.mitk.gui.qt.ext.stdmultiwidgeteditor
  - [[mitk/changelog/2020.25 | QmitkStdMultiWidgetEditor]]
 - 📂 org.mitk.gui.qt.segmentation
  - QmitkDeformableClippingPlaneView {icon arrow-right} 📂 org.mitk.gui.qt.deformableclippingplane

=== Removed modules, plugins, and classes ===

NOTE: [[https://github.com/MIC-DKFZ/MITK-Diffusion | MITK Diffusion]] moved into a separate MITK extension.

- 📂 Modules
 - {icon folder-o} Biophotonics
 - {icon folder-o} BiophotonicsHardware
 - 📂 DataTypesExt
  - {icon file-o} Mesh
  - {icon file-o} MeshUtil
 - {icon folder-o} GPGPU
 - 📂 MapperExt
  - {icon file-o} MeshMapper2D
  - {icon file-o} MeshVtkMapper3D
 - {icon folder-o} PhotoacousticsAlgorithms
 - {icon folder-o} PhotoacousticsHardware
 - {icon folder-o} PhotoacousticsLib
 - {icon folder-o} PlanarFigureSegmentation
 - {icon folder-o} RDF
 - {icon folder-o} SpectroCam
 - 📂 US
  - {icon file-o} USDiPhASDeviceCustomControls
 - {icon folder-o} USHardwareDiPhAS
 - 📂 USUI
  - {icon file-o} QmitkUSControlsCustomDiPhASDeviceWidget
- 📂 Plugins
 - {icon folder-o} org.mitk.gui.qt.lasercontrol
 - {icon folder-o} org.mitk.gui.qt.photoacoustics.imageprocessing
 - {icon folder-o} org.mitk.gui.qt.photoacoustics.pausmotioncompensation
 - {icon folder-o} org.mitk.gui.qt.photoacoustics.pausviewer
 - {icon folder-o} org.mitk.gui.qt.photoacoustics.simulation
 - {icon folder-o} org.mitk.gui.qt.photoacoustics.spectralunmixing
 - {icon folder-o} org.mitk.gui.qt.spectrocamrecorder
2493570

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Jan 18, 2019
Jan 18, 2021
Aug 10, 2018

README.md

MITK Logo

The Medical Imaging Interaction Toolkit (MITK) is a free open-source software system for development of interactive medical image processing software. MITK combines the Insight Toolkit (ITK) and the Visualization Toolkit (VTK) with an application framework.

The links below provide high-level and reference documentation targeting different usage scenarios:

See the MITK homepage for details.

Supported platforms

MITK is a cross-platform C++ toolkit and officially supports:

  • Windows
  • Linux
  • macOS

For details, please read the Supported Platforms page.

Build status of develop branch

Windows Ubuntu 18.04 Ubuntu 20.04 macOS 10.14 Mojave

We highly recommend to use the stable master branch instead. It is updated 1-2 times per month accompanied by curated changelogs and snapshot installers.

License

Copyright (c) German Cancer Research Center (DKFZ). All rights reserved.

MITK is available as free open-source software under a 3-clause BSD license.

Download

The MITK source code and binaries for the MitkWorkbench application are released regularly according to the MITK release cycle. See the Download page for a list of releases.

The official MITK source code is available in the MITK Git repository. The Git clone command is

git clone https://phabricator.mitk.org/source/mitk.git MITK

Active development takes place in the MITK develop branch and its usage is advised for advanced users only.

How to contribute

Contributions of all kind are happily accepted. However, to make the contribution process as smooth as possible, please read the How to contribute to MITK page if you plan to contribute to MITK.

Build instructions

MITK uses CMake to configure a build tree. The following is a crash course about cloning, configuring, and building MITK on a Linux/Unix system:

git clone https://phabricator.mitk.org/source/mitk.git MITK
mkdir MITK-build
cd MITK-build
cmake ../MITK
make -j4

Read the comprehensive build instructions page for details.

Useful links