Sternidentifikation

Status
Es sind keine weiteren Antworten möglich.
Hallo Julian,

vielen Dank für deine Informationen und Tips von deinem "alten" Projekt. Find ich klasse, das du eigentlich dasselbe Projekt'chen angegangen hast und deine Erfahrungen mir zur Verfügung stellst.

Ich hatte mir mal die Schwerpunktmethode angeschaut und auch schon in meiner Beschreibung als Optimierung genannt. Ich denke, das das eine demnächst anstehende Änderung sein wird.
Für die Erkennung Stern/kein Stern schau ich mir mal deine Idee an und spiele mit den Daten. Das würde die Ausschlussbereichs-Definition erübrigen und einiges an Komfort bringen.

Ich hatte auch schon mal einen Ansatz mit den Dreiecken zwischen den Sternen (s.o.), hab das aber dann verworfen. Dabei hab ich wohl den Wald vor lauter Bäumen nicht gesehen.
Der Ansatz mit dem Merkmalsraum und dem daraus entstehenden Voting-Array hört sich interessant an, die Berechnungen der Dreiecke hab ich ja noch, um damit rumzuspielen.

So ich hoffe ich konnte dir ein wenig weiterhelfen
Auf jeden Fall.

Leider bin ich zur Zeit etwas im Prüfungsstress
Na dann viel Erfolg.

Gruß aus der Pfalz
 
Hallo Jörn,
noch als kurze Ergänzung, hier ein screenshot vom damaligen Programm (rollover): screenshot
Trotz des rießigen Bildausschnittes ist die Projektion der Karte (gelbe Punkte) auf das Bild recht gut. In den Ecken macht sich schätze ich Bildfeldwölbung bemerkbar.
Ich vermute weiter ;) durch einen nicht linearen Ansatz bei den Plattenkonstanten könnte das auch noch ausgeglichen werden.
Bei kleinem Bildausschnitt sollte das aber keine Rolle spielen.
Oben rechts in der Ecke siehst du den "Merkmalsraum" und eine Menge Punkte - glaub ich gerne, dass man da den Überblick verliert ;)
Unten rechts das Voting-Array - die Farben repräsentieren die Anzahl der gemeinsamen Dreiecke - je dunkler bzw. je röter desto wahrscheinlicher ist die Übereinstimmung.
Falls du mit Delphi-Code (ist wie Turbo Pascal) was anfangen kannst, kann ich dir gerne die entsprechenden Teile schicken. Allerdings stammt das ganze wie schon erwähnt aus einer Zeit in der es mit meinen Programmierkenntnissen noch nicht allzuweit her war :) (habe dich also vorgewarnt :) )


MfG
Julian



 
Hallo Julian,

respekt, die Anwendung sieht doch klasse aus. Und die Ergebnisse lassen sich echt sehen.

Auch wenn du micht vorwarnst: Wäre echt nett, wenn du die Codeteile veröffentlichen könntest, ich würd mir den Matching-Algorithmus gerne mal genauer anschauen.

Eine Frage hätt ich da noch: Welchen Katalog hattest du für dieses Beispielbild benutzt? Hast ja bestimmt weiter oben gelesen, ich kämpfe da ein wenig mit den Katalogdaten.

Gruß aus der Pfalz
 
Hallo Jörn,

zunächst etwas zu den Katalogen: Ich selbst habe nur den BSC Katalog verwendet, da ich ursprünglich Sternbilder erkennen wollte und der BSC da ausreicht.
Für kleine Bildfelder oder Grenzgrößen ist das natürlich absolut indiskutabel ;)
Allerdings gibt es hier Source Code der dich interessieren dürfte: eine vorkompilierte .dll von Cartes du Ciel, die das Ansprechen der verschiedensten Kataloge ermöglicht ! Passend dazu ein C++ header datei! Habe es selbst noch nicht getestet, sollte aber auch mit C# denke ich ohne Probleme funktionieren.

Zu den Algorithmen:
Hier findest du den Code (die interessanten sachen für dich dürften DreieckMatching.pas und mathe.pas sein. Daneben noch Sternensucher.pas für das Aufrufen des Dreieckmatching Algorithmus. Sternenberechnung.pas ist im Prinzip die Schwerpunktmethode. Allerdings habe ich das sehr umständlich gemacht vermute ich ;-)

