leonett commited on
Commit
76c1c87
·
1 Parent(s): 736c84d

Actualización del código Error ELA

Browse files
Files changed (1) hide show
  1. app.py +22 -18
app.py CHANGED
@@ -3,9 +3,7 @@
3
  import cv2
4
  import numpy as np
5
  from PIL import Image
6
- from PIL.ExifTags import TAGS, GPSTAGS
7
- import hashlib
8
- import gradio as gr
9
  import os
10
  from datetime import datetime
11
  import tempfile
@@ -41,31 +39,24 @@ def realizar_ela(imagen, quality=95, scale=100):
41
  print(f"Error al realizar ELA: {e}")
42
  return None
43
 
44
- def analizar_manipulacion(imagen, metadatos, ela_imagen):
45
  """
46
- Analiza si la imagen ha sido manipulada.
47
  """
48
  manipulada = False
49
  razones = []
50
 
51
- if not metadatos:
52
- razones.append("La imagen no tiene metadatos EXIF.")
53
- else:
54
- if "Software" in metadatos:
55
- razones.append(f"La imagen fue editada con: {metadatos['Software']}")
56
- manipulada = True
57
-
58
  if ela_imagen is None:
59
  razones.append("No se pudo realizar el análisis ELA.")
60
  else:
61
  promedio_ela = np.mean(ela_imagen)
62
- if promedio_ela > 10:
63
  razones.append("El análisis ELA sugiere posibles alteraciones.")
64
  manipulada = True
 
 
65
 
66
- if not razones:
67
- razones.append("No se encontraron indicadores claros de manipulación.")
68
-
69
  return manipulada, razones
70
 
71
  def procesar_imagen(archivo_imagen):
@@ -85,9 +76,20 @@ def procesar_imagen(archivo_imagen):
85
  Fecha de modificación: {fecha_modificacion}
86
  """
87
 
 
88
  metadatos = obtener_metadatos(imagen)
 
 
89
  ela_imagen = realizar_ela(imagen)
90
- manipulada, razones = analizar_manipulacion(imagen, metadatos, ela_imagen)
 
 
 
 
 
 
 
 
91
 
92
  info_manipulacion = "\nAnálisis de manipulación:\n"
93
  if manipulada:
@@ -113,12 +115,14 @@ def procesar_imagen(archivo_imagen):
113
  return None, error_msg
114
 
115
  # Interfaz de GRADIO
 
 
116
  iface = gr.Interface(
117
  fn=procesar_imagen,
118
  inputs=gr.Image(type="filepath", label="Sube una imagen"),
119
  outputs=[gr.Image(label="Error Level Analysis (ELA)"), gr.Textbox(label="Resultado del análisis")],
120
  title="Análisis de Manipulación de Imágenes",
121
- description="Sube una imagen para analizar posibles manipulaciones usando metadatos y ELA."
122
  )
123
 
124
  # Lanzar la interfaz
 
3
  import cv2
4
  import numpy as np
5
  from PIL import Image
6
+ from PIL.ExifTags import TAGS
 
 
7
  import os
8
  from datetime import datetime
9
  import tempfile
 
39
  print(f"Error al realizar ELA: {e}")
40
  return None
41
 
42
+ def analizar_manipulacion(imagen, ela_imagen):
43
  """
44
+ Analiza si la imagen ha sido manipulada usando ELA como referencia principal.
45
  """
46
  manipulada = False
47
  razones = []
48
 
49
+ # Validar análisis ELA
 
 
 
 
 
 
50
  if ela_imagen is None:
51
  razones.append("No se pudo realizar el análisis ELA.")
52
  else:
53
  promedio_ela = np.mean(ela_imagen)
54
+ if promedio_ela > 10: # Umbral basado en pruebas
55
  razones.append("El análisis ELA sugiere posibles alteraciones.")
56
  manipulada = True
57
+ else:
58
+ razones.append("El análisis ELA no sugiere alteraciones.")
59
 
 
 
 
60
  return manipulada, razones
61
 
62
  def procesar_imagen(archivo_imagen):
 
76
  Fecha de modificación: {fecha_modificacion}
77
  """
78
 
79
+ # Obtener metadatos (solo como referencia secundaria)
80
  metadatos = obtener_metadatos(imagen)
81
+
82
+ # Realizar ELA
83
  ela_imagen = realizar_ela(imagen)
84
+
85
+ # Analizar manipulación basado en ELA
86
+ manipulada, razones = analizar_manipulacion(imagen, ela_imagen)
87
+
88
+ # Agregar información sobre los metadatos
89
+ if metadatos:
90
+ razones.append("La imagen contiene metadatos EXIF.")
91
+ else:
92
+ razones.append("La imagen no tiene metadatos EXIF (esto no implica manipulación).")
93
 
94
  info_manipulacion = "\nAnálisis de manipulación:\n"
95
  if manipulada:
 
115
  return None, error_msg
116
 
117
  # Interfaz de GRADIO
118
+ import gradio as gr
119
+
120
  iface = gr.Interface(
121
  fn=procesar_imagen,
122
  inputs=gr.Image(type="filepath", label="Sube una imagen"),
123
  outputs=[gr.Image(label="Error Level Analysis (ELA)"), gr.Textbox(label="Resultado del análisis")],
124
  title="Análisis de Manipulación de Imágenes",
125
+ description="Sube una imagen para analizar posibles manipulaciones usando principalmente ELA."
126
  )
127
 
128
  # Lanzar la interfaz