add noise funktion to simulate errors
This commit is contained in:
87
fehler.py
Normal file
87
fehler.py
Normal file
@@ -0,0 +1,87 @@
|
||||
import os
|
||||
import random
|
||||
from PIL import Image
|
||||
|
||||
def bild_verarbeiten(bild_ordner, ausgabe_ordner, transformierungsfunktion):
|
||||
"""
|
||||
Veraarbeitet alle Bilder in einem Ordner und speichert die Ergebnisse in einem anderen Ordner.
|
||||
Verwendet eine übergebene Funktion zur Bildtransformation.
|
||||
"""
|
||||
for dateiname in os.listdir(bild_ordner):
|
||||
if dateiname.lower().endswith(('png', 'jpg', 'jpeg')):
|
||||
bild_pfad = os.path.join(bild_ordner, dateiname)
|
||||
try:
|
||||
bild = Image.open(bild_pfad)
|
||||
neues_bild = transformierungsfunktion(bild)
|
||||
neues_bild_pfad = os.path.join(ausgabe_ordner, dateiname)
|
||||
neues_bild.save(neues_bild_pfad)
|
||||
print(f"Bild '{dateiname}' erfolgreich verarbeitet und gespeichert in '{neues_bild_pfad}'")
|
||||
except Exception as e:
|
||||
print(f"Fehler beim Verarbeiten von '{dateiname}': {e}")
|
||||
|
||||
|
||||
def bild_verarbeiten_einzelbild(bild, zufalls_pixel_chance=0.1):
|
||||
return bild
|
||||
|
||||
def bild_rauschen(bild, zufalls_pixel_chance=0.01):
|
||||
"""
|
||||
Verarbeitet ein einzelnes Bild, indem es zufällig ausgewählte Pixel
|
||||
mit einer gegebenen Wahrscheinlichkeit durch weiße Pixel ersetzt.
|
||||
|
||||
Args:
|
||||
bild (PIL.Image.Image): Das zu verarbeitende Bild-Objekt.
|
||||
zufalls_pixel_chance (float): Die Wahrscheinlichkeit (zwischen 0.0 und 1.0),
|
||||
dass ein einzelnes Pixel durch Weiß ersetzt wird.
|
||||
Standardmäßig 0.1 (10%).
|
||||
|
||||
Returns:
|
||||
PIL.Image.Image: Das verarbeitete Bild mit zufällig ersetzten weißen Pixeln.
|
||||
Das Originalbild wird direkt modifiziert.
|
||||
"""
|
||||
# Lade die Pixeldaten für effizienten Lese-/Schreibzugriff.
|
||||
# .load() gibt ein PixelAccess-Objekt zurück, das direkten Zugriff erlaubt.
|
||||
pixel_data = bild.load()
|
||||
width, height = bild.size
|
||||
|
||||
# Definiere die Farbe Weiß. Wir müssen den Bildmodus berücksichtigen.
|
||||
# Einfacher Ansatz: Konvertiere zu RGB, dann ist Weiß immer (255, 255, 255).
|
||||
# Alternativ: Prüfe den Modus und setze Weiß entsprechend (z.B. 255 für 'L').
|
||||
# Wir wählen hier die Konvertierung zu RGB für Konsistenz.
|
||||
if bild.mode != 'RGB':
|
||||
# Konvertiere das Bild zu RGB. Achtung: Dies kann Alphakanäle entfernen
|
||||
# oder Graustufenbilder farbig machen (wenn auch nur in Grautönen).
|
||||
# Wenn der Originalmodus wichtig ist, muss die Logik angepasst werden.
|
||||
bild = bild.convert('RGB')
|
||||
pixel_data = bild.load() # Pixeldaten nach Konvertierung neu laden
|
||||
width, height = bild.size # Größe könnte sich theoretisch ändern (selten)
|
||||
|
||||
white_color = (255, 255, 255) # Weiß im RGB-Format
|
||||
|
||||
# Gehe durch jedes Pixel im Bild
|
||||
for x in range(width):
|
||||
for y in range(height):
|
||||
# Generiere eine Zufallszahl zwischen 0.0 und 1.0
|
||||
# Wenn die Zahl kleiner als die gewünschte Chance ist, ersetze das Pixel
|
||||
if random.random() < zufalls_pixel_chance:
|
||||
# Ersetze das Pixel an Position (x, y) durch Weiß
|
||||
pixel_data[x, y] = white_color
|
||||
|
||||
# Gib das modifizierte Bild zurück
|
||||
return bild
|
||||
|
||||
|
||||
# Hauptteil des Skripts
|
||||
if __name__ == "__main__":
|
||||
bild_ordner = "./bilder"
|
||||
ausgabe_ordner = "./fehler"
|
||||
# Hier kannst du die transformierungsfunktion definieren oder importieren
|
||||
transformierungsfunktion = bild_rauschen # Standardmäßig die Farbtransformation
|
||||
|
||||
if not os.path.exists(bild_ordner):
|
||||
print(f"Ordner '{bild_ordner}' nicht gefunden. Bitte erstellen Sie ihn.")
|
||||
exit()
|
||||
if not os.path.exists(ausgabe_ordner):
|
||||
os.makedirs(ausgabe_ordner)
|
||||
|
||||
bild_verarbeiten(bild_ordner, ausgabe_ordner, transformierungsfunktion)
|
||||
print("Verabeitung abgeschlossen.")
|
||||
Reference in New Issue
Block a user