Forum: Digitale Signalverarbeitung / DSP / Machine Learning Bildverarbeitung: Schwerpunkt eines Punktes


von visoxx (Gast)


Lesenswert?

Hallo,
ich habe eine punktförmige Lichtquelle die sich im Bild dann als 
Kreisfläche abbildet, mit einem Durchmesser von etwa 5x5 Pixel.
Ich möchte die Position der Lichtquelle ermitteln. Wenn möglich mit 
einer Auflösung kleiner als ein Pixel.

Mein Ansatz wäre:
- alle Pixel >Helligkeitsschwelle betrachten.
- X und Y Richtung getrennt analysieren.
- Die Position (Subpixel) finden, für die die Fläche aller Punkte links 
und rechts gleich ist.

Bestimmt bin ich aber nicht der erste, der so was macht. Deshalb suche 
ich nach dem passenden Stichwort oder Beispielimplementierungen.

mfg.
visoxx

von Walter T. (nicolas)


Lesenswert?

Suchst Du den Mittelpunkt oder den Schwerpunkt?

Zuerst mußt Du ein Maß definieren, inwiefern ein Pixel dazugehört oder 
nicht. Dazu bietet sich der Betrag eines Skalarprodukts im Farbraum mit 
einer Referenzfarbe an. Ich nenne das Ergebnis mal W. Dann kannst Du die 
Abstände mit diesem Betrag gewichten.

Suchst Du den Mittelpunkt, sind links und rechts und oben und unten die 
Summen von W über alle Pixel jeweils gleich.

Suchst Du einen Schwerpunkt, sind links und rechts und oben und unten 
die Summen von W multipliziert mit dem Abstand über alle Pixel jeweils 
gleich.

: Bearbeitet durch User
von Roland P. (pram)


Lesenswert?

Hört sich an als ob du Sterne verfolgen willst? => star track centroid 
algorithm

Gruß
Roland

von visoxx (Gast)


Lesenswert?

Hallo Walter,
richtig, dann such ich eher den Mittelpunkt,
denn beim Schwerpunkt wären die Pixel am Rand ja deutlich mehr 
gewichtet, als die , die direkt um den Mittelpunkt liegen.
Und ich will ja die Lage der Punktförmigen Lichtquelle bestimmen.

visoxx

von visoxx (Gast)


Lesenswert?

@Roland.
Nein. Aber Tracking ist richtig. Ich will die Position eines Objekts im 
Zimmer sehr genau bestimmen.
Hab eines 5MP Kamera hier, und hab gesehen, dass sich eine 1Watt LED 
auch bei der kürzest möglichen Belichtungszeit noch viel zu hell 
abbildet.

Der Rest des Raums (bzw. das Bild) ist dann aber dunkel.

Eine 5MP Kamera hat zwar 2500 x 2000 Pixel, die sind aber immer in so 
2x2 (RGBG) Farbarrays, so dass ich bei einer Lichtfarbe nur noch 
1250x1000 Pixel habe, was mit dann schon zu wenig Auflösung ist.

Vermutlich muss ich noch ein Graufilter vorschalten, um den Lichtpunkt 
noch kleiner zu bekommen.
Trotzdem hätte ich am Ende gerne 1/2 oder 1/4 Pixel (brauchbare) 
Auflösung.

von visoxx (Gast)


Lesenswert?

Aber "star track centroid algorithm" war gut.
http://ssl.mit.edu/publications/theses/SM-2012-KnutsonMatthew.pdf

von Fitzebutze (Gast)


Lesenswert?

Hi,

zuerst musst du eine "blob detection" machen. Stichwort "connected 
component labeling". Dann kannst Du zuverlässig den Schwerpunkt 
ermitteln.

von Rolf S. (audiorolf)


Lesenswert?

Das ist bei manchen Applikationen aber nicht so einfach möglich, bze gar 
nicht. Wenn es bespielsweise eine statistische Treffersituation hat, wie 
bei einem Laser oder Gammateilchen. Das sieht dann aus, wie vom 
PaintBruch gesprüht und hängt nicht zusammen.

von Marco S. (masterof)


Lesenswert?

Hi,

Ich hatte so was in meiner Techniker Abschlussarbeit machen gemusst. Die 
Geschwindigkeit eines Objektes messen und auf dem klebte eine IR-LED. 
Die Kamera hatte einen eingebauten IR-Pass-Filter der nur Infrarot 
durchlies.

Ich hatte da zu den Schwerpunkt des Objektes ermittelt. Habe das aber 
alles mit einem echten Schwarzweiß Bild gemacht.

Ich bin wie folgt vorgegangen:

- Schwellwert von jedem Pixel abgezogen
 Damit waren die Dunkel nicht interessant Pixel alle  schwarz (0).
 Hat die Kamera als Feature integriert gehabt.
- zeilenweise durch das Bild laufen und die hellen Pixelbereiche merken
Die Zeilenr und den Anfang und das Ende in der Zeile in einer Liste 
merken.
- die zusammenhängende Zeile in der Liste suchen und merken
Du Must nur schauen welche der gefunden Zeilen Elemente in der 
Nachbarzeile ist und sich mit mindestens ein Pixel in der Spalte 
überschneiden mit den anderen gefunden Zeilenelemte. Ich hatte den 
gefunden Zeilenelemte noch eine Objektnr hinzugefügt in der Liste.
- die gefunden zusammenhängende Zeilenelrmente wurden dann mit dem 
Moment-Algorithmus 
(http://de.m.wikipedia.org/wiki/Moment_(Bildverarbeitung)) der 
Schwerpunkt ermittelt.

Ich habe damit ca 5 ms für einen Bild (1,5 MPixel) benötigt. War ein 
Dualcore-Rechner mit 2,4 GHz von 2007.  hatte aber nur ein Kern genutzt, 
und der langweilte sich schon mit der Aufgabe.

Wenn noch fragen sind, melde dich.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.