No entiendo cómo se definen las frecuencias en imágenes / fotografías. Por lo que yo entiendo ahora, las frecuencias altas son como cosas nítidas en las imágenes, como bordes o algo así, y las frecuencias bajas son todo lo contrario.
También me gustaría entender el resultado de las transformaciones discretas de Fourier, como cómo leerlas correctamente.
Sería genial si alguien pudiera explicarme lo siguiente:
¿Qué son las frecuencias en las imágenes y cómo se definen?
¿Cómo se lee el resultado de una transformación discreta de Fourier?
terminology
image-processing
Jakob Abfalter
fuente
fuente
Respuestas:
Solo responderé la primera pregunta: ¿Qué son las frecuencias en las imágenes?
La Transformada de Fourier es una técnica matemática en la que se representa la misma información de imagen no para cada píxel por separado, sino para cada frecuencia. Piensa en ello de esta manera. El mar tiene olas, algunas de las cuales se mueven muy lentamente (como las mareas), otras son de tamaño mediano y otras son pequeñas como las ondas formadas por una ráfaga. Puedes pensar en ellas como tres olas separadas, pero en cada punto de la superficie del mar y en un momento en el tiempo, obtienes solo una altura de agua.
Lo mismo se aplica a las imágenes. Puedes pensar en la imagen compuesta de varias ondas o frecuencias. Para crear su imagen, comience con el color promedio (en realidad, pensar en imágenes en escala de grises es más fácil). Luego agregue olas de diferentes longitudes de onda y fuerza para construir lentamente detalles en la imagen.
Imagen de origen:
Primera frecuencia (promedio):
La segunda frecuencia a lo largo de la dimensión vertical es una onda que comienza en cero en la parte inferior de la imagen, subiendo, volviendo a cero a lo largo del horizonte centrado y cayendo por debajo de cero para finalmente convertirse en cero en la parte superior de la imagen. (Describí una serie de Fourier sin cambio de fase, pero la analogía aún se mantiene).
Aquí puede ver la segunda frecuencia a lo largo de la horizontal y vertical. Tenga en cuenta que puede distinguir dónde estará la montaña (oscura) y dónde estará el cielo y el lago (más clara).
Segunda frecuencia:
Cada onda o frecuencia adicional trae consigo más ondas y, como tal, más detalles. Para obtener diferentes imágenes, se puede cambiar la altura / amplitud de la onda, así como el punto de partida de la onda, también llamada Fase.
Tercera frecuencia:
Curiosamente, la cantidad de información es la misma en esta representación y uno puede ir y venir entre imágenes normales (dominio espacial) e imágenes transformadas de Fourier (dominio de frecuencia). En el dominio de la frecuencia necesitamos mantener información de todas las frecuencias junto con la información de amplitud y fase.
Aquí está utilizando el 50% de las frecuencias:
Hay variantes de todo esto, con distinciones que deben hacerse entre la Serie Fourier, Transformada de Fourier y Transformada de Fourier discreta y Transformada de coseno discreta (DCT).
Una aplicación interesante es el uso de algoritmos de compresión como JPEG. Aquí, el DCT se usa para guardar más partes importantes de la imagen (las frecuencias bajas) y menos de las frecuencias altas.
Escribí esto con la esperanza de que los lectores novatos puedan obtener una comprensión básica de la idea de las transformadas de Fourier. Por eso hice algunas simplificaciones que espero que los lectores más avanzados me perdonen.
Animado
El video generado por Thomas Devoogdt se puede ver en Vimeo .
Frecuencias en el posprocesamiento
Existen numerosos métodos que dependen de las frecuencias para el procesamiento posterior, principalmente porque nunca observamos píxeles individuales individualmente. Muchos algoritmos funcionan en frecuencia porque es más natural pensar en ellos de esta manera. ¡Pero también porque la Transformada de Fourier contiene la misma información que podemos expresar cualquier operación matemática (o paso de procesamiento posterior) en la frecuencia y los dominios espaciales! A veces, la descripción en píxeles es mejor, pero a menudo la descripción de frecuencia es mejor. (Mejor significa principalmente más rápido en este contexto).
Una técnica que me gustaría señalar sin ninguna razón en particular, excepto que son los artistas que trabajan directamente con las frecuencias y es la * separación de frecuencias *. No voy a describirlo, pero puedes ver cómo funciona en YouTube para Photoshop y GIMP.
Crea dos capas, una con las frecuencias bajas y otra con las frecuencias altas. Para los retratos, puede suavizar la piel en las frecuencias altas sin afectar los tonos de la piel en las frecuencias bajas.
Código
Este es un código para generar los ejemplos anteriores. Se puede ejecutar como un simple programa de Python.
fuente
Trataré de explicar con los términos matemáticos más simples posibles. Si quieres saltarte las matemáticas, salta a la parte II, si quieres obtener la respuesta corta salta a la Parte III
Parte 1
La frecuencia de una señal significa el número de ocurrencias de un evento repetitivo por unidad de tiempo. Entonces, si la unidad de tiempo es segundos, la frecuencia se mide con Herz: 1Hz = 1 / s. Entonces, una señal con 100Hz tiene un patrón que se repite 100 veces por segundo.
La señal más básica (desde el punto de vista del procesamiento de señales) es una señal sinusal.
y (t) = sin (2πft)
donde f es la frecuencia de esta señal sinusal yt es el tiempo. Si esta señal era sólida y f era de alrededor de 50 Hz, escuchará un tono de graves muy bajo. con una frecuencia más alta como 15kHz será un tono más alto.
Ahora, para generalizar el concepto, la señal podría ser una señal espacial, en lugar de una señal temporal ... como si dibujara la onda sinusal en un trozo de papel, con un eje llamado x apuntando hacia la derecha, y el eje y perpendicular al eje x.
y (x) = sin (2πfx)
donde f es la frecuencia de la señal yx es la variable espacial. f aquí ya no se mide con 1 / s, sino con 1 / (unidad de espacio).
Fourier, un matemático francés, demostró que puede generar cualquier señal agregando una serie de señales seno y coseno con diferentes amplitudes y frecuencias. Eso se llama Análisis de Fourier.
Usando el análisis de Fourier es posible escribir cualquier función y (x) como una suma de señales seno y coseno con diferentes frecuencias, por lo que una función y (x) puede reescribirse en términos de varias funciones relacionadas con la frecuencia Y (f). Se puede decir que y (x) = Some_Function (Y (f)). o Y (f) = Reverse_of_Some_Function (y (x))
La transformación de Fourier es la función F que transforma una señal del dominio x al dominio de frecuencia.
F es una función analógica, la transformación discreta de Fourier DFT es la aproximación numérica de F. La transformación rápida de Fourier FFT es una forma de hacer DFT optimizado para la velocidad.
Okay...
Parte II
Ahora las imágenes de computadora están compuestas de píxeles, y cada píxel tiene un valor de intensidad para los valores Rojo, Verde, Azul, también conocido como RGB. En imágenes en escala de grises, la intensidad para R, G, B de cualquier píxel es igual, R = G = B = I, por lo que podemos hablar de I para imágenes en escala de grises.
La imagen en escala de grises de 800px X 100px a continuación se generó usando I (x) = sin (2πfx) donde f = 1 repetición / 800px = 0.00125 repetición / px
Puede generarlo usted mismo con Python3
La imagen de escala de grises 800px X 100px a continuación se generó usando I (x) = sin (2πfx) donde f = 10repeticiones / 800px = 0.0125 repeticiones / px
Ahora es fácil ver que esta imagen tiene una frecuencia horizontal de 10. Aumentemos la frecuencia en un factor de 10, de modo que n = 100. f = 100/800 = 1/8 = 0.125 repeticiones / px:
Como se mencionó anteriormente, puede representar cualquier señal (imagen en escala de grises 1D) como una serie de suma de señales sinusoidales (imágenes sinusoidales en escala de grises 1D) con diferentes frecuencias.
Parte III
Entonces, una imagen 1D en escala de grises A tiene frecuencias más altas que otra imagen B en escala de grises si A tiene detalles "más finos".
Puede generalizar ese principio a imágenes coloreadas en 2D e incluso en 3D. Cuanto más finos sean los "detalles" de una imagen, mayor será el contenido de frecuencia de esa imagen.
Entonces, un cielo azul es de baja frecuencia en comparación con la imagen de una flor.
Puede obtener más información al respecto leyendo sobre Análisis de Fourier y sobre Procesamiento de imagen digital.
fuente
Brevemente, la frecuencia se refiere a la tasa de cambio. Más precisamente, la frecuencia es la inversa del período del cambio, es decir, la cantidad de tiempo que lleva pasar de un brillo (o lo que sea) a un brillo diferente y viceversa. Cuanto más rápido cambie (por ejemplo, de claro a oscuro), mayor será la "frecuencia" visual requerida para representar esa parte de la imagen.
En otras palabras, puede pensar en la frecuencia en una imagen como la tasa de cambio. Las partes de la imagen que cambian rápidamente de un color a otro (por ejemplo, bordes afilados) contienen frecuencias altas, y las partes que cambian gradualmente (por ejemplo, superficies grandes con colores sólidos) contienen solo frecuencias bajas.
Cuando hablamos de DCT y FFT y otras transformaciones similares, generalmente las hacemos en una parte de una imagen (por ejemplo, para compresión JPEG, detección de bordes, etc.). Tiene más sentido hablar sobre las transformaciones, entonces, en el contexto de un bloque de transformación de un tamaño dado.
Imagine, si lo desea, un bloque de datos de imagen de 32 píxeles x 32 píxeles. (Este número es arbitrario). Suponga que la imagen es un gradiente simple que es blanco en el lado izquierdo, negro en el medio y blanco en el lado derecho. Diríamos que esta señal tiene un período que es aproximadamente una longitud de onda por cada 32 píxeles de ancho, porque pasa por un ciclo completo de blanco a negro a blanco nuevamente cada 32 píxeles.
Podríamos llamar arbitrariamente a esta frecuencia "1" - 1 ciclo por 32 píxeles, es decir. Recuerdo vagamente que esto se llama comúnmente θ en los libros de texto de transformación, o tal vez θ / 2, pero podría estar recordando mal. De cualquier manera, lo llamaremos 1 por ahora, porque esto es verdaderamente arbitrario en un sentido absoluto; lo que importa es la relación entre frecuencias en un sentido relativo. :-)
Suponga que tiene una segunda imagen que es blanca en un borde, luego se desvaneció el doble de rápido para pasar del blanco al negro, al blanco, al negro y al blanco nuevamente en el otro borde. Entonces llamaríamos a esa frecuencia "2" porque cambia el doble de veces en el ancho de ese bloque de 32 píxeles.
Si quisiéramos reproducir esas imágenes simples, literalmente podríamos decir que cada fila consiste en una señal con una frecuencia de 1 o 2, y usted sabría cómo son las imágenes. Si las imágenes pasaron del negro al 50% de gris, podría hacer lo mismo, pero tendría que decir que tenían una frecuencia de 1 o 2 a una intensidad del 50%.
Las imágenes del mundo real, por supuesto, no son solo un simple gradiente. La imagen cambia con frecuencia y no periódicamente a medida que escanea de izquierda a derecha. Sin embargo, dentro de un bloque lo suficientemente pequeño (por ejemplo, 8 píxeles, 16 píxeles) puede aproximar esa fila de píxeles como la suma de una serie de señales, comenzando con el promedio de los valores de píxeles en la fila, seguido de la cantidad de " señal de frecuencia 0.5 "(negra en un lado, desvaneciéndose a blanco) para mezclar (o con una cantidad negativa, la cantidad de esa señal para restar), seguida de la cantidad de frecuencia 1, frecuencia 2, frecuencia 4, y así sucesivamente .
Ahora una imagen es única porque tiene frecuencia en ambas direcciones; puede volverse más claro y más oscuro cuando se mueve tanto horizontal como verticalmente. Por esta razón, usamos transformaciones 2D DCT o FFT en lugar de 1D. Pero el principio sigue siendo básicamente el mismo. Puede representar con precisión una imagen de 8x8 con una cuadrícula de 8x8 de cubos de tamaño similar.
Las imágenes también son más complejas debido a los colores, pero lo ignoraremos por ahora, y supondremos que solo estamos viendo una sola imagen en escala de grises como se podría ver mirando el canal rojo de una fotografía de forma aislada.
En cuanto a cómo leer los resultados de una transformación, eso depende de si está viendo una transformación 1D o una transformación 2D. Para una transformación 1D, tiene una serie de contenedores. El primero es el promedio de todos los valores de entrada. El segundo es la cantidad de la señal de frecuencia 1 para agregar, el tercero es la cantidad de la señal de frecuencia 2 para agregar, etc.
Para una transformación 2D, tiene una cuadrícula de valores n x n . La parte superior izquierda es típicamente ese promedio, y a medida que avanza en dirección horizontal, cada segmento contiene la cantidad de señal para mezclar con una frecuencia horizontal de 1, 2, 4, etc. y a medida que avanza en dirección vertical, es la cantidad de señal para mezclar con una frecuencia vertical de 1, 2, 4, etc.
Esa es, por supuesto, la historia completa si estás hablando de un DCT; por el contrario, cada contenedor para una FFT contiene partes reales e imaginarias. El FFT todavía se basa en la misma idea básica (más o menos), excepto que la forma en que las frecuencias se asignan a los contenedores es diferente y las matemáticas son más complicadas. :-)
Por supuesto, la razón más común para generar este tipo de transformaciones es ir un paso más allá y descartar algunos de los datos. Por ejemplo, el DCT se usa en compresión JPEG. Al leer los valores en un patrón de zig-zag que comienza con la esquina superior izquierda (el promedio) y se mueve hacia la esquina inferior derecha, los datos más importantes (la información de frecuencia media y baja) se registran primero, seguidos de los datos de frecuencia progresivamente más alta. En algún momento, básicamente dices "esto es lo suficientemente bueno" y descartas los datos de mayor frecuencia. Esto esencialmente suaviza la imagen al desechar sus detalles finos, pero aún le da aproximadamente la imagen correcta.
Y IIRC, las FFT también se utilizan a veces para la detección de bordes, donde se descartan todos los componentes, excepto los de alta frecuencia, como un medio de detectar las áreas de alto contraste en los bordes afilados.
National Instruments tiene un buen artículo que explica esto con imágenes. :-)
fuente
Imagine escanear la imagen línea por línea con una fotocélula y enviar los resultados a un trazador (estas máquinas planas que producen ondas negras en el papel), un osciloscopio (estas cajas que producen ondas verdes parpadeantes en una pantalla) o un analizador de espectro (cajas más grandes que hacer cercas verdes o multicolores). O incluso un altavoz. Cuanto más finas sean las estructuras en una imagen, más altas serán las frecuencias (el tono en el altavoz) de la señal mostrada / escuchada. Cuanto más contraste haya en las estructuras finas, mayor será la amplitud de las partes de alta frecuencia de la señal.
fuente