InviCode
Beschreibung
Einen Echtzeit-Videomodulator in Qt/C++ für unsichtbare Screen-Camera-Datenübertragung gebaut — vom Prototyp bis zum leistungsvalidierten Desktop-Tool.
Context
The InviCode research project at TU Dortmund’s Chair of Communication Technology explores a novel data transmission method: colored matrix codes are overlaid on digital images and videos. These codes are invisible to the human eye but can be decoded from camera recordings of the screen — enabling covert screen-to-camera communication.
Problem
The research team needed a desktop application that could overlay data codes onto live image and video feeds in real time. The tool had to support flexible configuration (modulation amplitude, sequence selection, corner markers), work with existing C/SDL rendering components, and run reliably on low-power hardware like standard work laptops.
Solution
I implemented the video modulator as a Windows desktop application in Qt/C++:
- Integrated existing matrix code generation and SDL video rendering components into a unified Qt application
- Built a graphical user interface allowing real-time control of all modulation parameters
- Added keyboard shortcuts for efficient operation during live demonstrations
- Conducted systematic performance testing across multiple hardware tiers
Outcome
- Delivered a fully functional modulator that handled real-time overlay with stable frame rates
- Validated that the application runs on low-power laptops, making it practical for field demonstrations
- The tool became part of the ongoing InviCode research pipeline at TU Dortmund
Tech Stack
Qt, C++, Image Processing
Kontext
Das Forschungsprojekt InviCode am Lehrstuhl für Kommunikationstechnik der TU Dortmund untersucht ein neuartiges Datenübertragungsverfahren: Farbige Matrixcodes werden digitalen Bildern und Videos überlagert. Diese Codes sind für das menschliche Auge unsichtbar, können aber durch Kameraaufnahmen des Bildschirms dekodiert werden — eine verdeckte Screen-to-Camera-Kommunikation.
Problem
Das Forschungsteam benötigte eine Desktop-Anwendung, die in Echtzeit Datencodes auf Live-Bild- und Videofeeds überlagern kann. Das Tool musste flexible Konfiguration unterstützen (Modulationsamplitude, Sequenzwahl, Eckmarker), mit bestehenden C/SDL-Rendering-Komponenten arbeiten und zuverlässig auf leistungsschwacher Hardware wie Standard-Arbeitslaptops laufen.
Lösung
Ich habe den Videomodulator als Windows-Desktop-Anwendung in Qt/C++ implementiert:
- Bestehende Matrixcode-Generierung und SDL-Video-Rendering in eine einheitliche Qt-Anwendung integriert
- Eine grafische Benutzeroberfläche mit Echtzeit-Steuerung aller Modulationsparameter entwickelt
- Tastaturkürzel für effiziente Bedienung während Live-Demonstrationen hinzugefügt
- Systematische Leistungstests auf verschiedenen Hardware-Stufen durchgeführt
Ergebnis
- Einen voll funktionsfähigen Modulator geliefert, der Echtzeit-Overlay mit stabilen Frameraten bewältigt
- Validiert, dass die Anwendung auf leistungsschwachen Laptops läuft — praktisch für Feldvorführungen
- Das Tool wurde Teil der laufenden InviCode-Forschungspipeline an der TU Dortmund
Tech Stack
Qt, C++, Bildverarbeitung