copy_move_forgery_detection
SKILL.md
copy_move_forgery_detection
Copy-Move Forgery Detection identifica regiones del documento copiadas y pegadas desde otra parte de la misma imagen, revelando manipulaciones como foto del titular pegada o número de documento clonado.
When to use
Aplicar junto con ELA como parte del pipeline de integridad del documento.
Instructions
- Instalar:
pip install opencv-contrib-python-headless(necesario para SIFT). - Implementar detección por SIFT keypoints:
import cv2, numpy as np def detect_copy_move(img, min_matches=10): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) sift = cv2.SIFT_create() keypoints, descriptors = sift.detectAndCompute(gray, None) if descriptors is None or len(keypoints) < min_matches: return {"copy_move_detected": False, "confidence": 0.0} bf = cv2.BFMatcher(cv2.NORM_L2) matches = bf.knnMatch(descriptors, descriptors, k=3) MIN_DIST_PIXELS = 50 suspicious = [] for m in matches: if len(m) >= 2: best, second = m[0], m[1] if best.queryIdx != best.trainIdx: pt1 = keypoints[best.queryIdx].pt pt2 = keypoints[best.trainIdx].pt dist = np.linalg.norm(np.array(pt1) - np.array(pt2)) if dist > MIN_DIST_PIXELS and best.distance < 0.75 * second.distance: suspicious.append((pt1, pt2)) detected = len(suspicious) >= min_matches confidence = min(len(suspicious) / (min_matches * 3), 1.0) return {"copy_move_detected": detected, "confidence": float(confidence)} - Umbral:
match_count >= 10conconfidence > 0.3→ flagCOPY_MOVE_DETECTED. - Combinar con ELA: si ambos detectan anomalías → alta confianza de manipulación.
Notes
- Documentos con hologramas o patrones repetitivos pueden dar falsos positivos; calibrar
min_matchespor tipo de documento. - ORB es más rápido pero menos preciso que SIFT.
Weekly Installs
8
Repository
davidcastagnetoa/skillsFirst Seen
12 days ago
Installed on
trae8
gemini-cli8
antigravity8
claude-code8
github-copilot8
codex8