Update app.py
Browse files
app.py
CHANGED
@@ -54,14 +54,19 @@ def process_image(image: Image.Image):
|
|
54 |
# two extremes: no blur for near, heavy blur for far
|
55 |
near_blur = img_np
|
56 |
far_blur = cv2.GaussianBlur(img_np, (81,81), 20)
|
57 |
-
|
|
|
58 |
inv_d = 1.0 - depth_norm
|
59 |
alpha = inv_d[...,None]
|
|
|
60 |
# now near (inv_d≈1) stays sharp, far (inv_d≈0) becomes far_blur
|
61 |
combined = img_np * alpha + far_blur * (1.0 - alpha)
|
62 |
lens_blur = Image.fromarray(np.clip(combined,0,255).astype(np.uint8))
|
63 |
|
64 |
-
|
|
|
|
|
|
|
65 |
|
66 |
iface = gr.Interface(
|
67 |
fn=process_image,
|
|
|
54 |
# two extremes: no blur for near, heavy blur for far
|
55 |
near_blur = img_np
|
56 |
far_blur = cv2.GaussianBlur(img_np, (81,81), 20)
|
57 |
+
|
58 |
+
# invert so 0 -> near, 1 -> far
|
59 |
inv_d = 1.0 - depth_norm
|
60 |
alpha = inv_d[...,None]
|
61 |
+
|
62 |
# now near (inv_d≈1) stays sharp, far (inv_d≈0) becomes far_blur
|
63 |
combined = img_np * alpha + far_blur * (1.0 - alpha)
|
64 |
lens_blur = Image.fromarray(np.clip(combined,0,255).astype(np.uint8))
|
65 |
|
66 |
+
# 6) composite to keep foreground sharp, invert the binary segmentation mask:
|
67 |
+
bg_mask = Image.fromarray((mask==0).astype(np.uint8)*255)
|
68 |
+
final_lens_blur = Image.composite(lens_blur, image, mask=bg_mask)
|
69 |
+
return image, output_blur, final_lens_blur
|
70 |
|
71 |
iface = gr.Interface(
|
72 |
fn=process_image,
|