Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ss18:teilprojekte:heatmaps

Heatmaps

Der Nutzen

Eine Heatmap ist ein guter Weg, um große Mengen von Daten, übersichtlich und intuitiv wiederzugeben, sodass man auf einem Blick die wichtigsten Sachverhalte erkennen kann. Da wir im Mathesis-Projektlabor mit sehr vielen Daten hantiert haben (beim Tracking der Pucks kam pro Frame und pro Puck ein Koordinatenpaar und ein Geschwindigkeitswert, was sich bei einer Kamera mit 60 Frames pro Sekunde und Videos von manchmal mehreren Minuten Länge, zu mehreren zehntausend Koordinatenpaaren und ebenso vielen Geschwindigkeitswerten. Da man, wenn man sich diese Werte allein anguckt, nicht viel aus ihnen herauslesen kann, brauchten wir eine Möglikeit, diese Werte ersichtlich zu machen. Wegen ihrer optischen Einfachheit und Effizienz war eine Heatmap unsere erste Idee, da es sich das Mathesis-Labor dieses Semester allerdings zum Ziel gemacht hat, ein Programm für das Physik-Grundpraktikum zu erstellen, und eine Heatmap eher Interessant als nützlich ist für den Zweck des Grundpraktikums, haben wir uns als Gruppe entschieden, das Programmieren und Erstellen von Heatmaps eher zum Ende des Labors zu schieben.

Der Anfang

Ein paar Wochen vor Ende der regulären Vorlesungszeit haben wir dann begonnen, Ideen zum Erstellen von Heatmaps zu sammeln. Erste Ideen waren, dass wir den Tisch, auf dem sich die Pucks bewegt haben, in quadratische Felder zu unterteilen, in die wir in Koordinaten der Pucks dann aufteilen können.
Im Code umgesetzt habe wir dies dann, indem wir die Aufösung der Kamera durch die Seitenlänge der gewünschten Felder geteilt haben und das Bild mit Quadraten aufgefüllt haben. Dieses Set von Quadraten wurde dann später unsere Matrix, die essenziell in der Erstellung der tatsächlichen Heatmap ist. Die Matrix haben wir erstellt, indem für jedes Quadrat eine 0 eingesetzt wurde und jedes Mal, wenn ein Puck sich in diesem Quadrat befand, wurde zu der 0 eine 1 hinzuaddiert. Auf diese Weise hatte man, wenn alle Koordinaten in der gespeicherten Liste überprüft wurden, für jedes Quadrat einen Eintrag in der Matrix, der angibt, in wie vielen Frames sich ein Puck in diesem Feld befand. Dies konnte man dann mit dem Python Paket matplotlib zu einer Heatmap erstellen.

Weitere Funktionen

Außerdem haben wir in unsere Heatmap von noch andere Funktionen eingebaut, wie zum Beispiel die Möglichkeit sich für einen bestimmten Puck, die Werte ausgeben zu lassen, was so gehandhabt wurde, dass anstatt über alle Punkte im Datenset, nur über bestimmte Spalten iteriert wurde (das Datenset war so angelegt, dass eine Zeile einem Frame entspricht und jeder Puck seine eigene Spalte hat). Weiterhin kann man bei der Heatmap zwischen absoluter und relativer Häufigkeit wechseln, was insofern nützlich ist, dass man nur schwer eine Vorstellung haben kann was, in diesem Bereich befand sich in 3500 Frames ein Puck einem genau sagt. Es ist leichter verständlich diese Angaben relativ zu machen, in dem man die Anzahl an Frames, in denen ein Puck gefunden wurde, durch die Gesamtanzahl an gefilmten Frames teilen und diesen Wert dann mit 100 multiplizieren, um zu sagen zu welchem Anteil der Zeit sich ein Puck in diesem Feld befand. Durch diese Umstellung erhält man dann Aussagen, wie in diesem Bereich befand sich zu 40% der Zeit in Puck, was bereits wesentlich leichter zu verstehen ist, als die absolute Angabe.

Das Endergebnis

Durch die automatisierte Beschriftung von Heatmap und Legende, ist es auch möglich eine Liste von Geschwindigkeitswerten auf die gleiche Weise einzulesen, sodass wir am Ende eine Heatmap hatten, in der man einstellen kann, ob es sich um eine Geschwindigkeits- oder Aufenthaltswahrscheinlichkeitsheatmap handelt, ob man alle oder nur einen Puck in der Heatmap wiedergeben will. Wenn nur einer angezeigt wird, wird noch gefragt, welcher der getrackten Pucks dargestellt werden soll und dann kann man noch angeben, ob die beschrifteten Achsen die absolute Framezahl oder die relative Zeit darstellen sollen. 1)

relative Aufenthaltswahrscheinlichkeit aller Pucksabsoluter Aufenthalt eines Pucks

1) Autor: Jannis Jüppner
ss18/teilprojekte/heatmaps.txt · Zuletzt geändert: 2018/08/25 22:13 von jannis_jueppner