PhotoDNA o la creación de una firma más fiable para imagenes.

En algunos artículos informativos últimamente (Google denuncia a uno de sus usuarios al detectar imágenes comprometidas), podemos llegar a encontrar referencias a este software que ya donó Microsoft en 2.009, en la lucha contra el intercambio de imágenes pedófilas.

Hoy no quiero hablar de sus usos actuales, o las empresas que la utilizan, entre ellas el propio Microsoft "photodna.dll" (en sistemas operativos, aplicaciones, y almacenamiento en nube), Google (en correo, y almacenamiento en nube), Facebook (en compartición de archivos audiovisuales), o aplicaciones de análisis de datos para investigaciones policiales tales cómo Analyze DI de NetClean, sino que voy a tratar de analizar la poca información que existe sobre su funcionamiento.

Ya en mucha ocasiones hemos hablado de la firma de un archivo digital, y sus posibles soluciones, para aplicar esa tecnología a la información contenida en un soporte visual (imagen o video).

Y es así, dado que tengo un especial interés en todo lo que tiene que ver con la gestión de ese tipo de ficheros, así cómo su aplicación en búsquedas de similitudes o replicas alteradas a nivel local.

Bueno, pues los chicos de Microsoft han realizado una modificación del sistema SURF de análisis visual para crear un generador de firmas digitales rápido con la denominación PhotoDNA. Este proceso permite crear una firma documental del contenido de una imagen o un archivo de video, de tal forma que podemos gestionar una base de datos visual, y por lo tanto, realizar búsquedas rápidas para la identificación de contenido.

Por lo leído, el método no deja de ser, vamos a decir, sencillo:

Primer paso, redimensionamiento de la imagen a un tamaño de igual dimensión horizontal que vertical. Del tamaño referencia no se da información alguna, pero seguramente se almacenes firmas a diferentes grupos de reducción (320x320), (480x480), etc. Mi experiencia, me hace creer que con una doble identificación (256x256)RD, y (512x512)HD, es suficiente para tener un buen resultado en el cálculo de la firma. Esta fase evita deformaciones o reescalados de la imagen original.
Segundo paso, y siempre siguiendo la documentación, se trataría de convertir la imagen a una escala de grises. Mi opinión es que su implementación es opcional, dependiendo de la rapidez de cálculo necesaria, y el tamaño resultante de la firma a comparar. Esta fase, si evita diferencias entre imágenes en Color y BN.
Tercer Paso, seccionado, o compartimentado, de la imagen en grupos (nxn) más pequeños. Un compartimentado de 256 grupos (16 filas por 16 columnas) es bastante correcto. El objetivo de este compartimentado es lo denominaremos letrado de la firma, y nos permite reducir tiempo de búsqueda por alteración de imagen, al reconocer la imagen por parte de su firma (evita rotación, variación de saturaciones, etc).
Cuarto Paso, cálculo del gradiente por sección, no me queda claro si finalmente resulta un histograma bidimensional, o se obtiene únicamente una serie numérica (aquí pido la ayuda de gente de mayor nivel que el mío para que aporte sus comentarios o conocimientos), en cualquier caso, al utilizar está técnica se realiza lo que comúnmente se denomina un estudio de color. No importa tanto el color cómo la cantidad del mismo.

Ahora, ¿cómo reconocer una imagen en una búsqueda?, calculando una adición total de la información numérica, localizando valores muy próximos en las firmas de la base de datos, y finalmente, afinando con una comparación aleatoria de gradientes por sectores (teniendo en cuenta las cuatro posibles rotaciones), tendríamos un alta posibilidad de acierto incluso entre imágenes de distintos formatos de almacenamiento (cómo en la siguiente ejemplo), pero no nos engañemos, siempre sería necesaria una confirmación visual humana en último término.



Ahora el último paso sería, si una amable persona me facilitase la documentación de la dll a la que hago referencia para poder hacer mis pruebas, me comprometo a estudiarla, e incluso probarla. En cualquier caso ya que existe, y es de Microsoft, ...
... ¿por qué no implementa una búsqueda de imágenes en el SO, y me ahorra el trabajo?.

Comentarios

Entradas populares