Astridkraft commited on
Commit
16d2aa0
·
verified ·
1 Parent(s): 5d70085

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -4
app.py CHANGED
@@ -383,12 +383,21 @@ def enhanced_composite_with_sam(original_image, inpaint_result, original_mask,
383
  bbox_scaled[3] + y_offset
384
  )
385
 
 
 
 
 
 
 
 
386
  # Die BBox-Koordinaten sind durch 2 Punkte gegeben: oben links (x,y)-unten rechts (x,y)
387
  # Prüfung: hat BBox gültige Koordinaten
388
  if bbox_in_512[2] > bbox_in_512[0] and bbox_in_512[3] > bbox_in_512[1]:
389
  # Bearbeiteten Bereich aus dem 512×512-Ergebnis ausschneiden in Größe der 512x512-skalierten BBox
390
  edited_region = inpaint_result.crop(bbox_in_512)
391
 
 
 
392
 
393
  # Damit wird der 512er BBox-Inhalt auf Originalgröße-BBox hochskaliert
394
  original_bbox_size = (bbox_coords[2] - bbox_coords[0],
@@ -397,20 +406,31 @@ def enhanced_composite_with_sam(original_image, inpaint_result, original_mask,
397
  original_bbox_size,
398
  Image.Resampling.LANCZOS
399
  )
 
 
 
400
 
401
- # SAM-Maske= original_mask in Originalgröße (also Smartphone: 4032x3024)Aus dieser Maske muß nun der
402
  # Original BBox-Bereich ausgeschnitten werden und
403
  mask_cropped = original_mask.crop(bbox_coords)
404
- # der Randbereich muß für Übergänge weich gezeichnet werden
 
 
405
  soft_mask = mask_cropped.filter(ImageFilter.GaussianBlur(3))
406
 
407
  # Alpha-Compositing mit präziser SAM-Maske
 
408
  edited_rgba = edited_region_fullsize.convert("RGBA")
 
 
409
  mask_rgba = soft_mask.convert("L") # SAM-Maske als Alpha-Kanal
410
-
 
411
  temp_image = Image.new("RGBA", original_bbox_size, (0, 0, 0, 0))
 
412
  temp_image.paste(edited_rgba, (0, 0), mask_rgba)
413
-
 
414
  final_image.paste(temp_image, (bbox_coords[0], bbox_coords[1]), temp_image)
415
 
416
  # Debug-Info
 
383
  bbox_scaled[3] + y_offset
384
  )
385
 
386
+
387
+ print(f"🔍 [COMPOSIT] Original-BBox: {bbox_coords}")
388
+ print(f"🔍 [COMPOSIT] Scale/Offset: {scale_factor}, ({x_offset},{y_offset})")
389
+ print(f"🔍 [COMPOSIT] BBox in 512: {bbox_in_512}")
390
+ print(f"🔍 [COMPOSIT] Inpaint Size: {inpaint_result.size}")
391
+
392
+
393
  # Die BBox-Koordinaten sind durch 2 Punkte gegeben: oben links (x,y)-unten rechts (x,y)
394
  # Prüfung: hat BBox gültige Koordinaten
395
  if bbox_in_512[2] > bbox_in_512[0] and bbox_in_512[3] > bbox_in_512[1]:
396
  # Bearbeiteten Bereich aus dem 512×512-Ergebnis ausschneiden in Größe der 512x512-skalierten BBox
397
  edited_region = inpaint_result.crop(bbox_in_512)
398
 
399
+ print(f"🔍 [CROP] Ausgeschnitten: {edited_region.size}")
400
+
401
 
402
  # Damit wird der 512er BBox-Inhalt auf Originalgröße-BBox hochskaliert
403
  original_bbox_size = (bbox_coords[2] - bbox_coords[0],
 
406
  original_bbox_size,
407
  Image.Resampling.LANCZOS
408
  )
409
+
410
+ print(f"🔍 [RESIZE] Original-BBox-Size: {original_bbox_size}")
411
+ print(f"🔍 [RESIZE] Hochskaliert auf: {edited_region_fullsize.size}")
412
 
413
+ # SAM-Maske= original_mask in Originalgröße (also Smartphone: 4032x3024). Aus dieser Maske muß nun der
414
  # Original BBox-Bereich ausgeschnitten werden und
415
  mask_cropped = original_mask.crop(bbox_coords)
416
+ print(f"🔍 [MASK] Mask-Crop Size: {mask_cropped.size}")
417
+
418
+ # der Randbereich des BBox-Ausschnittes muß für Übergänge weich gezeichnet werden
419
  soft_mask = mask_cropped.filter(ImageFilter.GaussianBlur(3))
420
 
421
  # Alpha-Compositing mit präziser SAM-Maske
422
+ # damit wird auf den neu generirten BBox-Bereich in Originalgröße eine Folie gezogen
423
  edited_rgba = edited_region_fullsize.convert("RGBA")
424
+ # Dadurch werden in die Folie der weichen SAM-Maske wieder an den Stellen schwarze/transparente Löcher
425
+ # gerissen wo der Hintergrund innerhalb der BBox bleiben muß!
426
  mask_rgba = soft_mask.convert("L") # SAM-Maske als Alpha-Kanal
427
+
428
+ # generiere hiermit ein neues transparantes Bild in original BBox-Größe (unsichtbare Trägerfolie)
429
  temp_image = Image.new("RGBA", original_bbox_size, (0, 0, 0, 0))
430
+ # darauf klebe ich die neu generierte Person edited_rgba und SAM-Maske als Löcher-Folie-mask_rgba
431
  temp_image.paste(edited_rgba, (0, 0), mask_rgba)
432
+
433
+ # hiermit hole ich mir den Hintergrund außerhalb der BBox zurück!
434
  final_image.paste(temp_image, (bbox_coords[0], bbox_coords[1]), temp_image)
435
 
436
  # Debug-Info