---
description: >-
  In diesem Abschnitt erläutern wir, wie die Erkennung und der Abgleich der
  Journey Times aus technischer Sicht funktionieren.
---

# Technisches Konzept

Um Fahrten von Fahrzeugen zu erkennen, muss dasselbe Fahrzeug an mehreren vordefinierten Orten erkannt werden. Das bedeutet, dass es einen speziellen Identifikator geben muss, um zu erfassen, ob es sich wirklich um dasselbe Fahrzeug handelt und nicht verschiedene.

Bei Fahrzeugen ist der eindeutige Identifikator natürlich das Nummernschild. Daher wird dieses für den Abgleich von Fahrzeugen an verschiedenen Standorten verwendet. Da Nummernschilder als personenbezogene Daten gelten, wird eine [Salt-Hashing-Funktion](https://de.wikipedia.org/wiki/Salt_\(Kryptologie\)) angewendet, um die personenbezogenen Daten zu pseudo-anonymisieren.

### Wie funktioniert das?&#x20;

Auf Grundlage unseres Standardanwendungsfalls für die Verkehrszählung wird das Objekt (Fahrzeug) zunächst erkannt und klassifiziert. Wenn das Journey-Time-Feature aktiviert ist, führt der Algorithmus eine Kennzeichenerkennung sowie -lesung für jedes detektierte Fahrzeug durch. Der _Raw String_ des Kennzeichens, also die unbearbeitete Zeichenabfolge, wird dann mit einem sogenannten Hashing-Mechanismus pseudonymisiert, und der pseudonymisierte Zufallstext wird im Rahmen eines Events, welches durch das Überfahren einer _Counting Line_ getriggert wird, über das verschlüsselte Netzwerk gesendet.&#x20;

Im folgenden Abschnitt werden die einzelnen Schritte näher beschrieben.

#### Fahrzeugerkennung

In jedem Videoframe werden Fahrzeuge erkannt und als Pkw, Lkw oder Bus klassifziert. Außerdem wird das Fahrzeug über die einzelnen Frames hinweg getrackt.

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2FDO2SugnfwtIxuUjUcpdQ%2Fdetect-vehicle.png?alt=media&#x26;token=69a12990-32a4-4f84-ac6b-c99ff6f4bb73" alt="" width="375"><figcaption><p>Das Fahrzeug wird erkannt</p></figcaption></figure>

#### Kennzeichenerkennung

Für jedes klassifizierte Fahrzeug wird nun das Nummernschild erkannt und dem Objekt entsprechend zugeordnet.

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2FlPsLAn2obKflLVioW5hO%2Fdetect-lp.png?alt=media&#x26;token=2da4e518-5869-409e-b57b-0cf74ec0d030" alt=""><figcaption><p>Das Kennzeichen wird erkannt</p></figcaption></figure>

#### Lesen des Kennzeichens

Nun wird für jedes erkannte Kennzeichen eine optische Zeichenerkennung (OCR) angewendet, um das Nummernschild zu lesen. Der Output ist ein Text, der die _Raw Strings_, also die Rohzeichenfolge, des Kennzeichens enthält.

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2Fdx89tGR8lmhh7FYCJRT6%2Fread-license-plate.png?alt=media&#x26;token=55e8b82b-d81c-4cd6-8762-e48646f61e2a" alt=""><figcaption><p>Lesen des Kennzeichens</p></figcaption></figure>

#### Pseudonymisierung des Kennzeichens (Hashing)

Um die Nummernschilder erfolgreich zu pseudonymisieren, erzeugt ein sogenannter _Salt Shaker_ zufällige _Salts_ im Backend (Cloud) und verteilt diese an die Edge-Geräte. Ein _Salt_ ist ein Zufallswert, der als Eingabe für das Hashing von Daten verwendet wird, z.B. von Passwörtern oder in unserem Fall eben von Nummernschildern. Dieser Zufallswert wird nicht im Backend gespeichert. Lediglich im Edge-Gerät, also etwa in der Perception Box, werden die _Salts_ kurzzeitig zwischengespeichert.

Um die Sicherheit vor potentiellen Angriffen zu gewährleisten und zu erhöhen, hat ein _Salt_ ein Gültigkeitsfenster von zwölf Stunden. Nach Ablauf dieser wird ein neues, zufällig generierter _Salt_ verwendet. Die folgende Grafik zeigt ein Beispiel für die Hashing-Funktion, die für die Kennzeichen verwendet wird:

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2FCHdpFKZM9XqQnetXFWPb%2Fpseudonymize-the-license-plate.png?alt=media&#x26;token=f6258641-ab60-41e8-97ac-93385b217057" alt=""><figcaption><p>Hashing-Prozess mit Salt Shaker</p></figcaption></figure>

Die vier _Salts_ werden vom _Salt Shaker_ erzeugt und an jedes Edge-Gerät verteilt. Um immer alle Fahrten zu erfassen, wird jedes Kennzeichen mit zwei _Salts_ gehasht. Grund dafür ist die Annahme, dass eine Fahrt potentiell länger dauern kann als die Gültigkeitsdauer eines _Salts_. Weitere Informationen dazu folgen im nächsten Abschnitt.

#### Event wird ausgelöst und gesendet

Wenn das Fahrzeug eine Counting Line überfährt, wird ein entsprechend Event mit den Hashes der erkannten Nummernschilder über MQTT an die Cloud (Microsoft Azure) gesendet und in einer strukturierten Datenbank gespeichert.

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2FjmpAYSpFkfvE6FzxTcZd%2Ftrigger-and-send-event.png?alt=media&#x26;token=3548a09a-bc86-4a98-936a-ba52ee54b83d" alt=""><figcaption><p>Das Event wird ausgelöst.</p></figcaption></figure>

####

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2Fdn0df8trC3L4ag2xIVLD%2Ftrigger-and-send-event-2.png?alt=media&#x26;token=00109d11-f88b-4d9d-919e-ccc7d4fa7d5c" alt=""><figcaption><p>Das Event wird dann vom Edge-Gerät in die Cloud übertragen.</p></figcaption></figure>

#### Abgleichen/Matching der _Journey Times_

In der Cloud wird die Datenbank regelmäßig auf mögliche Übereinstimmungen innerhalb des Hashes überprüft. Wie bereits erläutert, werden pro erkanntem Fahrzeug zwei Hashes erstellt. Wenn einer der beiden bei zwei verschiedenen Erkennungen identisch ist, wird er als eine Fahrt mit den entsprechenden Fahrtzeitinformationen, der Fahrzeugklasse, den Namen des Edge-Geräts und den GPS-Koordinaten des Edge-Geräts gespeichert.&#x20;

Falls derselbe Hash an mehreren Orten gefunden wird, wird eine sogenannte Multi-Hop-Fahrt basierend auf der Sortierung der Zeitstempel gespeichert (z.B. Fahrt von Ort A nach B nach C).

<figure><img src="https://508752542-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fg07Ug7acvIEhFVKfJrRj%2Fuploads%2FUPuarUhW8fyhYSk48L48%2Fmatch-event-on-possible-journeys.png?alt=media&#x26;token=b75cb218-a4cb-453d-8d1d-1e89a73c0b86" alt=""><figcaption><p>Zuweisung der Journey Time</p></figcaption></figure>

#### Anonymisierung der Daten

Nach zwölf Stunden, also der Gültigkeitsdauer des zur Pseudonymisierung des Kennzeichens verwendeten Salts, wird das pseudonymisierte Kennzeichen gelöscht. Durch diesen Vorgang werden die pseudonymisierten Daten entsprechend anonymisiert. Zusammengefasst bedeutet dies, dass nach zwölf Stunden nach der Erkennung des Fahrzeugs und des Kennzeichen sämtliche Daten anonymisiert sind.

\
