Whatsapp Telegram Telegram Call Anrufen

Geometrische Transformationen


Geometrische Transformationen werden in der Bildverarbeitung verwendet, um die Position, Größe und Orientierung eines Bildes zu ändern. Hier sind einige grundlegende Transformationen:

1. Skalierung (Scaling)

Die Skalierung verändert die Größe eines Bildes. In OpenCV wird die Funktion cv2.resize() verwendet, um die Skalierung durchzuführen.

Beispiel:

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Bild skalieren (Vergrößerung)
bild_vergrößert = cv2.resize(bild, None, fx=1.5, fy=1.5, interpolation=cv2.INTER_LINEAR)

# Bild skalieren (Verkleinerung)
bild_verkleinert = cv2.resize(bild, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_vergrößert_rgb = cv2.cvtColor(bild_vergrößert, cv2.COLOR_BGR2RGB)
bild_verkleinert_rgb = cv2.cvtColor(bild_verkleinert, cv2.COLOR_BGR2RGB)

# Bilder anzeigen
plt.figure(figsize=(18, 6))
plt.subplot(1, 3, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 3, 2)
plt.imshow(bild_vergrößert_rgb)
plt.title('Vergrößertes Bild')
plt.axis('off')

plt.subplot(1, 3, 3)
plt.imshow(bild_verkleinert_rgb)
plt.title('Verkleinertes Bild')
plt.axis('off')

plt.show()


2. Translation (Verschiebung)

Die Translation verschiebt ein Bild in der x- und y-Richtung. Dazu wird eine Translationsmatrix verwendet und die Funktion cv2.warpAffine() aufgerufen.

Beispiel:

import cv2
import numpy as np
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Translationsmatrix erstellen
tx, ty = 100, 50  # Verschiebung in x- und y-Richtung
M = np.float32([[1, 0, tx], [0, 1, ty]])

# Bild verschieben
bild_verschoben = cv2.warpAffine(bild, M, (bild.shape[1], bild.shape[0]))

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_verschoben_rgb = cv2.cvtColor(bild_verschoben, cv2.COLOR_BGR2RGB)

# Bilder anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_verschoben_rgb)
plt.title('Verschobenes Bild')
plt.axis('off')

plt.show()


Ausgabe:

Translation (Verschiebung) OpenCV

3. Rotation (Drehung)

Die Rotation dreht ein Bild um einen bestimmten Winkel. Dazu wird eine Rotationsmatrix erstellt und die Funktion cv2.warpAffine() verwendet.

Beispiel:

import cv2
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Bildmitte als Drehpunkt bestimmen
(h, w) = bild.shape[:2]
center = (w // 2, h // 2)

# Rotationsmatrix erstellen
angle = 45  # Drehwinkel in Grad
scale = 1.0  # Skalierungsfaktor
M = cv2.getRotationMatrix2D(center, angle, scale)

# Bild drehen
bild_rotiert = cv2.warpAffine(bild, M, (w, h))

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_rotiert_rgb = cv2.cvtColor(bild_rotiert, cv2.COLOR_BGR2RGB)

# Bilder anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_rotiert_rgb)
plt.title('Rotiertes Bild')
plt.axis('off')

plt.show()


Ausgabe:

Rotation (Drehung) OpenCV


4. Affine Transformationen

Affine Transformationen beinhalten Skalierung, Translation und Rotation in einer Transformation. Sie verwenden eine 2x3-Matrix und die Funktion cv2.warpAffine().

Beispiel:

import cv2
import numpy as np
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Punkte für die affine Transformation
pts1 = np.float32([[50, 50], [200, 50], [50, 200]])
pts2 = np.float32([[10, 100], [200, 50], [100, 250]])

# Affine Transformationsmatrix erstellen
M = cv2.getAffineTransform(pts1, pts2)

# Bild transformieren
bild_affine = cv2.warpAffine(bild, M, (bild.shape[1], bild.shape[0]))

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_affine_rgb = cv2.cvtColor(bild_affine, cv2.COLOR_BGR2RGB)

# Bilder anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_affine_rgb)
plt.title('Affine Transformation')
plt.axis('off')

plt.show()


Ausgabe:

Affine Transformationen OpenCV


5. Perspektivische Transformationen

Perspektivische Transformationen ermöglichen die Änderung der Perspektive eines Bildes. Dazu wird eine 3x3-Matrix verwendet und die Funktion cv2.warpPerspective() aufgerufen.

Beispiel:

import cv2
import numpy as np
from matplotlib import pyplot as plt

# Ein Bild laden
bild = cv2.imread('beispielbild.jpg')

# Punkte für die perspektivische Transformation
pts1 = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
pts2 = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]])

# Perspektivische Transformationsmatrix erstellen
M = cv2.getPerspectiveTransform(pts1, pts2)

# Bild transformieren
bild_perspektive = cv2.warpPerspective(bild, M, (300, 300))

# BGR zu RGB für die Anzeige in Matplotlib
bild_rgb = cv2.cvtColor(bild, cv2.COLOR_BGR2RGB)
bild_perspektive_rgb = cv2.cvtColor(bild_perspektive, cv2.COLOR_BGR2RGB)

# Bilder anzeigen
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
plt.imshow(bild_rgb)
plt.title('Originales Bild')
plt.axis('off')

plt.subplot(1, 2, 2)
plt.imshow(bild_perspektive_rgb)
plt.title('Perspektivische Transformation')
plt.axis('off')

plt.show()

Ausgabe:

Perspektivische Transformationen OpenCV


Durch das Verständnis und die Anwendung dieser Techniken können Sie komplexe Bildverarbeitungsaufgaben durchführen, bei denen die Geometrie von Bildern eine entscheidende Rolle spielt. Diese Transformationen sind nützlich in Bereichen wie der Bildregistrierung, Augmented Reality und der Korrektur von Verzerrungen.




CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!