0% found this document useful (0 votes)
27 views

Software Engineering Example Presentation

Flis is a redesign of the MTDemo medical imaging application. It uses connected component trees to filter and visualize 3D volumes more quickly using parallelization. Flis supports newer data types and 2D images. The application loads data, allows rotation and zooming, and filters by volume threshold. It is written in C++ for performance and uses Qt for the UI and a visualization library for 3D functionality.

Uploaded by

Antonio
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

Software Engineering Example Presentation

Flis is a redesign of the MTDemo medical imaging application. It uses connected component trees to filter and visualize 3D volumes more quickly using parallelization. Flis supports newer data types and 2D images. The application loads data, allows rotation and zooming, and filters by volume threshold. It is written in C++ for performance and uses Qt for the UI and a visualization library for 3D functionality.

Uploaded by

Antonio
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 3

MTDemoPresentation

Elsie, Sander, Job


March 2019

Introduction to the problem


MTDemo is an existing application made to visualize and filter 3D volumes,
used in medical imaging. It was also last modified in 2014, and most of the code
is from years before that. This means the application is somewhat outdated -
it’s fine as long as you only use 8 and 16 bit integer data, and a lack of parallel
processing means it’s slower than it needs to be. There’s also no support for
2D images. Fixing the existing code is problematic due to the... confusing
architecture. There was less focus on object oriented design when the code was
first, written, and multiple changes and additions have resulted in a mess of
C++ and C code. Our client asked us to redesign the application for modern
use.

The Solution: What is Flis


To answer our clients request we are making Flis (short for filtering and vi-
sualization). It is a more modern redesign of the MTDemo application. Like
MTDemo, it will display and filter volumes. Unlike MTDemo, Flis will use par-
allelization that wasn’t available in the past to increase speed. It will support
32 and 64 bit integer data, instead of just 8 and 16. It will work for 2D data
as well as 3D. And it will be designed so that support for other data types and
new attributes to filter by can added easily.

Technical description
The backbone of the application is the use of connected component trees. When
a data set is loaded, pixels of the same, or similar, value that touch are grouped
into a single connected component. Each of these components is stored as a
node in a tree. To filter the image, nodes that do not fit the filtering criteria -
that are too small, or not spherical enough - are removed from the tree and the
filtered image can be reconstructed.

1
To make it easy to add support for other data types, we use templating when
storing image information, meaning any data type can be used in the tree, as
long as pixels can be compared in some way. To add a filter attribute, you only
need a function that determines the attribute value for a connected component.
This function can then be used with existing filtering algorithm.

Description from the user’s POV


• Select a data file to load

• The volume is displayed on the screen


• The user can rotate the volume
• And zoom in and out on the volume
• The image is filtered by volume - as the threshold is moved up, smaller
volumes are filtered out.

Technology Stack
• C++: good performance, objects, multi-platform

• ui - Qt: portability
• ui - Visualization Library: has functions for dealing with 3d Volumes -
loading, rendering modes, marching cubes

Our code is written in C++ - its fast, portable - our client made it clear the
application needs to run in Windows, Linux and MacOSX.
The ui is handled in Qt, because its also very portable
On top of Qt we use Visualization Library, a library which has a lot of useful
functions for working with 3D volumes - loading, rendering modes, marching
cubes etc.

Lessons learned
Lessons we have learned from the past block mostly come from making mistakes
and finding out later why that was wrong.
• To start with, sending the requirements document, which rapidly expands
in size in the first weeks, to the client was not the ideal thing to do.

• Also,

2
Future work
• A whole lot more filtering. Just surface area, volume, contour, and non-
compactness won’t cut it. We need edge contact quotients, elongation,
flatness, sparseness, and sphericity.
• Additionally, implementing connectivity masks, which defines what com-
ponents of an image or volume are connected with each other, will give us
better control over the filtering. This works both ways, we also want to
be able to generate connectivity masks from the input data sets.
• The last functional requirement we will implement is k-flat control, which
looks like default filtering on flat zones, but then with a margin of no more
than k.
• Further on our list is implementing parallelization, cross-platform support,
and, of course, good documentation.
• Some smaller things include, saving screenshots from the current view and
save certain filtered volumes.

You might also like