From a39b0252c882d3446a730286646896577e0adc07 Mon Sep 17 00:00:00 2001 From: Metacube Date: Sun, 5 Apr 2026 09:00:25 +0200 Subject: [PATCH] Delete grey.php --- grey.php | 140 ------------------------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 grey.php diff --git a/grey.php b/grey.php deleted file mode 100644 index d361453..0000000 --- a/grey.php +++ /dev/null @@ -1,140 +0,0 @@ -import os -import numpy as np -from PIL import Image -import shutil -import time - -def ist_graubild_einfach(bildpfad, max_rgb_diff=20): - """ - EINFACHSTE Methode: Prüfe ob R ≈ G ≈ B für alle Pixel - Bei Grau sind die RGB-Werte fast identisch! - """ - try: - img = Image.open(bildpfad) - - if img.mode == 'L': - return True, {'methode': 'Graustufen-Modus'} - - img_rgb = img.convert('RGB') - # Kleiner für Speed - img_rgb.thumbnail((300, 300), Image.Resampling.LANCZOS) - - img_array = np.array(img_rgb, dtype=np.float32) - - r = img_array[:, :, 0] - g = img_array[:, :, 1] - b = img_array[:, :, 2] - - # Berechne maximale Differenz zwischen R, G, B für jeden Pixel - diff_rg = np.abs(r - g) - diff_gb = np.abs(g - b) - diff_rb = np.abs(r - b) - - max_diff_per_pixel = np.maximum(np.maximum(diff_rg, diff_gb), diff_rb) - - # Statistiken - mean_diff = np.mean(max_diff_per_pixel) - median_diff = np.median(max_diff_per_pixel) - p90_diff = np.percentile(max_diff_per_pixel, 90) - p95_diff = np.percentile(max_diff_per_pixel, 95) - - # ENTSCHEIDUNG: Grau wenn 95% der Pixel RGB-Differenz < Schwellwert haben - ist_grau = p95_diff < max_rgb_diff - - return ist_grau, { - 'mean_diff': float(mean_diff), - 'median_diff': float(median_diff), - 'p90_diff': float(p90_diff), - 'p95_diff': float(p95_diff), - 'ist_grau': ist_grau - } - - except Exception as e: - print(f"Fehler bei {bildpfad}: {e}") - return False, {} - -def filtere_graue_bilder_final(quellordner, zielordner_grau=None, - max_rgb_diff=20, verschieben=True, loeschen=False): - """ - Finale optimierte Version - einfach und effektiv - - max_rgb_diff: Schwellwert für RGB-Differenz - - 15 = sehr streng (nur pure Graubilder) - - 20 = empfohlen (auch leicht getönte Graubilder) - - 25 = lockerer (auch stark entsättigte Bilder) - """ - - if zielordner_grau and not os.path.exists(zielordner_grau): - os.makedirs(zielordner_grau) - - bilddateien = [f for f in sorted(os.listdir(quellordner)) - if f.lower().endswith(('.jpg', '.jpeg', '.png'))] - - graue_bilder = [] - farbige_bilder = [] - - gesamt = len(bilddateien) - print(f"Verarbeite {gesamt} Bilder...") - print(f"Schwellwert: RGB-Differenz < {max_rgb_diff}\n") - - start_zeit = time.time() - - for idx, datei in enumerate(bilddateien, 1): - vollpfad = os.path.join(quellordner, datei) - - ist_grau, metriken = ist_graubild_einfach(vollpfad, max_rgb_diff) - - if idx % 100 == 0 or idx == gesamt: - verstrichene_zeit = time.time() - start_zeit - bilder_pro_sek = idx / verstrichene_zeit if verstrichene_zeit > 0 else 0 - verbleibend = (gesamt - idx) / bilder_pro_sek if bilder_pro_sek > 0 else 0 - print(f" [{idx}/{gesamt}] - {bilder_pro_sek:.1f} Bilder/Sek - " - f"~{int(verbleibend)}s verbleibend") - - if ist_grau: - graue_bilder.append((datei, metriken)) - if loeschen: # ← NEU: Löschen statt verschieben - os.remove(vollpfad) - elif zielordner_grau: - ziel = os.path.join(zielordner_grau, datei) - if verschieben: - shutil.move(vollpfad, ziel) - else: - shutil.copy2(vollpfad, ziel) - else: - farbige_bilder.append((datei, metriken)) - - gesamt_zeit = time.time() - start_zeit - print(f"\n{'='*60}") - print(f"✓ FERTIG in {gesamt_zeit:.1f} Sekunden ({gesamt/gesamt_zeit:.1f} Bilder/Sek)") - print(f"✓ ERGEBNIS: {len(graue_bilder)} graue, {len(farbige_bilder)} farbige Bilder") - print(f"{'='*60}\n") - - # Details - if graue_bilder: - print("GRAUE BILDER (erste 10):") - for datei, metriken in graue_bilder[:10]: - print(f" {datei}: P95-Diff={metriken.get('p95_diff', 0):.1f}") - if len(graue_bilder) > 10: - print(f" ... und {len(graue_bilder) - 10} weitere") - - if farbige_bilder: - print("\nFARBIGE BILDER (erste 10):") - for datei, metriken in farbige_bilder[:10]: - print(f" {datei}: P95-Diff={metriken.get('p95_diff', 0):.1f}") - if len(farbige_bilder) > 10: - print(f" ... und {len(farbige_bilder) - 10} weitere") - -if __name__ == "__main__": - quellordner = "./image" - zielordner_grau = "graue_bilder" - - # Starte mit Schwellwert 20 - # Wenn zu viele Farbbilder als grau erkannt werden: auf 15 senken - # Wenn zu viele Graubilder durchrutschen: auf 25 erhöhen - filtere_graue_bilder_final( - quellordner, - zielordner_grau, - max_rgb_diff=20, - verschieben=True,loeschen=False - )