leonett commited on
Commit
1617d49
verified
1 Parent(s): c9cc27c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -15
app.py CHANGED
@@ -96,37 +96,48 @@ def estimar_probabilidad_manipulacion(porcentaje_ela):
96
  else:
97
  return "Muy alta (> 15%) - Manipulaci贸n extensa o generaci贸n por IA detectada."
98
 
 
99
  def realizar_ela(imagen):
100
  try:
101
  img_np = np.array(imagen.convert("RGB"))
102
  img_cv = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)
103
 
104
- quality = 95
105
- noise_level = 18
106
- error_scale = 57
 
 
107
 
108
  temp_path = "/tmp/temp_image.jpg"
109
  cv2.imwrite(temp_path, img_cv, [cv2.IMWRITE_JPEG_QUALITY, quality])
110
  img_comprimida = cv2.imread(temp_path)
111
-
112
  if img_comprimida is None:
113
  raise ValueError("No se pudo leer la imagen comprimida.")
114
 
115
  diferencia = cv2.absdiff(img_cv.astype(np.float32), img_comprimida.astype(np.float32))
116
- scaled_diff = diferencia * (noise_level / 10.0) * (error_scale / 10.0)
117
  scaled_diff = np.clip(scaled_diff, 0, 255).astype(np.uint8)
118
 
119
  gray_diff = cv2.cvtColor(scaled_diff, cv2.COLOR_BGR2GRAY)
120
- _, mask = cv2.threshold(gray_diff, 10, 255, cv2.THRESH_BINARY)
121
-
122
- result = scaled_diff.copy()
123
- mask_colored = cv2.merge([mask, mask, np.zeros_like(mask)])
124
- background = cv2.addWeighted(img_cv, 0.3, np.zeros_like(img_cv), 0.7, 0)
125
- result = np.where(mask[:, :, None] > 0, mask_colored, background)
126
- result = cv2.convertScaleAbs(result, alpha=1.2, beta=10)
127
-
128
- if os.path.exists(temp_path):
129
- os.remove(temp_path)
 
 
 
 
 
 
 
 
 
130
  return result, mask
131
 
132
  except Exception as e:
@@ -135,6 +146,9 @@ def realizar_ela(imagen):
135
  cv2.putText(error_img, "ERROR AL PROCESAR ELA", (50, 150), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
136
  return error_img, None
137
 
 
 
 
138
  def crear_graficos_estadisticas(porcentaje_ela, dimensiones, metadatos):
139
  """Crear gr谩ficos estad铆sticos para el an谩lisis ELA"""
140
 
 
96
  else:
97
  return "Muy alta (> 15%) - Manipulaci贸n extensa o generaci贸n por IA detectada."
98
 
99
+
100
  def realizar_ela(imagen):
101
  try:
102
  img_np = np.array(imagen.convert("RGB"))
103
  img_cv = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)
104
 
105
+ quality = 90
106
+ noise_level = 8
107
+ error_scale = 25
108
+ brightness_pct = 100
109
+ equalize_histogram = False
110
 
111
  temp_path = "/tmp/temp_image.jpg"
112
  cv2.imwrite(temp_path, img_cv, [cv2.IMWRITE_JPEG_QUALITY, quality])
113
  img_comprimida = cv2.imread(temp_path)
 
114
  if img_comprimida is None:
115
  raise ValueError("No se pudo leer la imagen comprimida.")
116
 
117
  diferencia = cv2.absdiff(img_cv.astype(np.float32), img_comprimida.astype(np.float32))
118
+ scaled_diff = diferencia * (noise_level / 10.0) * (error_scale / 100.0) * 20.0
119
  scaled_diff = np.clip(scaled_diff, 0, 255).astype(np.uint8)
120
 
121
  gray_diff = cv2.cvtColor(scaled_diff, cv2.COLOR_BGR2GRAY)
122
+ _, mask = cv2.threshold(gray_diff, 20, 255, cv2.THRESH_BINARY)
123
+ mask = mask.astype(np.uint8)
124
+
125
+ if equalize_histogram:
126
+ gray = cv2.cvtColor(scaled_diff, cv2.COLOR_BGR2GRAY)
127
+ gray_eq = cv2.equalizeHist(gray)
128
+ scaled_diff = cv2.cvtColor(gray_eq, cv2.COLOR_GRAY2BGR)
129
+
130
+ brightness_factor = min(1.1, brightness_pct / 100.0)
131
+ scaled_diff = cv2.convertScaleAbs(scaled_diff, alpha=brightness_factor, beta=0)
132
+
133
+ ela_color = scaled_diff.copy()
134
+ img_gray = cv2.cvtColor(img_cv, cv2.COLOR_BGR2GRAY)
135
+ img_gray = cv2.cvtColor(img_gray, cv2.COLOR_GRAY2BGR)
136
+ img_gray = cv2.convertScaleAbs(img_gray, alpha=0.5, beta=0)
137
+
138
+ result = np.where(mask[..., None] > 0, ela_color, img_gray)
139
+
140
+ os.remove(temp_path)
141
  return result, mask
142
 
143
  except Exception as e:
 
146
  cv2.putText(error_img, "ERROR AL PROCESAR ELA", (50, 150), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
147
  return error_img, None
148
 
149
+
150
+
151
+
152
  def crear_graficos_estadisticas(porcentaje_ela, dimensiones, metadatos):
153
  """Crear gr谩ficos estad铆sticos para el an谩lisis ELA"""
154