carlosriverat commited on
Commit
1601fa5
·
1 Parent(s): 9e2fa2e

updated magenta images

Browse files
Files changed (1) hide show
  1. app.py +34 -34
app.py CHANGED
@@ -10,6 +10,24 @@ def preprocess_image(image, blur_value):
10
  blurred = cv2.GaussianBlur(gray, (blur_value, blur_value), 0)
11
  return blurred
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  def background_subtraction(image1, image2):
14
  subtractor = cv2.createBackgroundSubtractorMOG2()
15
  fgmask1 = subtractor.apply(image1)
@@ -22,11 +40,8 @@ def background_subtraction(image1, image2):
22
  # Create highlighted differences
23
  highlighted = cv2.bitwise_and(image2, image2, mask=mask)
24
 
25
- # Create raw difference overlay
26
- diff_colored = cv2.cvtColor(diff, cv2.COLOR_GRAY2BGR)
27
- diff_colored[:, :, 0] = 0 # Remove blue
28
- diff_colored[:, :, 1] = 0 # Remove green
29
- overlay = cv2.addWeighted(image1, 0.6, diff_colored, 0.6, 0)
30
 
31
  # Create a blended image
32
  blended = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)
@@ -35,13 +50,10 @@ def background_subtraction(image1, image2):
35
  composite = image1.copy()
36
  composite[mask > 0] = image2[mask > 0]
37
 
38
- # Create final difference overlay
39
- composite_diff = cv2.absdiff(image1, composite)
40
- composite_diff[:, :, 0] = 0 # Remove blue
41
- composite_diff[:, :, 1] = 0 # Remove green
42
- final_overlay = cv2.addWeighted(image1, 0.6, composite_diff, 0.6, 0)
43
 
44
- return blended, overlay, highlighted, mask, composite, final_overlay
45
 
46
  def optical_flow(image1, image2):
47
  gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
@@ -59,11 +71,8 @@ def optical_flow(image1, image2):
59
  # Create highlighted differences
60
  highlighted = cv2.bitwise_and(image2, image2, mask=mask)
61
 
62
- # Create raw difference overlay
63
- diff_colored = cv2.absdiff(image1, image2)
64
- diff_colored[:, :, 0] = 0 # Remove blue
65
- diff_colored[:, :, 1] = 0 # Remove green
66
- overlay = cv2.addWeighted(image1, 0.6, diff_colored, 0.6, 0)
67
 
68
  # Create a blended image
69
  blended = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)
@@ -72,13 +81,10 @@ def optical_flow(image1, image2):
72
  composite = image1.copy()
73
  composite[mask > 0] = image2[mask > 0]
74
 
75
- # Create final difference overlay
76
- composite_diff = cv2.absdiff(image1, composite)
77
- composite_diff[:, :, 0] = 0 # Remove blue
78
- composite_diff[:, :, 1] = 0 # Remove green
79
- final_overlay = cv2.addWeighted(image1, 0.6, composite_diff, 0.6, 0)
80
 
81
- return blended, overlay, highlighted, mask, composite, final_overlay
82
 
83
  def feature_matching(image1, image2):
84
  # Use SSIM as a fallback for feature matching since the original implementation doesn't give us a good mask
@@ -105,11 +111,8 @@ def compare_ssim(image1, image2, blur_value, technique, threshold_value):
105
  # Create highlighted differences
106
  highlighted = cv2.bitwise_and(image2, image2, mask=mask)
107
 
108
- # Create raw difference overlay
109
- diff_colored = cv2.absdiff(image1, image2)
110
- diff_colored[:, :, 0] = 0 # Remove blue
111
- diff_colored[:, :, 1] = 0 # Remove green
112
- overlay = cv2.addWeighted(image1, 0.6, diff_colored, 0.6, 0)
113
 
114
  # Create a blended image
115
  blended = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)
@@ -121,13 +124,10 @@ def compare_ssim(image1, image2, blur_value, technique, threshold_value):
121
  masked_bg = cv2.bitwise_and(image1, cv2.bitwise_not(mask_3channel))
122
  composite = cv2.add(masked_bg, masked_obj)
123
 
124
- # Create final difference overlay
125
- composite_diff = cv2.absdiff(image1, composite)
126
- composite_diff[:, :, 0] = 0 # Remove blue
127
- composite_diff[:, :, 1] = 0 # Remove green
128
- final_overlay = cv2.addWeighted(image1, 0.6, composite_diff, 0.6, 0)
129
 
130
- return blended, overlay, highlighted, mask, composite, final_overlay
131
 
132
  def compare_images(image1, image2, blur_value, technique, threshold_value, method):
133
  if method == "Background Subtraction":
@@ -149,7 +149,7 @@ with gr.Blocks() as demo:
149
  img1 = gr.Image(type="numpy", label="Image Without Object (Scene)")
150
  img2 = gr.Image(type="numpy", label="Image With Object")
151
 
152
- blur_slider = gr.Slider(minimum=1, maximum=15, step=1, value=5, label="Gaussian Blur")
153
  technique_dropdown = gr.Dropdown(["Adaptive Threshold", "Otsu's Threshold", "Simple Binary"], label="Thresholding Technique", value="Adaptive Threshold", interactive=True)
