Software Engineering Example Presentation
Software Engineering Example Presentation
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.
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.