Hallo zusammen,
ich schreibe derzeit eine kleine Software zur Auswertung von langzeitbelichteten Nachthimmel-Aufnahmen. Sterne sind daher mehr oder minder als gekrümmte Spur abgebildet, deren Anfang bzw. Ende gesucht werden soll.
Dabei klickt der Anwender im Gesamtbild recht nahe eines Spurenendes ins Bild, um damit einen kleinen Auschnitt (rot) zur Analyse zu definieren. Ziel der Analyse ist die einigermaßen genaue Ermittlung der Position im Ausschnitt, an welcher die jeweils anvisierte Spur anfängt.
So sieht ein Teil des Bildes aus:
Nach meinen ersten Recherchen und Diskussion mit einem anderen Studenten bietet sich z.B. an, über einen Rank-Filter den Hintergrund zu säubern, einen Schwellwert anzusetzen und das ganze dann über das Labeling in scipy.ndimage rausfinden.
Allerdings bin ich ziemlicher Neuling, was Bildverarbeitung angeht.
Kennt sich da jemand genauer aus? Wäre die Vorgehensweise für das gezeigte Material ein guter Anfang oder wäre eine andere Strategie besser?
Viele Grüße
antimatter
Anfang eines "Strichs" erkennen (Bildverarbeitung)
-
- User
- Beiträge: 13
- Registriert: Freitag 8. Oktober 2010, 16:44
Zuletzt geändert von antimatter am Mittwoch 24. November 2010, 13:26, insgesamt 1-mal geändert.
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Hallo, könntest du das Bsp Bild nochmal hochladen?
Ich bekomme nur ein File not Found.
*edit*
Dein Link hat nur einen "/" zuviel.
http://img189.imageshack.us/img189/2600/testuy.jpg
Ich bekomme nur ein File not Found.
*edit*
Dein Link hat nur einen "/" zuviel.
http://img189.imageshack.us/img189/2600/testuy.jpg
Suchst du vielleicht nur nach dem Stichwort Kantenerkennung / Edge Detection? Da gibt es einige Algorithmen und viele Infos im Netz.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher
http://ms4py.org/
Gerhard Kocher
http://ms4py.org/
Deine Idee ist schon in Ordnung. Da sie hauptsächlich auf Standard-Algorithmen basiert kann man sowas schnell mal umsetzen. Wie robust das ganze ist muss natürlich auf einer ganzen Reihe Bilder geprüft werden. Mit einem Programm wie Fiji (=ImageJ + Plugins) kannst vorab schon mal grob prüfen ob dein Weg zielführend ist. Darin sind die gängigsten Algorithmen schon implementiert. Auch die von dir angesprochenen Rangordnungsfilter (Medianfilter, Erosion, Dilation).
Wenn du nicht weiterkommst, kannst du ja noch ein paar Bilder posten. Dann kann ich dir sicher noch ein wenig unter die Arme greifen.
MFG HerrHagen
Wenn du nicht weiterkommst, kannst du ja noch ein paar Bilder posten. Dann kann ich dir sicher noch ein wenig unter die Arme greifen.
MFG HerrHagen
@ms4py: Kantenerkennung bringt dich hier nur bedingt weiter. Damit werden Kanten im Bild hervorgehoben. Keine Linien (unterschiedlicher Dicken) segmentiert. Das Hauptproblem ist hier eher durch eine gescheite Vorverarbeitung zu finden, die den Vordergrund vom verrauschtem Hintergrund robust trennt.
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Ich habe mal ein bisschen rum gespielt. Ich entschuldige mich schon mal vorab für den Code; ist wirklich mies zu lesen und verstehen.
Mein Ergebnis ist der Code:
http://www.python-forum.de/pastebin.php?mode=view&s=92
Das bereinigte Bild sieht so aus:
1_clean.bmp
Das Bild mit eingefärbten Linien dann so:
2_color.bmp
Und hier noch ne Überbledung der zwei Bilder:
3_blend.bmp
Mein Ergebnis ist der Code:
http://www.python-forum.de/pastebin.php?mode=view&s=92
Das bereinigte Bild sieht so aus:
1_clean.bmp
Das Bild mit eingefärbten Linien dann so:
2_color.bmp
Und hier noch ne Überbledung der zwei Bilder:
3_blend.bmp