Die alten is_blurry/is_overexposed/is_underexposed/_mean_brightness bleiben fuer API-Kompatibilitaet, werden aber von analyze_folder nicht mehr genutzt
Vorher: 3 Decodes pro Bild in Phase 1 + 1 in Phase 3 = 4 Decodes Nachher: 1 Decode pro Bild fuer alle Metriken
Funktionstest mit 5 Bildern (overexposed/underexposed/grey + 1 exakte Kopie + 1 perceptual dup): alle Detektionen korrekt, Laufzeit 0,26 s.
Fix umgesetzt in `analyzer.py:analyze_folder`:
- Phase 1 lädt jedes Bild **einmal** mit `Image.open(path)` und berechnet daraus alles:
- `gray_arr` (numpy L-Konvertierung)
- `blur` via Laplacian-Variance auf `gray_arr`
- `mean_b` als `gray_arr.mean()`
- `phash` auf RGB-Variante
- pHash wird im `phash_cache` gespeichert
- Phase 3 ruft `find_duplicates(paths, threshold, hash_cache=phash_cache)` auf - kein zweiter Decode
- `find_duplicates` akzeptiert jetzt optionalen `hash_cache`-Parameter
- Die alten `is_blurry`/`is_overexposed`/`is_underexposed`/`_mean_brightness` bleiben fuer API-Kompatibilitaet, werden aber von `analyze_folder` nicht mehr genutzt
**Vorher:** 3 Decodes pro Bild in Phase 1 + 1 in Phase 3 = 4 Decodes
**Nachher:** 1 Decode pro Bild fuer alle Metriken
Funktionstest mit 5 Bildern (overexposed/underexposed/grey + 1 exakte Kopie + 1 perceptual dup): alle Detektionen korrekt, Laufzeit 0,26 s.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
analyzer.py:10-33undanalyzer.py:58-89:Pro Bild laufen unabhaengige Decodes:
is_blurry(path)->cv2.imread()_mean_brightness(path)->Image.open().convert("L")find_duplicates()->imagehash.phash(Image.open(path))Bei 500 Bildern: 1500+ Dekodierungen statt 500.
Fix
Pro Bild einmal dekodieren, dann alle Operationen auf demselben Array:
Fix umgesetzt in
analyzer.py:analyze_folder:Phase 1 lädt jedes Bild einmal mit
Image.open(path)und berechnet daraus alles:gray_arr(numpy L-Konvertierung)blurvia Laplacian-Variance aufgray_arrmean_balsgray_arr.mean()phashauf RGB-VariantepHash wird im
phash_cachegespeichertPhase 3 ruft
find_duplicates(paths, threshold, hash_cache=phash_cache)auf - kein zweiter Decodefind_duplicatesakzeptiert jetzt optionalenhash_cache-ParameterDie alten
is_blurry/is_overexposed/is_underexposed/_mean_brightnessbleiben fuer API-Kompatibilitaet, werden aber vonanalyze_foldernicht mehr genutztVorher: 3 Decodes pro Bild in Phase 1 + 1 in Phase 3 = 4 Decodes
Nachher: 1 Decode pro Bild fuer alle Metriken
Funktionstest mit 5 Bildern (overexposed/underexposed/grey + 1 exakte Kopie + 1 perceptual dup): alle Detektionen korrekt, Laufzeit 0,26 s.