Moien
Da würde ich ein 0 order IDM (image distortion model) …
Kannst du mir als Laien in einfachen Worten das Prinzip
erklären, nach dem die Algorithmen arbeiten?
Ich finde das faszinierend; so wie ich das verstanden habe,
finden die wohl auch (beliebig) verzerrte und gedrehte
Ausschnitte?
*g* Die Dinger sind wesentlich doofer als man auf den ersten Schlag denkt.
Eine IDM 0’ter Ordnung baut nur eine Zuordnung Koordinaten Bild 1 Koordinaten Bild 2 auf. Da wird eine grosse Tabelle angelegt mit allen Koordinaten des 2. Bild und ihren Zuordnungen im 1. Bild. Also in Code für Grauwertbilder:
int bild_1[][];
int bild_2[][];
int ZuordnungX[][];
int ZuordnungY[][];
Pixel x,y in der IDM:
bild_1[ZuordnungX[x][y]][ZuordnungY[x][y]];
Gefüllt werden die Tabellen auch sehr einfach (für jedes Pixel): man nimm den Farbwert des Pixel im Bild 2 und sucht nach einem Pixel gleicher/ähnlicher Farbe im Bild 1. Die Koordianten des Pixel aus Bild 1 trägt man in der Tabelle für Bild 2 ein.
Irgendwann gehen einem die Pixel mit ähnlicher Farbe aus. Wenn das öfter vorkommt sieht das Resultat der IDM dem Bild 2 unähnlich. Wenn nicht so oft vorkommt sehen sich IDM und Bild 2 sehr ähnlich.
Das kann man jetzt mit Randbedingungen belegen. Je nach Bedingung kommt man zu 1’ter und 2’ter Ordnung. 2’ter Ordung bedeutet: es werden keine Pixel aus ihrem Kontext geholt. 2 in Bild 1 benachbarte Pixel sind auch im IDM Nachbarn. Nachteil: der Algo ist NP-vollständig.
Die beste 0.5’ter die ich kenne nimmt nicht den Farbwert von einem Pixel sondern die Ableitung der 8 Pixel rundum nach X und nach Y (16 Werte). Diese Vektoren vergleicht man mit der euklidischen Distanz. Kommt sehr nahe an 2’ter Ordnung ran, ist aber sauschnell zu rechnen.
IDM ist ein lustiges Thema, aber da braut echt jeder seine eigene Suppe.
cu