Hallo!
Ich habe da mal ein kleines Problem:
Ich programmiere zur Zeit gelegentlich an einem C#-Tool herum, das es einem ermöglichen soll, digitale Satellitenfotos zu kalibrieren und anschließend anzuzeigen, zu kombinieren oder z.B. mit GPS Tracks zu überlagern oder daraus durch markieren bestimmter Punkte Tracks zu erzeugen und ähnliche Spielereien.
Die Kalibrierung läuft dabei so: Mein Programm bietet die Möglichkeit die Bilder zu laden und einzelne Punkte auszuwählen und somit Paare aus Pixel-Koordinaten und Geo-Koordinaten anzugeben (je mehr desto besser). Mit Hilfe dieser Paare ermittle ich eine Transformation zwischen Bild- und Geo-Koordinaten. Als Transformation verwende ich dabei zweidimensionale Polynome 1. Grades.
Die habe ich auch mal mit Bildern aus GoogleEarth (die natürlich ihrerseits schon irgendwie vorverarbeitet sind) getestet und das funktioniert ganz gut (ich habe mir mal erlaubt, einen Screenshot anzuhängen).
Nun wäre es natürlich schon, wenn man auch gescannte Landkarten damit kalibrieren könnte, wobei die momentane Transformation da wohl nicht mehr funktionieren dürfte. Mir schwebt dabei vor, für verschiedene Kartenprojektionen jeweils eine Transformation vorzuhalten, die folgendes Interface implementiert, womit sie direkt in die bestehende Software eingebunden werden könnte:
public interface Transform
{
PPoint FromGeoToImage(PPoint p);
PPoint FromImageToGeo(PPoint p);
}
Die Transformation wird also aus Punkt-Korrespondenzen "Pixel-Koordinaten <-> vom User einzugebende Daten" erstellt und liefert dann jeweils die Umrechnung Geo- in Pixel-Koordinaten und umgekehrt.
Nun endlich meine Frage: Gibt es da irgendwelche Open-Source Software, auf die ich zurückgreifen könnte, um dieses Problem zu lösen? Ich habe definitiv zu wenig Ahnung von der ganzen Theorie, um das selber machen zu können und auch nicht wirklich Lust, mir das anzueignen, schließlich ist das Ganze nur eine Spielerei.
Grüße,
Blombo