Digitale Bildverarbeitung

5 Geometrische Operatoren und Überblendung

Was versteht man unter Geometrischen Operatoren?
Die Veränderung der geometrischen Abbildung eines gegebenen Bildes.
Diese Abbildung kann z.B. eine Verkleinerung, Verschiebung, Drehung, Spiegelung oder geometrische Verzerrung sein.
Dabei ist i.a. auch eine gewisse Korrektur oder Angleichung von Grauwerten erforderlich.

Die Zuordnung der Bildpunkte im Original- und Ergebnisbild durch einen geometrischen Operator kann durch Angabe einer Koordinatentransformation definiert werden.

Vorwärtstransformation vs. Rückwärtstransformation
Vorwärtstransformation: vom Originalbild wird auf das Zielbild Transformiert.
Rückwärtstransformation: vom Zielbild wird Punkt für Punkt nachgeschaut welche Punktfalbe durch eine Funktion vom Originalbild abhängig zugewiesen werden.
Vorteil: alle Punkte Werden erreicht im vergleich zu Vorwärtstransformation da kann es Passieren dass Überlapperungen und lücken entstehen können je nach Funktion.

Eineindeutigen Koordinatentransformationen
Bei eineindeutigen Koordinatentransformationen wird jedem Bildpunkt des Ergebnisbildes genau ein Bildpunkt im Originalbild zugeordnet und umgekehrt. Die Grauwerte aus dem Originalbild f werden unverändert übernommen. Es gibt nur wenige Koordinatentransformationen, die diese Bedingungen erfüllen. Für Bildrotationen oder diagonale Spiegelungen wird dabei M = N (quadratisches Bild) vorausgesetzt.

Transformationsvorschrift für die Rückwärtstransformation
Identität: id(m,n) := (m,n)
Vertikale Spiegelung: ver(m,n) := (m,N-n-1)
Horizontale Spiegelung: hor(m,n) := (M-m-1,n)
Diagonale Spiegelung: dia(m,n) := (n,m)
Drehung um 90°: rot(m,n) := (n,N-m-1)
Drehung um 180°: rot2(m,n):=(N-m-1,N-n-1)
Drehung um 270°: rot3(m,n):=(N-n-1,m)
Drehung u. Spiegelung: tor(m,n) :=(N-n-1,N-m-1)
(Drehungen gegen den Uhrzeigersinn um den Bildmittelpunkt)

Affine Abbildung
Eigenschaften: ein Punkt mit endlichen Koordinaten wird auf einen Punkt mit endlichen Koordinaten abgebildet Jede affine Abbildung lässt sich als Kombination von Verschiebung, Rotation, Skalierung, Spiegelung und Scherung darstellen. Affine Abbildungen, die nur aus Verschiebungen, Rotationen und Spiegelungen bestehen, sind längen- und winkeltreu.

Homogene Darstellung affiner Abbildungen
Eigenschaften
Alle Grundtransformationen lassen sich als Matrix darstellen.
Die Verkettung von Transformationen lässt sich durch einfache Matrizenmultiplikation erreichen.
Beispiel: Rotation eines Bildes um den Winkel ф
Transformationsschritte (Vorwärtstransformation)
 
1.Verschiebung des Bildmittelpunktes in den Ursprung
  2.Rotation um f
  3.Verschiebung des Bildmittelpunktes an die alte Position

Transformationsmatrizen

Für die Rückwärtstransformation muss für jeden Schritt die inverse Abbildung benutzt werden.
Transformationsmatrizen

Bilddeformation
Berechnung der gewünschten Verschiebung der Koordinaten für alle Bildpunkte
Rekonstruktionsschritt:
Erzeugung des Ergebnisbildes durch Interpolation der Grauwerte an den einzelnen Bildpunkten

Für die Spezifikation der Deformation sind verschiedene Verfahren entwickelt worden, z.B. kann für markante Punkte des Bildes die Lage im Ergebnisbild interaktiv durch den Benutzer festgelegt werden.
Triangulationsbasierte Deformation
Die Bildpunkte, für welche die Deformation spezifiziert ist, werden durch Dreiecke verbunden.
Dieser Vorgang wird als Triangulierung bezeichnet. Innerhalb der einzelnen Dreiecke kann die Deformation für einen beliebigen Punkt z.B. durch lineare Interpolation aus der Deformation an den drei Eckpunkten berechnet werden.
Dadurch erhält man eine stetige, wenn auch nicht glatte Gesamtdeformation.

Morphing
Das Ursprungsbild wird schrittweise zum Zielbild deformiert.
Das Zielbild wird schrittweise zum Ursprungsbild deformiert.
Zwischen je zwei Bildern der so entstandenen Bildfolgen wird überblendet, d.h. der Grauwert g(m,n) im Ergebnisbild ergibt sich aus den Grauwerten f1(m,n) und f2(m,n) durch lineare Interpolation:
g(m,n) = (1-a) f1(m,n) + a f2(m,n) wobei a Î [0,1] gilt.

Quadratische Rotation in Richtung mathematisch positivem sinn
inIm: Eingabebild (quadratisch)
outIm: gedrehtes Ausgabebild (quadratisch)
static void QuadratischRot(byte[][] inIm, byte[][] outIm)
{
int imSize = inIm.length;
for (int r=0; r<imSize; r++)
 for (int c=0; c<imSize; c++)
  outIm[r][c] = inIm[imSize-r-1][imSize-c-1];
}