154
  threshold_slider = gr.Slider(minimum=0, maximum=255, step=1, value=50, label="Threshold Value", visible=False)
155
  method_dropdown = gr.Dropdown(["SSIM", "Background Subtraction", "Optical Flow", "Feature Matching"], label="Comparison Method", value="SSIM", interactive=True)
 
10
  blurred = cv2.GaussianBlur(gray, (blur_value, blur_value), 0)
11
  return blurred
12
 
13
+ def create_dramatic_magenta(image1, diff):
14
+ """Create a more dramatic magenta overlay to highlight differences"""
15
+ # Create a more intense magenta by boosting the red and blue channels
16
+ diff_colored = cv2.absdiff(image1, diff)
17
+
18
+ # Normalize to enhance contrast
19
+ diff_normalized = cv2.normalize(diff_colored, None, 0, 255, cv2.NORM_MINMAX)
20
+
21
+ # Amplify the red channel for more dramatic magenta
22
+ diff_normalized[:, :, 0] = 0 # Remove blue
23
+ diff_normalized[:, :, 1] = 0 # Remove green
24
+ diff_normalized[:, :, 2] = np.clip(diff_normalized[:, :, 2] * 2, 0, 255) # Boost red
25
+
26
+ # Create more dramatic overlay with higher contrast
27
+ overlay = cv2.addWeighted(image1, 0.5, diff_normalized, 0.8, 0)
28
+
29
+ return overlay
30
+
31
  def background_subtraction(image1, image2):
32
  subtractor = cv2.createBackgroundSubtractorMOG2()
33
  fgmask1 = subtractor.apply(image1)
 
40
  # Create highlighted differences
41
  highlighted = cv2.bitwise_and(image2, image2, mask=mask)
42
 
43
+ # Create raw difference overlay with dramatic magenta
44
+ raw_overlay = create_dramatic_magenta(image1, image2)
 
 
 
45
 
46
  # Create a blended image
47
  blended = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)
 
50
  composite = image1.copy()
51
  composite[mask > 0] = image2[mask > 0]
52
 
53
+ # Create final difference overlay with dramatic magenta
54
+ final_overlay = create_dramatic_magenta(image1, composite)
 
 
 
55
 
56
+ return blended, raw_overlay, highlighted, mask, composite, final_overlay
57
 
58
  def optical_flow(image1, image2):
59
  gray1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
 
71
  # Create highlighted differences
72
  highlighted = cv2.bitwise_and(image2, image2, mask=mask)
73
 
74
+ # Create raw difference overlay with dramatic magenta
75
+ raw_overlay = create_dramatic_magenta(image1, image2)
 
 
 
76
 
77
  # Create a blended image
78
  blended = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)
 
81
  composite = image1.copy()
82
  composite[mask > 0] = image2[mask > 0]
83
 
84
+ # Create final difference overlay with dramatic magenta
85
+ final_overlay = create_dramatic_magenta(image1, composite)
 
 
 
86
 
87
+ return blended, raw_overlay, highlighted, mask, composite, final_overlay
88
 
89
  def feature_matching(image1, image2):
90
  # Use SSIM as a fallback for feature matching since the original implementation doesn't give us a good mask
 
111
  # Create highlighted differences
112
  highlighted = cv2.bitwise_and(image2, image2, mask=mask)
113
 
114
+ # Create raw difference overlay with dramatic magenta
115
+ raw_overlay = create_dramatic_magenta(image1, image2)
 
 
 
116
 
117
  # Create a blended image
118
  blended = cv2.addWeighted(image1, 0.5, image2, 0.5, 0)
 
124
  masked_bg = cv2.bitwise_and(image1, cv2.bitwise_not(mask_3channel))
125
  composite = cv2.add(masked_bg, masked_obj)
126
 
127
+ # Create final difference overlay with dramatic magenta
128
+ final_overlay = create_dramatic_magenta(image1, composite)
 
 
 
129
 
130
+ return blended, raw_overlay, highlighted, mask, composite, final_overlay
131
 
132
  def compare_images(image1, image2, blur_value, technique, threshold_value, method):
133
  if method == "Background Subtraction":
 
149
  img1 = gr.Image(type="numpy", label="Image Without Object (Scene)")
150
  img2 = gr.Image(type="numpy", label="Image With Object")
151
 
152
+ blur_slider = gr.Slider(minimum=1, maximum=15, step=2, value=5, label="Gaussian Blur")
153
  technique_dropdown = gr.Dropdown(["Adaptive Threshold", "Otsu's Threshold", "Simple Binary"], label="Thresholding Technique", value="Adaptive Threshold", interactive=True)
154
  threshold_slider = gr.Slider(minimum=0, maximum=255, step=1, value=50, label="Threshold Value", visible=False)
155
  method_dropdown = gr.Dropdown(["SSIM", "Background Subtraction", "Optical Flow", "Feature Matching"], label="Comparison Method", value="SSIM", interactive=True)