Denis Bose nicht verfügbar bis 30.09.2020

Denis Bose

C++ C# Java Linux Embedded OpenCV Bildverarbeitung Algorithmik Kryptographie Machine Learning

nicht verfügbar bis 30.09.2020
Profilbild von Denis Bose C++ C# Java Linux Embedded OpenCV Bildverarbeitung Algorithmik Kryptographie Machine Learning aus Bodenmais
  • 94249 Bodenmais Freelancer in
  • Abschluss: Master of Science Informatik
  • Stunden-/Tagessatz: nicht angegeben
    Verhandelbar
  • Sprachkenntnisse: deutsch (Muttersprache) | englisch (verhandlungssicher)
  • Letztes Update: 15.05.2020
SCHLAGWORTE
PROFILBILD
Profilbild von Denis Bose C++ C# Java Linux Embedded OpenCV Bildverarbeitung Algorithmik Kryptographie Machine Learning aus Bodenmais
SKILLS
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.
PROJEKTHISTORIE
10/2016 - 03/2017 Linux Embedded
Rolle: Software Architekt
Kunde: Securiton GmbH (Festanstellung)
Einsatzort: München

Aufgaben: 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

Kenntnisse:Posix, TFS, Eclipse, C++, Video
Eingesetzte Produkte:ARM, Embedded Linux, HTTP

10/2016 - 11/2016 CoreTester-GUI
Rolle: Software-Entwickler
Kunde: Securiton GmbH (Festanstellung)
Einsatzort: München
Aufgaben: Entwicklung einer einfachen GUI für ein Test-Framework in C#.

- GUI mit Windows Forms entwickelt

Kenntnisse:Microsoft Visual Studio
Eingesetzte Produkte:Windows-Forms

01/2016 - 09/2016 Foto-Vergleich
Rolle: Software-Entwickler
Kunde: Mühlbauer AG (Festanstellung)
Einsatzort: München
Aufgaben: 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 Kalibrieren
- Foto ggf. in einen anderen Farbraum transformieren (LBP, Canny, Sobel, HSV)
- Referenz-Foto mit gelaserten Foto vergleichen
- Gefundene Defekte klassifizieren

Kenntnisse:C++, OpenCV

08/2015 - 12/2015 OCR GUI
Rolle: Software-Entwickler
Aufgaben: Entwickeln einer GUI in WPF um die OCR zu konfigurieren.
Kenntnisse: WPF

01/2015 - 12/2015 Optical Character Recognition
Rolle: Software-Entwickler
Aufgaben: 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 erechneten 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

Kenntnisse:OpenCV, Support Vector Machine, Machine Learning

05/2014 - 09/2014 GUI Design
Rolle: Software-Entwickler
Kunde: Mühlbauer AG
Einsatzort: München
Aufgaben: GUI-Design mit Microsoft Foundation Classes (MFC)
Eingesetzte Produkte:MFC

01/2013 - 06/2013 ISO 1831
Rolle: Software-Entwickler
Kunde: Mühlbauer AG (Festanstellung)
Einsatzort: München
Aufgaben: 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

Kenntnisse:C++, OpenCV, Qt

01/2013 - 05/2013 Android Game
Rolle: Software-Entwickler
Einsatzort: München
Aufgaben: Entwickelt wurde ein Retro-Spiel (Asteroids) für Android.

- Einfache 2d-Darstellung der bewegten Objekte
- Sound-Integration
- Benutzer-Interaktion

Eingesetzte Produkte:Android, Eclipse

01/2012 - 08/2012 Dotted OCR
Rolle: Software Entwickler
Kunde: Mühlbauer AG (Festanstellung)
Einsatzort: Oberhaching
Aufgaben: 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 Dotts eines Buchstabens / Herausrechnen der Skalierung
- Pro Zeichen existiert eine Menge an Koordinaten (normalerweise zwischen 5-10), welcher ein perforierten Buchstaben beschreibt

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 Dotts 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.

Kenntnisse:OpenCV, C++

01/2011 - 05/2011 ADTF
Rolle: Debugger
Kunde: Electrobit GmbH (Festanstellung)
Einsatzort: München

Aufgaben: 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

Kenntnisse:ADTF, C++, ADAS

01/2010 - 09/2010 Objekterkennung in Videos
Rolle: Software-Entwickler
Kunde: Masterarbeit
Einsatzort: Braunschweig
Aufgaben: 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 inklusiver 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 gemachted
- 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

Kenntnisse:OpenCV, Mathematica

01/2009 - 12/2009 Stereo-System
Rolle: Software-Entwickler
Kunde: Linearis3D GmbH
Einsatzort: München
Aufgaben: 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

Kenntnisse:C#, Windows Forms, OpenGL

10/2008 - 08/2009 Sparse Bundle Adjustment Speedup Strategies
Rolle: Software-Entwickler
Kunde: Projektarbeit / Paper
Einsatzort: Braunschweig
Aufgaben: 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

Eingesetzte Produkte:Qt

11/2008 - 07/2009 Binär Codierte Marken
Rolle: Software-Entwickler
Kunde: Linearis3D GmbH
Einsatzort: Braunschweig
Aufgaben: 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

01/2009 - 04/2009Ansteuerung von Industriekameras
Rolle: Software-Entwickler
Kunde: Linearis3D GmbH
Einsatzort: Braunschweig
Aufgaben: Ansteuerung und Integration von Industriekameras in ein Software-Projekt.

-Integration von AVT Kameras

04/2008 - 09/2008Definition von Softwaretests
Rolle: Tester
Kunde: David GmbH (Hiwi)
Einsatzort: Braunschweig
Aufgaben: Definition von Regressionstests.

01/2006 - 09/2006Börsendaten per DAB
Kunde: Bachelorarbeit
- 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.

Kenntnisse:Java 1.5, Axis, Web Services, SOAP
ZEITLICHE UND RÄUMLICHE VERFÜGBARKEIT
Weltweit
KONTAKTANFRAGE VERSENDEN

Nachricht:

Absenderdaten: