Brightness- und Colortracking |
Tags
Backlinks
» Tags: "Brightness- und Colortracking" is tagged as
|
Brightness-Tracking
Das Brightness-Tracking ist eine einfache Möglichkeit, mit welcher einzelne, helle Objekte verfolgt werden können (z.B. eine Lichtquelle wie eine Taschenlampe oder eine Leuchtdiode).
Anhand eines Algorithmus wird der Farbwert jedes Pixels aus einem Pixel-Array des neuen Bildes gemessen und mit dem bisher hellsten Punkt verglichen. Sobald ein Pixel heller als der bisher hellste ist, wird er als der neue hellste Punkt gespeichert. Nach dem Auslesen und Auswerten jedes Bildpunktes kann somit erfasst werden, welches der insgesamt hellste Pixel ist (sobald der maximale Helligkeitswert einmal ereicht ist werden keine weiteren Punkte gespeichert). Diese Prozedur wird mit in jedem neuen Frame wiederholt, sodass eine Lichtquelle verfolgt werden kann.
![]()
Videobilder werden als Farbwert pixelweise als Array gespeichert. Über den Index i des Array img.pixels[i] kann auf jeden Pixel des Videobildes zugegriffen werden.
![]()
Es kann durch den Index bspw. nicht direkt auf das Pixel in der 2. Zeile, 2. Spalte zugegriffen werden (hier: 5). Um auf das zweidimensionale Bild in konventioneller Weise (kartesische Koordinaten) zugreifen zu können, kann man folgende Formel verwenden: index = y * width + x
// Ulrich Lang, Thomas Techert, Fabian Gronbach
// An der hellsten Stelle im Kamerabild wird ein roter Punkt gezeichnet.
void setup() {
void draw() {
brightestPixel = pixelBrightness;
}
}
An Stelle des hellsten Pixels kann mit Hilfe dieser Methode natürlich auch eine bestimmte Farbe definiert werden, welche verfolgt wird. Durch eine leichte Abwandlung des Algorithmus ist es möglich bestimmte Farbereiche tracken zu können – womit etwa kleine, farbige Objekte verfolgt werden können. (vgl. Color-Tracking).
Color-Tracking
// Ulrich Lang, Thomas Techert, Fabian Gronbach
// Press Mouse to select color to track...
// Nach folgender Farbe suchen:
void setup() {
size(640, 480);
void draw() {
if (video.available()) {
for (int i = 0; i < width*height; i+=5) {
if (valueRed >= track_for_r - threshold && valueRed <= track_for_r + threshold && valueGreen >= track_for_g - threshold && valueGreen <= track_for_g + threshold && valueBlue >= track_for_b - threshold && valueBlue <= track_for_b + threshold) {
trackedY = i / width;
}
ellipse(trackedX, trackedY, 50, 50);
}
© 2008 Hochschule für Gestaltung, Schwäbisch Gmünd. Impressum

