Un gato en la dimensión espejo
(substack.com/lcamtuf)- A simple vista parece una foto de una mujer, pero es un experimento en el que, al aplicar DCT a la imagen, aparece un gato oculto en el dominio de la frecuencia
- Los dominios temporal·espacial y el dominio de la frecuencia están conectados mediante transformaciones reversibles, por lo que una misma imagen puede interpretarse de distintas maneras
- Si se compone con baja opacidad un patrón de “ruido” obtenido al convertir la foto de un gato con DCT, la imagen original se mantiene, pero la forma del gato queda en el resultado de la transformación
- En la imagen compuesta, la información del gato permanece incluso después de redimensionarla; pero al ampliarla se repite como mosaico, y al reducirla se recorta
- Al bajar la calidad JPEG, especialmente los componentes de alta frecuencia se cuantizan con fuerza, lo que permite ver a simple vista cuánta información descarta la compresión con pérdida
Experimento de “dimensión espejo” creado con DCT
- El dominio de la frecuencia es una forma de interpretar señales cotidianas convirtiéndolas en amplitudes de las ondas que las componen
- La base más común son las ondas sinusoidales con frecuencia creciente
- También pueden usarse otras formas de onda para crear dominios de frecuencia alternativos
- Esta transformación tiene dos propiedades
- Reversibilidad, que permite volver a los datos originales del dominio temporal o espacial
- Simetría de entrada/salida, que permite realizar la transformación en ambos sentidos con la misma operación matemática
- En compresión, esta distinción es importante
- Después de convertir una imagen al dominio de la frecuencia, aunque se reduzca la precisión de los componentes de alta frecuencia o se los elimine, la imagen resultante puede verse perceptualmente similar
- En esa misma medida, se reduce la cantidad de datos que hay que transmitir o almacenar
Proceso para ocultar un gato en el dominio de la frecuencia
- Comienza convirtiendo la foto de un gato a una forma en el dominio de la frecuencia mediante la transformada discreta del coseno (DCT)
- Sobre la foto de una mujer del ejemplo anterior, se compone con baja opacidad el patrón de “ruido de gato” del dominio de la frecuencia
- La composición implica pérdida
- El resultado esperado era que la foto de la mujer se descompusiera en la DCT como ruido relativamente uniforme, y que el ruido de gato insertado volviera a agruparse en una imagen de gato
- En efecto, al aplicar DCT a la imagen compuesta, aparece la forma del gato
- Hay una imagen compuesta y un ejemplo en MATLAB para comprobarlo directamente
- woman-with-cat.png
- Calcula la DCT con
dct2(woman)y muestra el resultado suavizado conimgaussfilt(cat, 1)
- El gato permanece incluso después de redimensionar
- Al ampliar, la imagen se repite como mosaico
- Al reducir, la imagen se recorta
- Si se baja la configuración de calidad JPEG, la información del gato se degrada
- Con calidad JPEG alta, la imagen se ve bastante bien
- Con calidad baja, el cuadrante inferior derecho, correspondiente a los componentes de alta frecuencia, queda fuertemente cuantizado
- Esta visualización muestra que el algoritmo JPEG destruye mucha información de maneras que no percibimos con facilidad
- Hay antecedentes, como casos en los que se insertan mensajes ocultos en espectrogramas de audio o discusiones sobre esteganografía de texto sobre coeficientes DCT de JPEG
- Más que en la utilidad práctica o la completa novedad de esta técnica, el foco está en cómo se combinan de forma interesante el dominio de la frecuencia y el dominio temporal
- Como bonus, hay un video de la degradación de un gato “independiente” en el dominio de la frecuencia según la configuración de calidad JPEG: https://vimeo.com/940487310/8a929a5eb5
1 comentarios
Opiniones en Hacker News
En la mayoría de las fotos con un sujeto reconocible, como aquí, la energía espectral se concentra alrededor del origen, es decir, cerca de la esquina superior izquierda.
https://substackcdn.com/image/fetch/f_auto,q_auto:good,fl_pr...
Lo mismo pasa con la DCT de la imagen de la mujer. En cambio, el sujeto de una foto normalmente está ubicado más hacia el centro del encuadre. Por eso, en la imagen compuesta, los datos del dominio espacial y los del dominio de frecuencia interfieren menos entre sí, y al aplicar la transformada inversa se conserva la expresión del gato.
https://substackcdn.com/image/fetch/w_1456,c_limit,f_webp,q_...
Con la imagen de la mujer aplica el mismo principio, pero a la inversa.
Quiero confirmar si entiendo bien el proceso: a) se toman una foto de una mujer y una de un gato, b) se transforma el gato al dominio de frecuencia con DCT, c) se compone el gato en el dominio de frecuencia sobre la imagen visual de la mujer, d) al aplicar DCT a la imagen compuesta, vuelve a aparecer el gato.
Más precisamente, parece que el resultado es una composición de un gato visual y una mujer en el dominio de frecuencia, pero el gato visual destaca más.
Por lo que recuerdo de un proyecto estudiantil de hace mucho, esta técnica es la base del watermarking digital robusto, aplicable a cualquier señal, ya sea imagen o audio.
El uso principal es detectar material con copyright incluso después de que la señal haya sido muy procesada. Por ejemplo, películas ripeadas o grabadas con videocámara, o material distribuido en JPEG-2000.
Me gustaría escuchar a alguien de la industria del cine que pueda dar más detalles técnicos.
Creo que era Digimarc; me pregunto si era un algoritmo basado en la transformada de Fourier.
Es un muy buen ejemplo de la dualidad tiempo-frecuencia de la transformada de Fourier; en este caso, dualidad espacio-frecuencia.
La matemática de la transformada de Fourier no se preocupa por la “dirección” en la que se quiere transformar, así que una función que se ve similar en tiempo/frecuencia tendrá una transformada de Fourier similar en el espacio frecuencia/tiempo.
En este caso, si insertas el gráfico de frecuencias del gato en el gráfico espacial de la mujer, el gato aparece en la transformada de Fourier de la imagen de la mujer, y viceversa.
Una aplicación muy genial e interesante de esteganografía.
Si quisieras ocultar imágenes ilegales dentro de una imagen común, podrías transformarlas al dominio de frecuencia y componerlas con otra imagen. Si el receptor sabe cómo revertir el proceso, se convierte en una forma encubierta de transmitir imágenes que podría ser difícil de detectar.
Sería difícil de detectar si la otra parte no sabe qué buscar, pero si lo sabe, debería ser fácil.
Si combinas la imagen oculta con un one-time pad, ¿no debería ser indistinguible del ruido? Además, en imágenes con compresión con pérdida es natural esperar ruido. Me pregunto si alguien ya lo hizo; y si no lo cuentan, probablemente nunca lo sabremos.
Aphex Twin y otros usaron un truco divertido parecido para hacer que apareciera una cara extraña en el espectrograma de audio de una pista: https://news.ycombinator.com/item?id=8509105
MetaSynth existe desde fines de los 90 y convierte entre muestras de audio en el dominio temporal e imágenes en el dominio de frecuencia, combinándolo con filtros de imagen al estilo Photoshop.
https://uisoftware.com/metasynth/
El artículo se pone cada vez mejor hasta el final.
Me cuesta creer que recién ahora me haya dado cuenta de que el dominio de frecuencia se puede usar para compresión de imágenes. Una vez que lo ves, es demasiado obvio. ¿La mayoría de los algoritmos de compresión de imágenes funcionan así? ¿Simplemente eliminan las partes más débiles en el dominio de frecuencia?
Sí. MP3, Ogg-Vorbis y JPEG funcionan todos de esa manera.
Elegir los pesos de qué frecuencias conservar probablemente se basa en modelos psicoacústicos, pero, dicho de forma aproximada, literalmente se descarta información de frecuencias altas.
La DCT también se usa a menudo como subpaso en algoritmos más complejos de compresión de imágenes o video.
Por ejemplo, primero se identifican ciertas regiones de una imagen con mucho detalle, se les aplica DCT para conservar más del espectro, y luego se hace lo mismo con otras regiones, conservando más o menos espectro. El parámetro de cuantización que habrás visto en algoritmos de compresión de video afecta justamente este comportamiento.
Normalmente no se eliminan por completo las frecuencias altas, sino que se codifican con menos bits.
Las imágenes no tienen limitación de banda en sentido estricto, así que no pueden representarse perfectamente solo con el dominio de frecuencia.
Por eso se usa un compromiso: dividirlas en bloques pequeños y codificarlas mezclando el dominio de frecuencia con predictores del dominio espacial. Aun así, la idea central es básicamente correcta.
La mayoría de los problemas vienen de los bordes abruptos. Para representarlos se necesitan infinitas frecuencias, así que si quitas algunas aparecen artefactos de desenfoque o ringing.
Otra razón es que una señal limitada en banda se repite infinitamente, pero las imágenes reales no. Lo que está a la izquierda de una foto no necesariamente predice qué habrá a la derecha.
Hay más factores. No se trata solo de descartar frecuencias; también es importante que los datos con poca varianza se pueden codificar de manera más eficiente.
No es solo que la información de alta frecuencia sea ruido: en general, su magnitud también es menor.
JPEG 2000 es más raro. Usa una transformada wavelet.
Si cortas un archivo JPEG 2000 por la mitad, puedes recuperar una imagen de menor resolución. Por debajo de cierta longitud de archivo, la información de color desaparece y la imagen pasa a escala de grises.
Si el gato hubiera estado más concentrado en la esquina superior izquierda, creo que esta demo no habría funcionado tan bien.
En DCT se generan muchos componentes de baja frecuencia de gran magnitud, y si el gato está cerca de la esquina superior izquierda, esos componentes terminarían cubriéndolo.
En la representación cuántica de posición y frecuencia —o, considerando hbar, de posición y momento— no se pueden meter a la fuerza dos funciones distintas en una sola de esta manera.
Eso se debe a que incluso las funciones que solo difieren en una fase dependiente de la posición son estados cuánticos distintos.