NOTE: This page was not updated since 2013.
PROJECTS
This page contains a (nearly) complete list of projects that i personally invested (more) effort and time during the last years.
Beside of work projects, leisure projects or student work are listed too and had sometimes more attention than necessary, because of personal interest, additional programming practice or just for fun.
ACTIVE PROJECTS
[2013] Parallella [PREORDERED]
Pre-ordered a Parallella ARM based single-board computer with a 16-core Epiphany coprocessor and an advanced memory model. It is designed for massive parallel applications and i want to perform some image processing and model building tests.
[2013] Raspberry Pi
Raspberry Pi Model B ARM based credit-card-sized single-board computer. Had less time but wanted to test Qt embedded system environement and applications in combination with a touch screen (had not much time, but Qt embedded works so far).
[2011-13] PAIR - Patient Alignment Imaging Ring
Development of a combined positioning and imaging system for MedAustron in cooperation with Buck Engineering & Consulting GmbH (BEC) (robot, motor steering, see MedAustron Robotic Positioning) and medPhoton GmbH (imaging ring).
Responsibilities: specification, prototyping, engineering, workshops, project management, software development (C++, Qt)
Description and links
Patient Alignment:
Ceiling-mounted, industrial six axis robot carrying a radio-transparent carbon fiber table top.
Mass-induced flex of the couch is automatically compensated by a feedback loop based on video tracking.
Imaging Ring:
High-strength aluminum ring construction which is able to slide in the longitudinal direction of the couch.
Attached on the ring, two independently rotatable carbon fiber arms carry:
Enable to track all clinically relevant anatomical sites of the patient in terms of large field of view planar imaging as well as cone-beam computed tomography (CBCT).
Independently rotatable source and detector arms allow for accomplishing focused CBCT acquisition
Collimation unit for the monoblock x-ray source is equipped with a rotating wheel featuring various filter material insets to support dual-energy imaging.
Links:
see SCIENTIFIC for additional information:
[2011-13] MedAustron - open-radART ion
Collaboration with MedAutron to develop and deliver the open-radART ion software suite (see here).
Responsibilities: requirements definition, specification, workshops, project management, software development
The open-radART ion software suite consists of the following major software components:
Patient record and verify system
Treatment control system
Treatment plan to machine conversion module
Central picture archiving and communication system
Oncology information system complex
Central scheduling system
Diagnostic imaging review
Verification imaging review
Treatment record viewer
Dose review
Structure review/editing
Activity recording for billing
Document manager
Patient alignment system together
Imaging/delivery collision protection system
Accompanying and future research
Optical Surface Scanning
Patient positioning
Measurement of swelling
Collision avoidance
Intra-fraction motion detection
Flat panel imaging potential in hadron therapy
Collimator-based cone-beam computed tomography
Texture-model-based real-time 2D/3D image registration
Robot-assisted image guided radiotherapy
Adaptive radiotherapy
4D Applications
[2010-13] REG23: 2D/3D Registration
REG23 is a module of the open-radART software platform (see here) and performs 2D/3D Registration in the clinical radiotherapy environment.
Responsibilities: Mask-optimization, GUI, scripting, deployment, maintenance, validation, clinical integration
REG23 and the ORAIFUTILS library are available in plastimatch repository (since April 2011) and are open source (BSD):
-
To checkout the repository see
here
-
Features:
Multiple (1-n) planar 2D X-ray images supported
Automatic registration using several cost functions, including normalized mutual information (NMI), normalized correlation (NCC), mean reciprocal square differences (MRSD), mean squared difference (MS), and gradient difference (GD)
Interactive initialization
Programmable pre-processing and post-processing
Regular and irregular regions of interest (masks)
Automatic generated mask images based on pre-interventional data (structuresets)
Supports several optimizers
Manual user interaction (3D rigid position manipulation)
Sparse and fast pre-initialization based on cross correlation
Undo/Redo support
see SCIENTIFIC for additional information:
[2010-13] open-radART
open-radART is a class IIb per rule 10 (93/42/EEC, Annex IX) medical product for radation therapy and conforms to the following standards:
EN ISO 13485:2012 Medical devices - Quality management systems - Requirements for regulatory purposes
EN ISO 14971:2012 Medical devices - Application of risk management to medical devices
EN ISO 62366:2008 Medical devices - Application of usability engineering to medical devices
EN 62304:2006+ AC:2008 Medical device software - Software life-cycle processes
EN 980:2008 Symbols for use in the labeling of medical devices
EN 1041:2008 Information supplied by the manufacturer of medical devices
EN 62274:2007 Medical electrical equipment - Safety of radiotherapy record and verify systems
IEC 62083:2009 Medical electrical equipment - Requirements for the safety of radiotherapy treatment planning systems
DICOM Standard PS 3.1-2007 - PS 3.18-2007 Digital Imaging and Communications in Medicine
About open-radART [DE]
open radART stellt ein Instrument für professionelle Anwendungen im Bereich Bildgebung, Bildkommunikation und Bildarchivierung in der Radiotherapie dar. open radART ist ein Software-System zur Abbildung und Durchführung von Prozessen in einer Klinik für Strahlentherapie. Das geschieht durch folgende Funktionsgruppen:
Übernahme, Erfassung, Verarbeitung und Speicherung von patientenbezogenen Daten.
Übernahme, Speicherung und Darstellung von Bildmaterial und volumsbezogenen Daten aus bildgebenden medizinischen Modalitäten (CT, MR, PET, US) unter eindeutiger Zuordnung der Bilddaten zu bestimmten Patientendaten.
Übernahme, Speicherung und Darstellung von Bildmaterial aus bildgebenden Teilen von Linearbeschleunigern (EPID, KV-Panel) unter eindeutiger Zuordnung der Bilddaten zu bestimmten Patientendaten.
Definition, Kennzeichnung, Verarbeitung und Darstellung von klinisch relevanten Strukturen im 2D und im 3D Raum anhand der Darstellung von patientenbezogenem Bildmaterial
Erzeugung, Import, Veränderung, Verknüpfung, Export und Speicherung von geometrischen Bestrahlungsdaten (Bestrahlungspläne, welche Bestrahlungsfelder enthalten) unter eindeutiger Zuordnung der Pläne zu bestimmten Patientendaten
Übernahme von planungsrelevanten und Maschinen-bezogenenen Daten von Linearbeschleunigern.
Anpassung der Darstellung von Bildmaterial und Volumsdatensätzen an die Bestrahlungsparameter von ausgewählten Bestrahlungsplänen (Beams-Eye-View) unter Berücksichtigung maschinenbezogener Daten.
Übermittlung von Bestrahlungsdaten (Bestrahlungsplänen) an externe Planungssysteme zur Berechnung von Dosisverteilungen unter der Annahme der Abstrahlung der geplanten Felder.
Übernahme und Darstellung von Dosisverteilungen aus externen Bestrahlungsplanungssystemen, die von diesen zu bestimmten Bestrahlungsplänen und ihren Feldern berechnet wurden.
Verknüpfung von Dosisverteilungen mit patientenbezogenen Volumina und Strukturen und Berechnung von klinisch relevanten Kennzahlen und Diagrammen aus diesen Daten (DVH und Kennzahlen …)
Übermittlung von Bestrahlungsdaten (Bestrahlungspläne) an Bestrahlungsgeräte (Linearbeschleuniger) unter Berücksichtigung maschinenbezogender Daten.
Steuerung des Ablaufs der Bestrahlung von Patienten and Elekta-Beschleunigern nach den Vorgaben ausgewählter Pläne unter Nutzung der Funktionen der von Elekta erzeugten und zertifizierten Steuerungssoftware (FX-Schnittstelle) für Elekta Linearbeschleuniger
Funktionen zum Vergleich von planungsorientiertem Bildmaterial (Planungs-CT) mit Bildmaterial, das in der Behandlungssituation erzeugt wird (EPID, KV-Panel am Beschleuniger zur Verifikation oder im Rahmen der bildgeführten Bestrahlung IGRT).
PAST PROJECTS
[2012] Robot Simulation
Visualization and simulation prototype of a robot (KUKA KR270) and its kinematic model. Allows basic user interaction wit the models.
Responsibilities: development (C++, Qt, Qt3D, KDL)
Dynamic axis configuration and model configuration
Qt signals/slots for 3D model interaction
Forward and inverse kinematic computation
DICOM-Painter is a module of the open-radART software platform (see here) and manipulates DICOM volumetric images for use in radiotherapy planning.
Responsibilities: requirements, specification, project management, supervision of trainees (I. Laasch, P. Keuschnigg), deployment, maintenance, validation, clinical integration
Features:
Replaces grayvalues of DICOM volumetric datasets with a flexible process
Generates new DICOM datasets (new UUIDs)
Supports structuresets for replacement (e.g. replace all values inside a structureset)
Supports structureset combinations and operations (AND, inversion)
Supports parsed replacement rules (>, <, =, >=, ⇐, &&, ||, static values and valiables)
Supports rescaling (spacing, size) with different interpolation methods and plane orientations
Supports cropping (origin, size)
Typical use cases:
Bolus creation (e.g. at breast cancer)
Contrast agent removal (e.g. in the bladder)
Artifact removal (e.g. metal artifacts of implants)
Masking of unwanted parts outside of the body (e.g. replace all voxels outside of the body outline to remove the table and reconstruction artifacts)
Volume resolution corrections, cropping and plane reorientation
[2011] DICOM Parser
DICOM parser is a simple command line tool that parses an existing DICOM RT plan object and replaces certain DICOM tag values to enable their import in open-radART (see here).
Responsibilities: requirements, specification, implementation, validation
[2012] Dose Annotation and Image Viewing Module
Market review for dose annotation of radiotherapy planning systems and requirements engineering ans specification of an image viewing module.
Responsibilities: requirements, specification, presentations
P. Steininger, H. Deutschmann, M. Neuner. Requirements: 2D Image Viewing Module. 9 pages
M. Neuner. Annotation/Scales/LUT Specification and Requirements. 4 pages. 36 slides presentation
[2012-13] Distributed Inter-Process Communication (DIPC)
DIPC provides a basic bidirectional point-to-point communication infrastructure for open-radART (see here) system component processes. DIPC supports communication across process borders; i.e. distributed remote connections. DIPC does not make any implications on the higher-level communication protocol, it rather provides the transport layer for realizing them efficiently. Summed up, DIPC provides a stable and consistent message/data transport layer.
Responsibilities: requirements, specification, implementation, validation
Features:
Goal: Provide a lightweight, efficient and unified layer for message passing base on TCP/IP.
Main functionalities divided into the following categories:
Interface initialization, connection establishment, connection monitoring
Bi-directional data transfer
Asynchronous guaranteed data transfer (includes handshaking on transport layer - TCP)
Content to be transmitted: strings (UTF-8), binary data, Qt-objects (serialized form)
„guaranteed data transfer“ means that the software components do not have to care about data fragmentation or comparable phenomenons (e.g. marshaling); if a client uses DIPC and provides data to it for transfer to another node, it is guaranteed that the whole data package is transferred to the desired node
Memory limits for send buffer and message size of incoming and outgoing messages
Consistent error handling
Event based message handling
Static and dynamic C++ libraries
Dynamic C library
Several example applications
ORA-CP is a web-based system to for CE-certified software development of open-radART (see here) and all kind of documentation and file management. It replaced the previous used platform (see [2010-12] project.net) and documents. It is based on DokuWiki, ICKEwiki, plug-ins, extensions and self created, customized and extended plug-ins and extensions.
Responsibilities: requirements, specification, project management, implementation, automated data migration, validation, maintenance, operation
Main functionalities:
User Feedback Reports (tracking of bugs, feature requests, problems of all kind)
Release List management for release documentation, quality management, risk management
Information exchange and documentation of meetings
Change management and documentation
Development documentation (requirements, specification, implementation)
Quality management, quality goals
Risk management
Document management
Documentation of meetings
user and access right management
Tracks changes, notifications, version management
Requirements of ORA-CP [DE]:
Wiki Funktionalität
Getrennte Berechtigungsvergabe pro Benutzer und Gruppe
URF, Release List repräsentieren und ablösen
Ein integriertes System (keine separaten Bug- oder Issuetracker)
Kostenfrei (idealerweise Open-Source)
Kalender
Ganttdiagramme / Projektmanagement
Dokumentenverwaltung / Medienverwaltung
Einbringung von Lasten-, Pflichtenheft
Abbildung Risikomanagement
Genaue Abbildung von vorher/nachher Zuständen (Risks) muss erfolgen
Bisherige Einträge sollten importiert werden können (manuelle Eingabe)
Support von Pflichtfeldern
Ein Sortieren nach Keywords wird gefordert
“assigned to” Funktionalität
Berufsgruppenspezifisches RM (durch assigned to)
Nachverfolgbarkeit von Änderungen (Traceability).
Umfangreiche Suchfunktion
Sortierung nach relevanten Feldern soll möglich sein (z.B. assigned to, Datum, Status).
Bereits laufende Projekte müssen bearbeitet werden, selbst wenn Software noch nicht funktioniert.
Integrierte Hilfefunktion bzw. Nachschlagewerk
Projektmanagement soll möglich sein
Hinzufügen von Anhängen jeglicher Art (z.B. Bilder, Dokumente, Testberichte)
Möglichst wenige „Klicks“. Dinge die man häufig braucht so einfach wie möglich erreichbar (Usability)
Extraktion von objektiven Kriterien soll möglich sein (z.B. Mittlere Bearbeitungszeit UFRs).
Dokumentation verbessern durch optimale Unterstützung: viele UFRs erfolgen mündlich, Reactions erfolgen mündlich (da meist sehr einfach zu behandeln). Auch temporäre Maßnahmen etc. sind zu dokumentieren!
Anforderungen aus dem QM-Prozess / Dokumentenlenkung / Dokumentationspflichten:
Die Lenkung von Maßnahmen muss in den Prozessanweisungen explizit verankert werden.
Dokumente sind bezüglich ihrer Angemessenheit vor ihrer Herausgabe zu bewerten und zu genehmigen
Sicherstellen dass Änderungen und der aktuelle Überarbeitungsstatus gekennzeichnet werden
Sicherstellen das gültige Fassungen der zutreffenden Dokumente an den jeweiligen Einsatzorten verfügbar sind
Sicherstellen dass Dokumente lesbar und leicht erkennbar bleiben.
Sicherstellen dass externe Dokumente gekennzeichnet werden und deren Verteilung gelenkt wird
Die unbeabsichtigte Verwendung veralteter Dokumente zu verhindern und diese in geeigneter Weise zu kennzeichnen.
Alle Aufzeichnungen müssen leicht lesbar, erkennbar und wiederauffindbar sein.
Dokumente welche in der QM-Handbuch Dokumentenmatrix aufscheinen sind 7 Jahre aufzubewahren.
Dokumente sind durch verantwortliche Personen freizugeben und zu bewerten.
Qualitätsrelevante Dokumentation ist mindestens für einen Zeitraum von 5 Jahren aufzubewahren.
Dokumente sind auffindbar, nicht doppelt vorhanden und in einer Datensicherung zu erfassen.
Alte Versionen von Dokumenten sind einzuziehen und bis auf eine archivierte Version zu vernichten.
[2011-12] Flexmap
Tests to calibrate a 9 degree of freedom, rotational X-ray system based on multi view geometry and homography calculations.
Responsibilities: implementation, tests (R-statistics)
[2011] Application of RGB-Depth data in Radiotherapy
Possible radiotherapy applications based on RGB-D (color+depth) measurements with the Microsoft Kinect.
Responsibilities: requirements, specification, implementation, test measurements (C++, ITK, VTK, Qt, OpenNI)
[2011/12] CBCT reconstruction
CBCT reconstruction from non orthogonal image planes with plastimatch (FDK). Conversion pipeline for our ELEKTA XVI 2D images to be used with the plastimatch FDK algorithm for CBCT reconstruction.
Responsibilities: development (C++, ITK, VTK)
[2011/12] open-radART 3D/3D (OR33)
OR33 is a 3D to 3D volume registration application.
Responsibilities: fixes and maintenance (C++, ITK, VTK, Qt)
[2010/12] open radART in Focus (ORAIF)
ORAIF is a module of the open-radART software platform (see here) and consists of a set of projects enabling visualization and image processing of 2D, 3D and 4D image data as well as polygonal structure sets. It is dedicated to radiotherapy.
Responsibilities: deployment and maintenance (C++, ITK, VTK)
[2010-12] project.net
Maintenance of a project.net web-based system to replace old file based documents (Word, Excel) for CE-certified software development of open-radART (see here).
Responsibilities: requirements, specification, maintenance
Main functionalities:
User Feedback Reports
Release List management for release documentation, quality management, risk management
Information exchange and documentation of meetings
Change management and documentation
Development documentation (requirements, specification, implementation)
Quality management
Risk management
Document management
[2010] Stochastic Rank Correlation
An ITK-based Implementation of the Stochastic Rank Correlation (SRC) Metric.
Responsibilities: test-data, examples, testing (C++, ITK)
see Publications
[2010] Master Thesis
[2009/10] Analyzing Microarray Data using Bioconductor
Analyzing Microarray data (ArrayExpress) using Bioconductor (two ovarian studies).
Responsibilities: R-code, Sweave, typesetting (TeX/Sweave documentation and R-code hacking).
[2009] Bachelor Thesis
[2009] Field study
Pervasive Healthcare Systems - Field study: Predict subjective well-being from mouse movement.
Java applet to record training data and comparison of different predictors to assess subjective human well-being based on mouse movements.
[2009] Ventricular Activation-potential Simulation with Cellular Automata
Development of a ventricular CA-model to simulate activation times and cell potentials.
Responsibilities: Project-leader, integration, GUI, software architecture, software development, documentation
Features: Import of segmented cell types, cell configuration based on several cell models, postgres-DB backend for results, all configurations and simulations are logged, undo/redo
A system for the management as well as analysis from sporty activities (in particular run data).
Responsibilities: Server, basic setup of CMS, php templates, php teaching of other team members, DB-Integration, php development, project co-leader
Project leader: Dipl.-Ing. Roland Kienast
Web based portal (php, mysql, based on e107 CMS) with the following main functions (additionally implemented to CMS functionality):
Track your Run (Route recording)
Manual entry or upload GPS track data.
Show the routes on a map.
Publish the running tracks into the track database (with description).
Adding pulse data
Add pulse data to a run (manually or using a heart rate meter with PC interface).
Show pulse data through statistics.
Comparison of old records with new.
Observe Own pulse trends.
Statistics
Pulse trends, route profiles, training times, calorie consumption, …
Calculators
BMI, training time ,calorie consumption per run or entire consumption , optimal trainings pulse, …
Training calendar
Planning of training programs.
Chronological summary of all completed runs.
Normal calendar functions for entering various data.
Preparation of training programs: Preparation of predefined training programs. Create your own training programs. Variable planning in the own training calendar.
Personal diary: Each run is automatically documented in the diary (inclusive the key data of the run).
Finding a suitable running partner
Track database: Finding suitable running tracks. Add comments to running tracks.
[2009] Frank van Swieten Lecture
Frank van Swieten Lectures on Strategic Information Management in Hospitals, June 24th-June 26th 2009 Amsterdam
[2008] Monte-Carlo Simulations
Implemented simple Monte-Carlo simulations in the course of a seminar.
[2008] Fileserver, Webserver
Simple file and web-server implementation (C, C++, Java).
[2008] Play Pong with XMotion Sensor
A pygame (python based Pong) was controlled with a Bluetooth XSense Motion Sensor (equipped with accelerometer, gyroscopes and magnetic field sensors).
Basic instructions were provided by Kai Kunze (ETH Zürich).
[2008] Cryptography
Exemplary implementation of parity codes over groups, codes over groups, syndrome decoding, checksums (C++).
[2007] ImageJ Volume Rendering Plugin
Gradient and intensity weighted volume rendering of volumetric data-sets (grayscale stacks).
2D weight function editor with variable number of key-points and automatic initialization of “optimal” parameters based on 2D Otsu thresholds.
[2007] Neuronal Net
[2007] Mini-Chess
Simplified chess game with artificial intelligence (minimax with alpha-beta pruning).
Can be played versus other players (network) or just against the AI.
[2007] Genetic Algorithms
Implementation of a genetic algorithm program to solve the traveling salesman problem.
[2007] Pattern Recognition in Signals
Matlab-based, sliding window pattern recognition in EKG signals (QRS detection), filtering and discretization.
[2007] Sequence Alignment
Exact string matching: Naive Method & Z-Algorithm.
Dynamic programming practice and basic implementation of Dotplots, FASTA and BLAST.
[2006] HL7 2.3.1 Client
A HL7 (Health Level Seven) Client that uses the HAPI library, JDOM and log4j.
Generates and parses HL7 messages, dynamically builds a GUI with the current message type fields and checks every value for validity based on XML files.
Implemented some HL7 basic functions (e.g. check digit sheme Mod10, Mod11).
[2006] Cellular Automaton
Game of life implementation and “ants” during a lecture.
Basic framework was provided by Priv.-Doz. DI Dr. Bernhard Pfeifer.
[2006] Assembler Programming
MSP430 Micro-controller - 16bit RISC CPU
Some basic instruction sets to perform calculations (calculator) with input through a keypad and output of the results on LED digits.
before 2006
Projects before 2006 were mainly small web-based tools (php, javascript) and electrical work projects