Open juauer opened 7 years ago
Ich habe das nach cps2 gemerged. Wir brauchen es doch dringend! Kann das parallel zu #12 fertig werden? Ansonsten wär's mir lieber, Du machst zuerst das hier fertig.
Es gibt (vorerst) zwei TODOs in der Funktion selbst (in map.cpp), ein weiteres in der Testfunktion in test_image_distance.cpp und fehlende Parameter in test_image_distance.launch.
Ich habe mir gerade den Test-Code angeschaut und bin daraus nicht schlau geworden. Ich habe das deshalb in 3bc7619cab9c0d2d8baf1286982b91114d1a1c33 mal geändert. Ich berechne jetzt das zweite Bild aus dem ersten, damit ich die exakten Zahlen habe. Dann gebe ich einen beliebigen Guess ab und schaue die Korrektur an (Konsolen-Output beachten). Das Ergebnis ist aber nicht was ich erwartet hätte - wenn ich die Funktion auf diese Art aufrufe, sieht es aus, als würde er in die falsche Richtung korrigieren?
Vielleicht habe ich auch die Signatur falsch verstanden. Ich habe mal etwas ausführlicher in's doxy geschrieben, was ich von der Funktion erwarte. Falls das falsch ist, bitte einfach wieder ändern.
Was genau ist jetzt hier los? Wie kann ich das richtig benutzen?
Sieht jetzt besser aus.
Liegt aber immer noch ziemlich daneben. Irgendetwas stimmt da nicht - oder ich benutze es falsch?
Ich habe heute in 56e1f7bfc78b89f7e40577a03b6b00a8791e21a9 den brute force Ansatz gebaut. Das scheint zu funktionieren, ist aber vieeel zu langsam (der call bleibt deshalb auskommentiert).
Vielleicht kannst Du aber beim Vergleich mit dem 'smarten' Ansatz erkennen, wo dessen Fehler liegt. Ich habe z.B. heute überraschend (für mich) einmal durch 2 geteilt, um die abgeschnittenen Bilder logisch zusammen zu schieben. Sowas.
Mein Debug Code könnte auch für Dich wiederverwertbar sein.
Ansonsten werde ich erstmal versuchen, meine Kartenschnipsel noch etwas zu verkleinern.
Es soll eine Funktion f geben (siehe auch #10 ), mit f:(NxN, NxN, R³)->R³
f bekommt zwei Bilder i1, i2 und einen Vektor (x,y,th) mit einer Vermutung wie man i2 um sein Zentrum drehen und relativ zum Zentrum von i1 verschieben muss, so dass man i1 und i2 stitchen könnte (was wir aber nicht wollen). Zurückgegeben wird eine Korrektur des übergebenen Vektors.
Das Problem ist nicht trivial und die Lösung nicht offensichtlich. Ich schlage folgenden Ansatz vor: