1. Zuschneiden, Ändern der Größe und Drehen
1.1 Zuschneiden (Cropping):
Beim Zuschneiden wird ein bestimmter Bereich eines Bildes ausgeschnitten, um unnötige Teile zu entfernen und den Fokus auf das Wesentliche zu legen. Dies ist besonders nützlich, wenn man bestimmte Details hervorheben möchte.
Beispiel:
// Laden eines Bildes
$image = imagecreatefromjpeg('bild.jpg');
// Zuschneiden des Bildes auf ein 200x200 Pixel großes Quadrat, beginnend bei (50, 50)
$croppedImage = imagecrop($image, ['x' => 50, 'y' => 50, 'width' => 200, 'height' => 200]);
// Gespeichertes Bild
imagejpeg($croppedImage, 'beschnittenes_bild.jpg');
1.2 Ändern der Größe (Resizing):
Hierbei wird die Größe eines Bildes geändert, um es zu vergrößern oder zu verkleinern. Dies ist häufig erforderlich, um Bilder an verschiedene Bildschirmgrößen oder Druckformate anzupassen.
Beispiel:
// Laden eines Bildes
$image = imagecreatefromjpeg('bild.jpg');
// Neue Dimensionen
$newWidth = 300;
$newHeight = 200;
// Erstellung eines neuen Bildes mit den neuen Dimensionen
$resizedImage = imagescale($image, $newWidth, $newHeight);
// Gespeichertes Bild
imagejpeg($resizedImage, 'groesse_geaendert.jpg');
1.3 Drehen (Rotating):
Beim Drehen wird ein Bild um einen bestimmten Winkel gedreht. Dies kann hilfreich sein, um die Perspektive eines Bildes anzupassen.
Beispiel:
// Laden eines Bildes
$image = imagecreatefromjpeg('bild.jpg');
// Drehen des Bildes um 90 Grad
$rotatedImage = imagerotate($image, 90, 0);
// Gespeichertes Bild
imagejpeg($rotatedImage, 'gedrehtes_bild.jpg');
2. Bildtranslation und Affine Transformationen
2.1 Bildtranslation (Image Translation):
Hierbei wird ein Bild um eine bestimmte Anzahl von Pixeln in eine bestimmte Richtung verschoben.
Beispiel:
// Laden eines Bildes
$image = imagecreatefromjpeg('bild.jpg');
// Neue Dimensionen für das verschobene Bild
$width = imagesx($image);
$height = imagesy($image);
// Erstellung eines neuen Bildes
$translatedImage = imagecreatetruecolor($width, $height);
// Verschieben des Bildes um 50 Pixel nach rechts und 30 Pixel nach unten
imagecopy($translatedImage, $image, 50, 30, 0, 0, $width, $height);
// Gespeichertes Bild
imagejpeg($translatedImage, 'verschobenes_bild.jpg');
2.2 Affine Transformationen (Affine Transformations):
Affine Transformationen beinhalten Translation, Skalierung, Rotation und Scherung. Sie werden verwendet, um die Geometrie eines Bildes zu verändern.
Beispiel:
// Einfache affine Transformationen können mit OpenCV oder anderen Bibliotheken durchgeführt werden.
// Beispiel mit Python und OpenCV:
import cv2
import numpy as np
# Laden des Bildes
image = cv2.imread('bild.jpg')
# Transformation Matrix für Rotation um 45 Grad
rows, cols = image.shape[:2]
M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)
# Anwenden der Transformation
transformed_image = cv2.warpAffine(image, M, (cols, rows))
# Gespeichertes Bild
cv2.imwrite('affin_transformiert.jpg', transformed_image)
3. Bildarithmetik (Addieren, Subtrahieren, Multiplizieren, Dividieren)
3.1 Addieren:
Das Addieren von Bildern kann verwendet werden, um Effekte wie das Überlagern von Bildern zu erzeugen.
Beispiel:
import cv2
# Laden der Bilder
image1 = cv2.imread('bild1.jpg')
image2 = cv2.imread('bild2.jpg')
# Addieren der Bilder
added_image = cv2.add(image1, image2)
# Gespeichertes Bild
cv2.imwrite('addiertes_bild.jpg', added_image)
3.2 Subtrahieren:
Das Subtrahieren von Bildern kann verwendet werden, um Unterschiede zwischen zwei Bildern hervorzuheben.
Beispiel:
import cv2
# Laden der Bilder
image1 = cv2.imread('bild1.jpg')
image2 = cv2.imread('bild2.jpg')
# Subtrahieren der Bilder
subtracted_image = cv2.subtract(image1, image2)
# Gespeichertes Bild
cv2.imwrite('subtrahiertes_bild.jpg', subtracted_image)
3.3 Multiplizieren:
Das Multiplizieren von Bildern kann zur Anpassung der Helligkeit oder zur Anwendung von Masken verwendet werden.
Beispiel:
import cv2
# Laden des Bildes
image = cv2.imread('bild.jpg')
# Multiplizieren des Bildes mit einem Skalar, um die Helligkeit zu erhöhen
multiplied_image = cv2.multiply(image, np.array([1.2]))
# Gespeichertes Bild
cv2.imwrite('multipliziertes_bild.jpg', multiplied_image)
3.4 Dividieren:
Das Dividieren von Bildern kann zur Normalisierung der Bildintensität verwendet werden.
Beispiel:
import cv2
# Laden des Bildes
image = cv2.imread('bild.jpg')
# Dividieren des Bildes durch einen Skalar, um die Helligkeit zu reduzieren
divided_image = cv2.divide(image, np.array([1.2]))
# Gespeichertes Bild
cv2.imwrite('dividiertes_bild.jpg', divided_image)
Diese grundlegenden Operationen ermöglichen es, Bilder auf verschiedene Weise zu bearbeiten und anzupassen, um spezifische Anforderungen in der Bildverarbeitung zu erfüllen.