Computer Vision, Bildverarbeitung & Embedded Software (C++, C#, Python, OCR, OpenCV, Defekt Erkennung)
Aktualisiert am 17.11.2024
Profil
Freiberufler / Selbstständiger
Remote-Arbeit
Verfügbar ab: 01.01.2025
Verfügbar zu: 100%
davon vor Ort: 100%
Bildverarbeitung
C++
OpenCV
C#
OOP
Embedded C++
Linux
Java
Python
Machine Learning
Deutsch: Muttersprache
Englisch: gut

Einsatzorte

Einsatzorte

Deutschland, Österreich, Schweiz

Weltweiter Einsatz möglich.

möglich

Projekte

Projekte

2 Jahre 10 Monate
2022-02 - heute

Druckinspektion

Software-Entwickler C++ OpenCV
Software-Entwickler

  • Implementierung von Funktionen und Optimierungen für einen Algorithmus zur Erkennung von Defekten auf den bedruckten Druckstoffen einer Offsetdruck-Maschine
  • Implementierung eines Verfahrens zu Erkennung von Schmier-Effekten
  • Integration der Algorithmen in die vorhandene Inspektionssoftware

C++ OpenCV
Heidelberger Druckmaschinen
Heidelberg
1 Jahr 11 Monate
2022-05 - 2024-03

Software-Entwicklung für Embedded Systeme

Software-Entwickler ANSI-C Python Linux ...
Software-Entwickler
Software-Entwicklung für Embedded Systeme
· Konzeption und Entwicklung von Firmware für Pro-Audio Geräte, wie Systemverstärker, Signalprozessoren und spezialisierte Audionetzwerkgeräte für MILAN (TSN/AVB) und Dante
· Embedded Anwendungen unter Linux für ARM und x86
· Integration und Test der entwickelten Software auf Modul- und Systemebene
· Spezifikation, Aufgabenplanung, Versionsverwaltung und Dokumentation
· Einführung neuer Technologien und Tools Gestaltung von System- und Produktkonzepten
ANSI-C Python Linux Audio Coding realtime audio
d&b audiotechnik GmbH & Co. KG
Remote / Backnang
6 Monate
2021-09 - 2022-02

Blind Detection

Software-Entwickler C++ Linux Docker ...
Software-Entwickler
  • Portierung und Erweiterung eines Algorithmus zur Detektion einer abgedeckten Überwachungskamera auf ein aktuelles SDK
  • Implementierung neuer Funktionen für eine Video Management System
Windows
C++ Linux Docker C#
Strabag ISS GmbH
Berlin
6 Monate
2021-05 - 2021-10

Particle Detection

Software-Architekt C# C++ OpenCV
Software-Architekt
Entwicklung eines Prototyps um Defekte und Partikel auf einer Photomaske zu identifizieren. Die Bilder der Photomaske werden mit einem Elektronenrastermikroskop aufgenommen.
Git Azure Windows
C# C++ OpenCV
Darmstadt
5 Monate
2021-01 - 2021-05

Image Stitching

Software-Entwickler C++ Mercurial KDevelop
Software-Entwickler
  • Implementierung von Filtern für eine Steuerungssoftware zur Steuerung von Laserschweißanlagen. 
  • Analyse eines bestehenden Algorithmus zur Erstellung einer großen Fotografie aus mehreren kleineren Aufnahmen.
  • Ausarbeitung von Maßnahmen zur Optimierung des Algorithmus und zur Minimierung von auftretenden Artefakten.
C++ Mercurial KDevelop
Precitec GmbH & Co. KG
Gaggenau
1 Jahr 3 Monate
2019-10 - 2020-12

CUPS embedded

Software-Entwickler C++ Qt Python
Software-Entwickler
  • Für ein Wäge-Terminal, mit einer Linux Yocto Distribution als Betriebssystem, wurde die CUPS Druckersystemsoftware in das User-Interface integriert.
  • Anpassung des Yocto-Rezeptes für CUPS und die verwendeten CUPS-Filter.
  • Implementierung/Wartung einer Software zur Erstellung von Etiketten (im XML-Format), welche auf dem Wäge-Terminal in ein druckbares PDF-Format konvertiert werden.
  • Implementierung eines embedded PDF-Renderers, welcher als Input ein proprietäres XML-Format hat und hieraus ein PDF-Dokument erstellt, welches mit Hilfe der CUPS-Druckersystemsoftware von beliebigen Druckern verarbeitet werden kann.
Eclipse Yocto
C++ Qt Python
Minebea Intec GmbH
Hamburg
7 Monate
2019-04 - 2019-10

Überwachung eines 3D-Druckes

Software-Entwickler OpenCV C++ Scrum ...
Software-Entwickler

Implementierung einer QM-Software zur optischen Überwachung des Pulver-Bettes eines 3D-Metaldruckers mittels einer Kamera, um die einzelnen Prozessschritte zu dokumentieren. Zusätzlich wurden Bildverbesserungsmaßnahmen durchgeführt.

Git OPC UA
OpenCV C++ Scrum Jenkins Windows
Concept Laser GmbH
Lichtenfels, Bayern
4 Monate
2019-01 - 2019-04

Remote Stations-Software

Software-Entwickler C# WCF REST ...
Software-Entwickler

Erstellung einer Softwareschnittstelle als Windows Service zur Auslesung von Daten von Siplace Bestückautomaten im Projekt ?Remote Stations-Software? mit dem Ziel, die installierte Software, die Softwareversion der Stationssoftware und die Errordaten über LAN auslesen und an einen im LAN befindlichen Rechner übermitteln kann.

C# WCF REST Windows
ASM Assembly Systems GmbH & Co. KG
München
1 Jahr 1 Monat
2018-02 - 2019-02

ID-Card Reader

Software-Entwickler OpenCV Python C++ ...
Software-Entwickler

Implementierung eines Prototyps zur Auslesung einer ID-Karte mittels einer Kamera. Das aufgenommene Bild wird in einem ersten Schritt so aufbereitet, dass die Datenfelder mit einem üblichen OCR-Tool (Tesseract) ausgelesen werden können. Zusätzlich wird ein Tool implementiert, um den Algorithmus an unterschiedliche ID-Karten anzupassen.

Tesseract
OpenCV Python C++ C#
Identt GmbH
München
11 Monate
2017-06 - 2018-04

Trouble-Shooter

Software-Entwickler Docker Git Scrum ...
Software-Entwickler

Für Teile eines komplexen verteilten Systems musste nachträglich eine Entwicklungsumgebung aufgesetzt werden, mit der der Code effizient debugged werden kann. Es haben sich Fehler eingeschlichen, die über loggen nur schwer identifiziert werden konnten. Die Applikation wurde in C#/Mono und PHP geschrieben und in einem Docker-Container gehosted.

  •  Entwicklung von Cloud-Services
  •  Datenbankentwicklung
  •  Entwicklung von automatisierten Tests
Docker Git Scrum Python SQL C++ Eclipse C#
München
6 Monate
2016-10 - 2017-03

Linux Embedded

Software Architekt Posix TFS Eclipse ...
Software Architekt

Aufgabe: Algorithmen zur automatisierten Überwachung werden auf Kameras verschiedener Hersteller (HikVision, Hanwha, Axis) portiert. Auf diesen Kameras läuft ein Linux Embedded mit unterschiedlicher Hardware-Architektur. Die Applikation zur Ausführung der Algorithmen soll auf den Kamera-Plattformen identisch sein. Entwickelt wurde nach SCRUM.

  • Konfigurieren von Eclipse für verschiedene Targets 
  • Erstellung von Shell-Skripten um Build-Prozesse zu automatisieren
  • Integration des TFS in die Linux Entwicklungsumgebung
  • Entwurf einer einheitlichen Architektur für verschiedene Kamerahersteller
  • Erstellung einer Plattformunabhängigen Library für die Targets (ARM, Intel, Linux, Windows)
  • Aufsetzen einer effizienten Desktop Entwicklungs- und Debugging-Umgebung
  • Streamen der Videos von der Kamera in die Desktop-Entwicklungsumgebung

ARM Embedded Linux HTTP
Posix TFS Eclipse C++ Video
Securiton GmbH (Festanstellung)
München
2 Monate
2016-10 - 2016-11

CoreTester-GUI

Software-Entwickler Microsoft Visual Studio
Software-Entwickler

Entwicklung einer einfachen GUI für ein Test-Framework in C#.

  • GUI mit Windows Forms entwickelt
Windows-Forms
Microsoft Visual Studio
Securiton GmbH (Festanstellung)
München
9 Monate
2016-01 - 2016-09

Foto-Vergleich

Software-Entwickler C++ OpenCV Windows
Software-Entwickler

Aufgabe: Es soll die Druckqualität von gelaserten Fotos überprüft werden. Besondere Anforderungen: Die Skalierung der Bilder schwankt, die Laser lasern die Bilder nicht in der gleichen Helligkeit.

  • Grauwert-Kalibrierung anhand eines bekannten Farbmustern durchführen
  • Foto durch Korrelator lokalisieren
  • Exakte Skalierung des gelaserten Fotos bestimmen
  • Foto entsprechend der errechneten Skalierung skalieren
  • Foto ggf. in einen anderen Farbraum transformieren (LBP, Canny, Sobel, HSV)
  • Referenz-Foto mit gelasertem Foto vergleichen
  • Gefundene Defekte klassifizieren
C++ OpenCV Windows
Mühlbauer AG (Festanstellung)
München
5 Monate
2015-08 - 2015-12

OCR GUI

Software-Entwickler WPF
Software-Entwickler

Entwickeln einer GUI in WPF, um die OCR zu konfigurieren.

WPF
privat
1 Jahr
2015-01 - 2015-12

Optical Character Recognition

Software-Entwickler OpenCV Support Vector Machine Machine Learning
Software-Entwickler

Aufgabe: Entwicklung einer größen- und fontinvarianten OCR für normale Zeichen mit Hilfe einer Support Vector Machine. Der OCR-Algorithmus lässt sich in einen Einlern- und einen Erkennungsteil unterteilen.

Einlernen:

  • Es werden künstlich Zeichen mit unterschiedlichen Fonts erstellt
  • Die künstlichen Zeichen werden auf eine einheitliche Größe skaliert
  • Gradienten der Zeichen werden berechnet
  • Mit den errechneten Gradienten wird eine Support Vector Machine trainiert

Erkennung:

  • Es wird nach Blobs im Bild gesucht
  • Die gefundenen Blobs werden auf eine einheitliche Größe skaliert
  • Gradienten der Blobs werden berechnet
  • Die Gradienten der Blobs werden mit der Support Vector Machine als Buchstaben klassifiziert

OpenCV Support Vector Machine Machine Learning
privat
5 Monate
2014-05 - 2014-09

GUI Design

Software-Entwickler
Software-Entwickler

GUI-Design mit Microsoft Foundation Classes (MFC)

MFC
Mühlbauer AG
München
6 Monate
2013-01 - 2013-06

ISO 1831

Software-Entwickler C++ OpenCV Qt
Software-Entwickler

Es soll sichergestellt werden, dass die Druckqualität der Machine Readable Zone (MRZ) in Reisepässen ISO 1831 entspricht. Die Vorlagen der Zeichen werden aus dem OCR-B TrueType Font generiert.

  • Überprüfung des Kontrastes des schwarzen Zeichenbereichs
  • Überprüfung der minimalen Strichbreite eines Zeichens
  • Überprüfung der maximalen Strichbreite eines Zeichens
  • Überprüfung des Kontrastes des Skeletts eines Buchstabens
  • Überprüfung auf Dreck im hellen Bereich eines Buchstabens
  • Überprüfung auf Flecken im schwarzen Bereich eines Buchtstabens
  • Überprüfung der korrekten Ausrichtung eines Buchstabens
  • Überprüfung der korrekten Größe eines Buchstabens

C++ OpenCV Qt
Mühlbauer AG (Festanstellung)
München
8 Monate
2012-01 - 2012-08

Dotted OCR

Software Entwickler OpenCV C++
Software Entwickler

Aufgabe: Ein vorhandener Algorithmus zur Erkennung einer Seriennummer bestehend aus perforierten (dotted) Zeichen, wie sie in Reispässen verwendet werden, erkennt oft falsche Zeichen. Es soll ein neuer Algorithmus konzeptioniert und implementiert werden. Der Algorithmus soll größen- und rotationsinvariant sein.

Der Algorithmus lässt sich in zwei Phasen aufteilen, der Einlernphase und der Erkennungsphase:

Einlernen:

  • Segmentierung der Dots mit einer adaptiven Schwelle
  • Normierung der Dots eines Buchstabens / Herausrechnen der Skalierung
  • Pro Zeichen existiert eine Menge an Koordinaten (normalerweise zwischen 5-10), welche einen perforierten Buchstaben beschreiben

Erkennung:

  • Segmentierung der Dots mit einer adaptiven Schwelle
  • Clustern der Dots durch morphologische (dilate + erode) Operationen, um die Dots einzelner Buchstaben zusammenzufassen
  • Translation der Dots eines Buchstabens in den Koordinatenursprung
  • Normierung der Dots eines Buchstabens / Herausrechnen der Skalierung
  • Bestimmung einer Rotation, um den Buchstaben aus der Erkennungsphase auf den Buchstaben aus der Einlernphase zu matchen

Der neu entworfene Algorithmus ist skalierungs- und rotationsinvariant und hat keine Fehlerkennung. Des Weiteren kann er flexibel konfiguriert werden, mit Focus auf Performance oder Erkennungsgüte auch bei schlechter Bildqualität.

OpenCV C++
Mühlbauer AG (Festanstellung)
Oberhaching
5 Monate
2011-01 - 2011-05

ADTF

Debugger ADTF C++ ADAS
Debugger

Aufgabe: Die Daten aus einer Kamera zur Verkehrszeichenerkennung werden mit den Daten aus einem Navigationssystem fusioniert. Im Display eines Fahrzeuges wird das erkannte/gültige Verkehrszeichen dargestellt. Wenn auf Testfahrten ein falsches Zeichen erkannt wird, wird das dazu aufgenommene Video zur Analyse an den Entwickler geschickt.

  • Szenen-Analyse mit ADTF
ADTF C++ ADAS
Electrobit GmbH (Festanstellung)
München
9 Monate
2010-01 - 2010-09

Objekterkennung in Videos

Software-Entwickler OpenCV Mathematica
Software-Entwickler

Implementierung modelbasierter Algorithmen zur Erkennung und Lagebestimmung von Objekten in Videos.

1. Algorithmus

  • Erstellung eines 3D-Modells
  • On the fly Berechnung von Key-Points auf dem 3D-Modell inklusive der 3D-Koordinaten
  • Zur Laufzeit wird nach Key-Points im Bild gesucht
  • In einer RANSAC Prozedur werden die Key-Points im aktuellen Bild auf die Key-Points des Modells gematched
  • Die Position relativ zur Position der Kamera wird berechnet

2. Algorithmus

  • Erstellung eines geometrischen Linien-Modells des zu erkennenden Objektes
  • Im Bild wird mit Hilfe der Hough-Transformation nach Linien gesucht
  • Es wird nach einer Transformation gesucht, die die Linien des Modells auf die Linien im Bild transformiert 
  • Es wird überprüft, ob die transformierten Linien zu den Linien im Bild passen
OpenCV Mathematica
Masterarbeit
Braunschweig
1 Jahr
2009-01 - 2009-12

Stereo-System

Software-Entwickler C# Windows Forms OpenGL
Software-Entwickler

Entwicklung eines Videobasierten Stereo-Systems inklusive einer GUI in C#.

  • Erkennen von Markern in den Bildern zweier kalibrierter Kameras 
  • Zuordnen der Marker in den Bildern
  • Berechnung der 3D-Koordinaten durch Bündel-Ausgleichung
  • Live Darstellung der Kamera Bilder in einer GUI
  • Darstellung der 2D- und 3D-Koordinaten in einer Tabelle und als 3D-Modell mit OpenGL
C# Windows Forms OpenGL
Linearis3D GmbH
Braunschweig
11 Monate
2008-10 - 2009-08

Sparse Bundle Adjustment Speedup Strategies

Software-Entwickler
Software-Entwickler

Mit Hilfe eines Tools (Bundler) werden Kameras ohne Verwendung von Markern kalibriert. Dieser Prozess wird durch Parallelisierung und Splitting der Videos beschleunigt.

  • Das Video der zu kalibrierenden Kamera wird in mehrere Teile zerlegt
  • Jedes Teilvideo enthält Bilder, die in allen Teilvideos enthalten sind
  • Mit Hilfe des Bundlers werden die externen Kameraparameter berechnet
  • Anhand der in allen Videos enthaltenen Bilder werden die verschiedenen Kamera-Positionen in ein Koordinatensystem transformiert
Qt
Projektarbeit / Paper
Braunschweig
9 Monate
2008-11 - 2009-07

Binär Codierte Marken

Software-Entwickler
Software-Entwickler

Implementierung eines Algorithmus zur Erkennung von binär codierten Marken (Kreise) für die Kalibrierung eines Photogrammetrie-Sytemes.

  • Im Bild werden mit Hilfe quadratischer Optimierung Kreise gesucht
  • Kreise mit einem geringen quadratischen Fehler werden auf eine binäre Kodierung untersucht
  • Hierzu wird relativ zum Kreisradius nach hellen Blobs gesucht
  • Blobs an bestimmten Stellen um den Kreis entsprechen einzelnen Bits
  • Die errechnete binäre Zahl wird durch eine Prüfsumme überprüft 
Linearis3D GmbH
Braunschweig
4 Monate
2009-01 - 2009-04

Ansteuerung von Industriekameras

Software-Entwickler
Software-Entwickler

Ansteuerung und Integration von Industriekameras in ein Software-Projekt.

  • Integration von AVT Kameras

Linearis3D GmbH
Braunschweig
6 Monate
2008-04 - 2008-09

Definition von Softwaretests

Tester
Tester

Definition von Regressionstests.

David GmbH (Hiwi)
Braunschweig
9 Monate
2006-01 - 2006-09

Börsendaten per DAB

Java 1.5 Axis Web Services ...
  • Implementierung des DAB-MOT Protokolls und einer GUI zur Visualisierung von Börsendaten in Java.
  • Über einen Web-Service werden in Echtzeit Börsendaten abgefragt. Die Börsendaten werden auf einen Server des NDR hochgeladen, von wo sie in das DAB Signal eingespeist werden.
Java 1.5 Axis Web Services SOAP
Bachelorarbeit

Aus- und Weiterbildung

Aus- und Weiterbildung

4 Jahre
2006-10 - 2010-09

Informatik

MSc Informatik, Technische Universität Braunschweig
MSc Informatik
Technische Universität Braunschweig

- Vertiefung: Robotik, Verteilte Systeme, Programmierung und Reaktive Systeme

- Schwerpunkt im Bereich Bildverarbeitung und Computer Vision / Sehen

1 Monat
2008-07 - 2008-07

ISTQB: Certified Tester

ISTQB: Certified Tester, Technische Universität Braunschweig
ISTQB: Certified Tester
Technische Universität Braunschweig
4 Jahre
2002-10 - 2006-09

Mathematik/Informatik

BSc Mathematik/Informatik, Universität Osnabrück
BSc Mathematik/Informatik
Universität Osnabrück

Allgemeine, praktische und theoretische Informatik

Grundlagen der Mathematik

Position

Position

Ich verfüge über umfangreiche Erfahrungen in der Softwareentwicklung mit C++, C#, Java und Matlab. Mein bisheriger Schwerpunkt liegt im Bereich Computer Vision und Bildverarbeitung. Ich habe mehrere Algorithmen für anspruchsvolle Bildverarbeitungs-Aufgabenstellungen konzeptioniert und implementiert. Darüber hinaus kann ich praktische Erfahrungen im Bereich Machine Learning und der Embedded Linux Entwicklung vorweisen. Ich verfüge über eine schnelle Auffassungsgabe und löse algorithmische Probleme empirisch auf kreative Art und Weise. Meine fundierten Kenntnisse ermöglichen es mir, mich schnell in neue Bereiche einzuarbeiten.

Kompetenzen

Kompetenzen

Top-Skills

Bildverarbeitung C++ OpenCV C# OOP Embedded C++ Linux Java Python Machine Learning

Schwerpunkte

Algorithmen
Bildverarbeitung
Kryptographie
OpenCV
Optical Character Recognition

In meinem Studium und bisherigen Projekten habe ich den Schwerpunkt auf den Bereich Bildverarbeitung gelegt. Ich habe mehrere Algorithmen konzipiert und entwickelt, darunter einen größen- und fontinvarianten OCR Algorithmus. Ich verfüge über sehr tiefgehende Kenntnisse in der Open Source Bibliothek OpenCV, die ich seit 9 Jahren bei der Entwicklung von innovativen Algorithmen verwende.

Aufgabenbereiche

Meine bisherigen Aufgabenbereiche liegen im Bereich:

- Algorithmen Entwicklung

- Software Design

- GUI Entwicklung

- Debugging

- Testen

- Schulungen

- Inbetriebnahme von Maschinen

Produkte / Standards / Erfahrungen / Methoden

ADAS
ADTF
Axis
Boost
Eclipse
Git
Jenkins
KDevelop
Kryptographie
Machine Learning
Mathematica
Mercurial
MFC
Microsoft Visual Studio
OpenCV
OpenGL
Posix
Qt
REST
Scrum
SOAP
STL
Support Vector Machine
TFS
WCF
Web Services
Windows Forms
Windows-Forms
WPF
Yocto

Betriebssysteme

Android
Docker
Embedded Linux
OPC UA
Windows

Ich verfüge über Kenntnisse in der Linux Embedded Entwicklung. Ich habe für ein Embedded Linux Projekt eine sehr effiziente Entwicklungsumgebung aufgesetzt. Entwickelt wurde eine Applikation für die automatische Video Analyse. Die Applikation läuft auf Kameras mit unterschiedlichen Ziel-Architekturen (ARM).

Programmiersprachen

C
C#
C++
C++17
Java
Java 1.5
Lua
MATLAB
Python
Scade
Tesseract

Datenbanken

SQL

Datenkommunikation

HTTP

Hardware

ARM

Design / Entwicklung / Konstruktion

Design Patterns
OOP
UML

Ich habe Erfahrungen im Design von Softwareprojekten beginnend von Scratch. Ich lege Wert auf einen modularen minimalistischen Entwurf und wende dabei agile Methoden an. Des Weiteren ist es mir wichtig, Grundlagen zu schaffen, die ein effizientes Entwickeln ermöglichen.

Branchen

Branchen

- Maschinenbau

- Automotive

- Messtechnik

- IT

Einsatzorte

Einsatzorte

Deutschland, Österreich, Schweiz

Weltweiter Einsatz möglich.

möglich

Projekte

Projekte

2 Jahre 10 Monate
2022-02 - heute

Druckinspektion

Software-Entwickler C++ OpenCV
Software-Entwickler

  • Implementierung von Funktionen und Optimierungen für einen Algorithmus zur Erkennung von Defekten auf den bedruckten Druckstoffen einer Offsetdruck-Maschine
  • Implementierung eines Verfahrens zu Erkennung von Schmier-Effekten
  • Integration der Algorithmen in die vorhandene Inspektionssoftware

C++ OpenCV
Heidelberger Druckmaschinen
Heidelberg
1 Jahr 11 Monate
2022-05 - 2024-03

Software-Entwicklung für Embedded Systeme

Software-Entwickler ANSI-C Python Linux ...
Software-Entwickler
Software-Entwicklung für Embedded Systeme
· Konzeption und Entwicklung von Firmware für Pro-Audio Geräte, wie Systemverstärker, Signalprozessoren und spezialisierte Audionetzwerkgeräte für MILAN (TSN/AVB) und Dante
· Embedded Anwendungen unter Linux für ARM und x86
· Integration und Test der entwickelten Software auf Modul- und Systemebene
· Spezifikation, Aufgabenplanung, Versionsverwaltung und Dokumentation
· Einführung neuer Technologien und Tools Gestaltung von System- und Produktkonzepten
ANSI-C Python Linux Audio Coding realtime audio
d&b audiotechnik GmbH & Co. KG
Remote / Backnang
6 Monate
2021-09 - 2022-02

Blind Detection

Software-Entwickler C++ Linux Docker ...
Software-Entwickler
  • Portierung und Erweiterung eines Algorithmus zur Detektion einer abgedeckten Überwachungskamera auf ein aktuelles SDK
  • Implementierung neuer Funktionen für eine Video Management System
Windows
C++ Linux Docker C#
Strabag ISS GmbH
Berlin
6 Monate
2021-05 - 2021-10

Particle Detection

Software-Architekt C# C++ OpenCV
Software-Architekt
Entwicklung eines Prototyps um Defekte und Partikel auf einer Photomaske zu identifizieren. Die Bilder der Photomaske werden mit einem Elektronenrastermikroskop aufgenommen.
Git Azure Windows
C# C++ OpenCV
Darmstadt
5 Monate
2021-01 - 2021-05

Image Stitching

Software-Entwickler C++ Mercurial KDevelop
Software-Entwickler
  • Implementierung von Filtern für eine Steuerungssoftware zur Steuerung von Laserschweißanlagen. 
  • Analyse eines bestehenden Algorithmus zur Erstellung einer großen Fotografie aus mehreren kleineren Aufnahmen.
  • Ausarbeitung von Maßnahmen zur Optimierung des Algorithmus und zur Minimierung von auftretenden Artefakten.
C++ Mercurial KDevelop
Precitec GmbH & Co. KG
Gaggenau
1 Jahr 3 Monate
2019-10 - 2020-12

CUPS embedded

Software-Entwickler C++ Qt Python
Software-Entwickler
  • Für ein Wäge-Terminal, mit einer Linux Yocto Distribution als Betriebssystem, wurde die CUPS Druckersystemsoftware in das User-Interface integriert.
  • Anpassung des Yocto-Rezeptes für CUPS und die verwendeten CUPS-Filter.
  • Implementierung/Wartung einer Software zur Erstellung von Etiketten (im XML-Format), welche auf dem Wäge-Terminal in ein druckbares PDF-Format konvertiert werden.
  • Implementierung eines embedded PDF-Renderers, welcher als Input ein proprietäres XML-Format hat und hieraus ein PDF-Dokument erstellt, welches mit Hilfe der CUPS-Druckersystemsoftware von beliebigen Druckern verarbeitet werden kann.
Eclipse Yocto
C++ Qt Python
Minebea Intec GmbH
Hamburg
7 Monate
2019-04 - 2019-10

Überwachung eines 3D-Druckes

Software-Entwickler OpenCV C++ Scrum ...
Software-Entwickler

Implementierung einer QM-Software zur optischen Überwachung des Pulver-Bettes eines 3D-Metaldruckers mittels einer Kamera, um die einzelnen Prozessschritte zu dokumentieren. Zusätzlich wurden Bildverbesserungsmaßnahmen durchgeführt.

Git OPC UA
OpenCV C++ Scrum Jenkins Windows
Concept Laser GmbH
Lichtenfels, Bayern
4 Monate
2019-01 - 2019-04

Remote Stations-Software

Software-Entwickler C# WCF REST ...
Software-Entwickler

Erstellung einer Softwareschnittstelle als Windows Service zur Auslesung von Daten von Siplace Bestückautomaten im Projekt ?Remote Stations-Software? mit dem Ziel, die installierte Software, die Softwareversion der Stationssoftware und die Errordaten über LAN auslesen und an einen im LAN befindlichen Rechner übermitteln kann.

C# WCF REST Windows
ASM Assembly Systems GmbH & Co. KG
München
1 Jahr 1 Monat
2018-02 - 2019-02

ID-Card Reader

Software-Entwickler OpenCV Python C++ ...
Software-Entwickler

Implementierung eines Prototyps zur Auslesung einer ID-Karte mittels einer Kamera. Das aufgenommene Bild wird in einem ersten Schritt so aufbereitet, dass die Datenfelder mit einem üblichen OCR-Tool (Tesseract) ausgelesen werden können. Zusätzlich wird ein Tool implementiert, um den Algorithmus an unterschiedliche ID-Karten anzupassen.

Tesseract
OpenCV Python C++ C#
Identt GmbH
München
11 Monate
2017-06 - 2018-04

Trouble-Shooter

Software-Entwickler Docker Git Scrum ...
Software-Entwickler

Für Teile eines komplexen verteilten Systems musste nachträglich eine Entwicklungsumgebung aufgesetzt werden, mit der der Code effizient debugged werden kann. Es haben sich Fehler eingeschlichen, die über loggen nur schwer identifiziert werden konnten. Die Applikation wurde in C#/Mono und PHP geschrieben und in einem Docker-Container gehosted.

  •  Entwicklung von Cloud-Services
  •  Datenbankentwicklung
  •  Entwicklung von automatisierten Tests
Docker Git Scrum Python SQL C++ Eclipse C#
München
6 Monate
2016-10 - 2017-03

Linux Embedded

Software Architekt Posix TFS Eclipse ...
Software Architekt

Aufgabe: Algorithmen zur automatisierten Überwachung werden auf Kameras verschiedener Hersteller (HikVision, Hanwha, Axis) portiert. Auf diesen Kameras läuft ein Linux Embedded mit unterschiedlicher Hardware-Architektur. Die Applikation zur Ausführung der Algorithmen soll auf den Kamera-Plattformen identisch sein. Entwickelt wurde nach SCRUM.

  • Konfigurieren von Eclipse für verschiedene Targets 
  • Erstellung von Shell-Skripten um Build-Prozesse zu automatisieren
  • Integration des TFS in die Linux Entwicklungsumgebung
  • Entwurf einer einheitlichen Architektur für verschiedene Kamerahersteller
  • Erstellung einer Plattformunabhängigen Library für die Targets (ARM, Intel, Linux, Windows)
  • Aufsetzen einer effizienten Desktop Entwicklungs- und Debugging-Umgebung
  • Streamen der Videos von der Kamera in die Desktop-Entwicklungsumgebung

ARM Embedded Linux HTTP
Posix TFS Eclipse C++ Video
Securiton GmbH (Festanstellung)
München
2 Monate
2016-10 - 2016-11

CoreTester-GUI

Software-Entwickler Microsoft Visual Studio
Software-Entwickler

Entwicklung einer einfachen GUI für ein Test-Framework in C#.

  • GUI mit Windows Forms entwickelt
Windows-Forms
Microsoft Visual Studio
Securiton GmbH (Festanstellung)
München
9 Monate
2016-01 - 2016-09

Foto-Vergleich

Software-Entwickler C++ OpenCV Windows
Software-Entwickler

Aufgabe: Es soll die Druckqualität von gelaserten Fotos überprüft werden. Besondere Anforderungen: Die Skalierung der Bilder schwankt, die Laser lasern die Bilder nicht in der gleichen Helligkeit.

  • Grauwert-Kalibrierung anhand eines bekannten Farbmustern durchführen
  • Foto durch Korrelator lokalisieren
  • Exakte Skalierung des gelaserten Fotos bestimmen
  • Foto entsprechend der errechneten Skalierung skalieren
  • Foto ggf. in einen anderen Farbraum transformieren (LBP, Canny, Sobel, HSV)
  • Referenz-Foto mit gelasertem Foto vergleichen
  • Gefundene Defekte klassifizieren
C++ OpenCV Windows
Mühlbauer AG (Festanstellung)
München
5 Monate
2015-08 - 2015-12

OCR GUI

Software-Entwickler WPF
Software-Entwickler

Entwickeln einer GUI in WPF, um die OCR zu konfigurieren.

WPF
privat
1 Jahr
2015-01 - 2015-12

Optical Character Recognition

Software-Entwickler OpenCV Support Vector Machine Machine Learning
Software-Entwickler

Aufgabe: Entwicklung einer größen- und fontinvarianten OCR für normale Zeichen mit Hilfe einer Support Vector Machine. Der OCR-Algorithmus lässt sich in einen Einlern- und einen Erkennungsteil unterteilen.

Einlernen:

  • Es werden künstlich Zeichen mit unterschiedlichen Fonts erstellt
  • Die künstlichen Zeichen werden auf eine einheitliche Größe skaliert
  • Gradienten der Zeichen werden berechnet
  • Mit den errechneten Gradienten wird eine Support Vector Machine trainiert

Erkennung:

  • Es wird nach Blobs im Bild gesucht
  • Die gefundenen Blobs werden auf eine einheitliche Größe skaliert
  • Gradienten der Blobs werden berechnet
  • Die Gradienten der Blobs werden mit der Support Vector Machine als Buchstaben klassifiziert

OpenCV Support Vector Machine Machine Learning
privat
5 Monate
2014-05 - 2014-09

GUI Design

Software-Entwickler
Software-Entwickler

GUI-Design mit Microsoft Foundation Classes (MFC)

MFC
Mühlbauer AG
München
6 Monate
2013-01 - 2013-06

ISO 1831

Software-Entwickler C++ OpenCV Qt
Software-Entwickler

Es soll sichergestellt werden, dass die Druckqualität der Machine Readable Zone (MRZ) in Reisepässen ISO 1831 entspricht. Die Vorlagen der Zeichen werden aus dem OCR-B TrueType Font generiert.

  • Überprüfung des Kontrastes des schwarzen Zeichenbereichs
  • Überprüfung der minimalen Strichbreite eines Zeichens
  • Überprüfung der maximalen Strichbreite eines Zeichens
  • Überprüfung des Kontrastes des Skeletts eines Buchstabens
  • Überprüfung auf Dreck im hellen Bereich eines Buchstabens
  • Überprüfung auf Flecken im schwarzen Bereich eines Buchtstabens
  • Überprüfung der korrekten Ausrichtung eines Buchstabens
  • Überprüfung der korrekten Größe eines Buchstabens

C++ OpenCV Qt
Mühlbauer AG (Festanstellung)
München
8 Monate
2012-01 - 2012-08

Dotted OCR

Software Entwickler OpenCV C++
Software Entwickler

Aufgabe: Ein vorhandener Algorithmus zur Erkennung einer Seriennummer bestehend aus perforierten (dotted) Zeichen, wie sie in Reispässen verwendet werden, erkennt oft falsche Zeichen. Es soll ein neuer Algorithmus konzeptioniert und implementiert werden. Der Algorithmus soll größen- und rotationsinvariant sein.

Der Algorithmus lässt sich in zwei Phasen aufteilen, der Einlernphase und der Erkennungsphase:

Einlernen:

  • Segmentierung der Dots mit einer adaptiven Schwelle
  • Normierung der Dots eines Buchstabens / Herausrechnen der Skalierung
  • Pro Zeichen existiert eine Menge an Koordinaten (normalerweise zwischen 5-10), welche einen perforierten Buchstaben beschreiben

Erkennung:

  • Segmentierung der Dots mit einer adaptiven Schwelle
  • Clustern der Dots durch morphologische (dilate + erode) Operationen, um die Dots einzelner Buchstaben zusammenzufassen
  • Translation der Dots eines Buchstabens in den Koordinatenursprung
  • Normierung der Dots eines Buchstabens / Herausrechnen der Skalierung
  • Bestimmung einer Rotation, um den Buchstaben aus der Erkennungsphase auf den Buchstaben aus der Einlernphase zu matchen

Der neu entworfene Algorithmus ist skalierungs- und rotationsinvariant und hat keine Fehlerkennung. Des Weiteren kann er flexibel konfiguriert werden, mit Focus auf Performance oder Erkennungsgüte auch bei schlechter Bildqualität.

OpenCV C++
Mühlbauer AG (Festanstellung)
Oberhaching
5 Monate
2011-01 - 2011-05

ADTF

Debugger ADTF C++ ADAS
Debugger

Aufgabe: Die Daten aus einer Kamera zur Verkehrszeichenerkennung werden mit den Daten aus einem Navigationssystem fusioniert. Im Display eines Fahrzeuges wird das erkannte/gültige Verkehrszeichen dargestellt. Wenn auf Testfahrten ein falsches Zeichen erkannt wird, wird das dazu aufgenommene Video zur Analyse an den Entwickler geschickt.

  • Szenen-Analyse mit ADTF
ADTF C++ ADAS
Electrobit GmbH (Festanstellung)
München
9 Monate
2010-01 - 2010-09

Objekterkennung in Videos

Software-Entwickler OpenCV Mathematica
Software-Entwickler

Implementierung modelbasierter Algorithmen zur Erkennung und Lagebestimmung von Objekten in Videos.

1. Algorithmus

  • Erstellung eines 3D-Modells
  • On the fly Berechnung von Key-Points auf dem 3D-Modell inklusive der 3D-Koordinaten
  • Zur Laufzeit wird nach Key-Points im Bild gesucht
  • In einer RANSAC Prozedur werden die Key-Points im aktuellen Bild auf die Key-Points des Modells gematched
  • Die Position relativ zur Position der Kamera wird berechnet

2. Algorithmus

  • Erstellung eines geometrischen Linien-Modells des zu erkennenden Objektes
  • Im Bild wird mit Hilfe der Hough-Transformation nach Linien gesucht
  • Es wird nach einer Transformation gesucht, die die Linien des Modells auf die Linien im Bild transformiert 
  • Es wird überprüft, ob die transformierten Linien zu den Linien im Bild passen
OpenCV Mathematica
Masterarbeit
Braunschweig
1 Jahr
2009-01 - 2009-12

Stereo-System

Software-Entwickler C# Windows Forms OpenGL
Software-Entwickler

Entwicklung eines Videobasierten Stereo-Systems inklusive einer GUI in C#.

  • Erkennen von Markern in den Bildern zweier kalibrierter Kameras 
  • Zuordnen der Marker in den Bildern
  • Berechnung der 3D-Koordinaten durch Bündel-Ausgleichung
  • Live Darstellung der Kamera Bilder in einer GUI
  • Darstellung der 2D- und 3D-Koordinaten in einer Tabelle und als 3D-Modell mit OpenGL
C# Windows Forms OpenGL
Linearis3D GmbH
Braunschweig
11 Monate
2008-10 - 2009-08

Sparse Bundle Adjustment Speedup Strategies

Software-Entwickler
Software-Entwickler

Mit Hilfe eines Tools (Bundler) werden Kameras ohne Verwendung von Markern kalibriert. Dieser Prozess wird durch Parallelisierung und Splitting der Videos beschleunigt.

  • Das Video der zu kalibrierenden Kamera wird in mehrere Teile zerlegt
  • Jedes Teilvideo enthält Bilder, die in allen Teilvideos enthalten sind
  • Mit Hilfe des Bundlers werden die externen Kameraparameter berechnet
  • Anhand der in allen Videos enthaltenen Bilder werden die verschiedenen Kamera-Positionen in ein Koordinatensystem transformiert
Qt
Projektarbeit / Paper
Braunschweig
9 Monate
2008-11 - 2009-07

Binär Codierte Marken

Software-Entwickler
Software-Entwickler

Implementierung eines Algorithmus zur Erkennung von binär codierten Marken (Kreise) für die Kalibrierung eines Photogrammetrie-Sytemes.

  • Im Bild werden mit Hilfe quadratischer Optimierung Kreise gesucht
  • Kreise mit einem geringen quadratischen Fehler werden auf eine binäre Kodierung untersucht
  • Hierzu wird relativ zum Kreisradius nach hellen Blobs gesucht
  • Blobs an bestimmten Stellen um den Kreis entsprechen einzelnen Bits
  • Die errechnete binäre Zahl wird durch eine Prüfsumme überprüft 
Linearis3D GmbH
Braunschweig
4 Monate
2009-01 - 2009-04

Ansteuerung von Industriekameras

Software-Entwickler
Software-Entwickler

Ansteuerung und Integration von Industriekameras in ein Software-Projekt.

  • Integration von AVT Kameras

Linearis3D GmbH
Braunschweig
6 Monate
2008-04 - 2008-09

Definition von Softwaretests

Tester
Tester

Definition von Regressionstests.

David GmbH (Hiwi)
Braunschweig
9 Monate
2006-01 - 2006-09

Börsendaten per DAB

Java 1.5 Axis Web Services ...
  • Implementierung des DAB-MOT Protokolls und einer GUI zur Visualisierung von Börsendaten in Java.
  • Über einen Web-Service werden in Echtzeit Börsendaten abgefragt. Die Börsendaten werden auf einen Server des NDR hochgeladen, von wo sie in das DAB Signal eingespeist werden.
Java 1.5 Axis Web Services SOAP
Bachelorarbeit

Aus- und Weiterbildung

Aus- und Weiterbildung

4 Jahre
2006-10 - 2010-09

Informatik

MSc Informatik, Technische Universität Braunschweig
MSc Informatik
Technische Universität Braunschweig

- Vertiefung: Robotik, Verteilte Systeme, Programmierung und Reaktive Systeme

- Schwerpunkt im Bereich Bildverarbeitung und Computer Vision / Sehen

1 Monat
2008-07 - 2008-07

ISTQB: Certified Tester

ISTQB: Certified Tester, Technische Universität Braunschweig
ISTQB: Certified Tester
Technische Universität Braunschweig
4 Jahre
2002-10 - 2006-09

Mathematik/Informatik

BSc Mathematik/Informatik, Universität Osnabrück
BSc Mathematik/Informatik
Universität Osnabrück

Allgemeine, praktische und theoretische Informatik

Grundlagen der Mathematik

Position

Position

Ich verfüge über umfangreiche Erfahrungen in der Softwareentwicklung mit C++, C#, Java und Matlab. Mein bisheriger Schwerpunkt liegt im Bereich Computer Vision und Bildverarbeitung. Ich habe mehrere Algorithmen für anspruchsvolle Bildverarbeitungs-Aufgabenstellungen konzeptioniert und implementiert. Darüber hinaus kann ich praktische Erfahrungen im Bereich Machine Learning und der Embedded Linux Entwicklung vorweisen. Ich verfüge über eine schnelle Auffassungsgabe und löse algorithmische Probleme empirisch auf kreative Art und Weise. Meine fundierten Kenntnisse ermöglichen es mir, mich schnell in neue Bereiche einzuarbeiten.

Kompetenzen

Kompetenzen

Top-Skills

Bildverarbeitung C++ OpenCV C# OOP Embedded C++ Linux Java Python Machine Learning

Schwerpunkte

Algorithmen
Bildverarbeitung
Kryptographie
OpenCV
Optical Character Recognition

In meinem Studium und bisherigen Projekten habe ich den Schwerpunkt auf den Bereich Bildverarbeitung gelegt. Ich habe mehrere Algorithmen konzipiert und entwickelt, darunter einen größen- und fontinvarianten OCR Algorithmus. Ich verfüge über sehr tiefgehende Kenntnisse in der Open Source Bibliothek OpenCV, die ich seit 9 Jahren bei der Entwicklung von innovativen Algorithmen verwende.

Aufgabenbereiche

Meine bisherigen Aufgabenbereiche liegen im Bereich:

- Algorithmen Entwicklung

- Software Design

- GUI Entwicklung

- Debugging

- Testen

- Schulungen

- Inbetriebnahme von Maschinen

Produkte / Standards / Erfahrungen / Methoden

ADAS
ADTF
Axis
Boost
Eclipse
Git
Jenkins
KDevelop
Kryptographie
Machine Learning
Mathematica
Mercurial
MFC
Microsoft Visual Studio
OpenCV
OpenGL
Posix
Qt
REST
Scrum
SOAP
STL
Support Vector Machine
TFS
WCF
Web Services
Windows Forms
Windows-Forms
WPF
Yocto

Betriebssysteme

Android
Docker
Embedded Linux
OPC UA
Windows

Ich verfüge über Kenntnisse in der Linux Embedded Entwicklung. Ich habe für ein Embedded Linux Projekt eine sehr effiziente Entwicklungsumgebung aufgesetzt. Entwickelt wurde eine Applikation für die automatische Video Analyse. Die Applikation läuft auf Kameras mit unterschiedlichen Ziel-Architekturen (ARM).

Programmiersprachen

C
C#
C++
C++17
Java
Java 1.5
Lua
MATLAB
Python
Scade
Tesseract

Datenbanken

SQL

Datenkommunikation

HTTP

Hardware

ARM

Design / Entwicklung / Konstruktion

Design Patterns
OOP
UML

Ich habe Erfahrungen im Design von Softwareprojekten beginnend von Scratch. Ich lege Wert auf einen modularen minimalistischen Entwurf und wende dabei agile Methoden an. Des Weiteren ist es mir wichtig, Grundlagen zu schaffen, die ein effizientes Entwickeln ermöglichen.

Branchen

Branchen

- Maschinenbau

- Automotive

- Messtechnik

- IT

Vertrauen Sie auf Randstad

Im Bereich Freelancing
Im Bereich Arbeitnehmerüberlassung / Personalvermittlung

Fragen?

Rufen Sie uns an +49 89 500316-300 oder schreiben Sie uns:

Das Freelancer-Portal

Direktester geht's nicht! Ganz einfach Freelancer finden und direkt Kontakt aufnehmen.