Noch eine Anmerkung zu deinem Transformationsalgorithmus:
Zum einen musst du vorsichtig sein, bei der Abstandsberechnung von Sternen mit RA/DEC Koordinaten. Das ist ein gekrümmtes Koordinatensystem, du verwendest aber euklidsche Abstandsrechnung. Bei kleinen Bildfeldern dürfte das nicht viel ausmachen (wenn man seinen Garten abmisst muss man schließlich auch nicht die Erdkrümmung mit einrechnen :) ) Allerdings ist auch ohne viel Aufwand die korrekte Abstandsberechnung möglich. (siehe mathe.pas)
Zum Anderen kann es bei Dir aufgrund von Ungenauigkeiten bei der Positionsbestimmung der beiden Referenzsterne zu größeren Ungenauigkeiten kommen, als wenn du mehr Referenzsterne hinzuziehst um z.b. die "Skalierung" zu berechnen. Da du hier in der Transformation einen linearen Zusammenhang hast also x'=skalierung*x+Tx machen sich kleine Ungenauigkeiten bei größerem Abstand vom Referenzstern recht schnell bemerkbar.
Eine "gleichzeitige" am besten gemittelte Bestimmung aller Transformationsparameter (= Plattenkonstanten) ist hier unbedingt vorzuziehen !

Ich bekomme gerade Lust, selbst wieder was an dem Projekt zu machen ;) Leider kann ich den Delphi Code nicht mehr kompilieren, da sich mein Kompiler geändert hat und ich einige Zusatzmodule nicht mehr habe...
Falls ich mich nochmal dransetze wäre C++ wohl eher das Mittel der Wahl... Wenn ich etwas Zeit finde kann ich mich ja mal daran versuchen, den Matchingalgorithmus umzuschreiben...

Schonmal viele Grüße
Julian

@circushund
p.s. in der .zip datei ist auch die kompilierte Version des Programms sowie eine Beispieldatei. Es gibt allerdings einige bekannte Probleme (wie z.b. bei der Kartenauswahl, wenn der RA bereich über die 24h Grenze hinausgeht) die ich aus genannten Gründen nicht mehr beheben kann... Insofern hat das Programm für Dritte nur bedingt etwas zu bieten ;-)
 
Hallo Julian,

erst mal vielen, vielen Dank für deinen Quellcode und dein Bemühen.

Den USNO Katalog (wie auch andere) kann man Online abfragen, so würd ich das gerne auch in mein Programm einbinden. Dann könnte man es auch nutzen, ohne die Kataloge sich herunterladen zu müssen. Ich hab mir den von dir verlinkten Quellcode schon geladen und durchforste den mal, ob da so was auch drinne ist.

Zu deinen Ammerkungen: Ich finds echt super, das du dich da so bemühst und dazu die Anregungen und Hinweise gibst. Hilft es doch, das ganze weiter auszubauen.

Mit ist absolut klar, das mein Programm'chen eine erste Demoimplementierung ist, mit der ich es erst mal soweit hinbekommen wollte, die Machbarkeit überhaupt in den Griff zu bekommen. Deswegen hab ich ja schon mal ein 3' Bild weit genug vom Pol weg genommen, um die 'weiteren' Effekte erst mal unberücksichtigt lassen zu können. Mit den wertvollen Hinweisen von euch (Kai, Thomas, anthoja, Alex, Don und dir) kann ich es sicherlich noch weit ausbauen. Einiges an zu berücksichtigenden Verfahren hatte ich mir vorher angeschaut, aber bewußt ausgelassen. Die jetztige Implementierung ist daher einfach gerade herunterimplementiert.

Die Beschreibung der Berechnung etc. hab ich gemacht, das jeder nachvollziehen kann, wie ich bis dahin gekommen bin.

Und es macht im Moment wirklich richtig Spass mit dem großartigen Feedback, auf jeden Fall werde ich da weiter dran entwickeln. Zuerst sollen die 'schlimmsten' Krücken verbessert werden, damit es zuerst mal allgemein brauchbar wird.

...und Julian, mach auf jeden Fall mal weiter an deinem Projekt...

Gruß aus der Pfalz
 
@Amarillo,

hab dein Programm mal getestet, funktioniert ganz gut.
Als Test hab ich mal irgendeine Sternfeldaufnahme gemacht und die als BMP reingeladen(geht glaub ich eh nur BMP oder?? - ist aber auch egal!)
Wenn ich jetz auf "Sterne suchen" klicke, werden alle Sterne rot markiert, funktioniert auch. Soch er erkennt noch nicht das dazugehörende Sternbild bzw "weiss" noch nicht, um welchen Stern es sich handelt?
Aber in der Liste Sterne sind sie ja na Helligkeit sortiert.
Wäre es nicht möglich auch eine Liste (evtl. 20) hellsten Sterne der Sternenbilder zu erstellen? Dh. das man das Verhältnis des hellesten Sterns, zum zweihellsten usw. misst, dh mann würde ein Liste von Steren bekommen: 1:0.99, 1:0.89 usw.
wenn man diese Verhältnisse dann vergleicht, könnte man damit evt. das Sternenbild finden?

gruß
Don


 
Status
Es sind keine weiteren Antworten möglich.
Zurück
Oben