La síntesis de texturas es el proceso de construir algorítmicamente una gran imagen digital a partir de una pequeña imagen de muestra digital aprovechando su contenido estructural. Es objeto de investigación en infografía y se utiliza en muchos campos, entre otros, la edición de imágenes digitales , la infografía 3D y la postproducción de películas .
La síntesis de texturas se puede utilizar para rellenar huecos en imágenes (como en pintura ), crear imágenes de fondo grandes no repetitivas y expandir imágenes pequeñas. [1]
Contraste con texturas procedimentales
Las texturas procedimentales son una técnica relacionada que puede sintetizar texturas desde cero sin material de origen. Por el contrario, la síntesis de texturas se refiere a técnicas en las que se hace coincidir o ampliar alguna imagen de origen.
Texturas
" Textura " es una palabra ambigua y en el contexto de la síntesis de texturas puede tener uno de los siguientes significados:
- En el habla común, la palabra "textura" se utiliza como sinónimo de "estructura de la superficie". La textura ha sido descrita por cinco propiedades diferentes en la psicología de la percepción : aspereza , contraste , direccionalidad , semejanza de línea y rugosidad [1] .
- En los gráficos por computadora en 3D , una textura es una imagen digital aplicada a la superficie de un modelo tridimensional mediante el mapeo de texturas para darle al modelo una apariencia más realista. A menudo, la imagen es una fotografía de una textura "real", como la veta de la madera .
- En el procesamiento de imágenes , cada imagen digital compuesta por elementos repetidos se denomina "textura".
La textura se puede organizar a lo largo de un espectro que va de regular a estocástico, conectado por una transición suave: [2]
- Texturas regulares. Estas texturas parecen patrones algo regulares. Un ejemplo de textura estructurada es un muro de piedra o un suelo de baldosas con adoquines.
- Texturas estocásticas. Las imágenes de texturas de texturas estocásticas parecen ruido : puntos de color que se encuentran dispersos aleatoriamente sobre la imagen, apenas especificados por los atributos brillo mínimo y máximo y color medio. Muchas texturas parecen texturas estocásticas cuando se ven desde la distancia. Un ejemplo de textura estocástica es el roughcast .
Objetivo
Los algoritmos de síntesis de texturas están destinados a crear una imagen de salida que cumpla con los siguientes requisitos:
- La salida debe tener el tamaño dado por el usuario.
- La salida debe ser lo más similar posible a la muestra.
- La salida no debe tener artefactos visibles como uniones, bloques y bordes mal ajustados.
- La salida no debe repetirse, es decir, las mismas estructuras en la imagen de salida no deben aparecer en varios lugares.
Como la mayoría de los algoritmos, la síntesis de texturas debería ser eficiente en el tiempo de cálculo y en el uso de la memoria.
Métodos
Se han investigado o desarrollado los siguientes métodos y algoritmos para la síntesis de texturas:
Embaldosado
La forma más sencilla de generar una imagen grande a partir de una imagen de muestra es colocarla en mosaico . Esto significa que varias copias de la muestra simplemente se copian y pegan una al lado de la otra. El resultado rara vez es satisfactorio. Excepto en casos raros, habrá costuras entre los mosaicos y la imagen será muy repetitiva.
Síntesis de textura estocástica
Los métodos de síntesis de textura estocástica producen una imagen eligiendo aleatoriamente valores de color para cada píxel, solo influenciados por parámetros básicos como brillo mínimo, color promedio o contraste máximo. Estos algoritmos funcionan bien solo con texturas estocásticas; de lo contrario, producen resultados completamente insatisfactorios, ya que ignoran cualquier tipo de estructura dentro de la imagen de muestra.
Síntesis de textura estructurada de un solo propósito
Los algoritmos de esa familia utilizan un procedimiento fijo para crear una imagen de salida, es decir, se limitan a un solo tipo de textura estructurada. Por lo tanto, estos algoritmos solo se pueden aplicar a texturas estructuradas y solo a texturas con una estructura muy similar. Por ejemplo, un algoritmo de propósito único podría producir imágenes de textura de muros de piedra de alta calidad; sin embargo, es muy poco probable que el algoritmo produzca un resultado viable si se le da una imagen de muestra que muestre guijarros.
Mosaico del caos
Este método, propuesto por el grupo de Microsoft para gráficos de Internet, es una versión refinada del mosaico y realiza los siguientes tres pasos:
- La imagen de salida se rellena completamente mediante mosaico. El resultado es una imagen repetitiva con costuras visibles.
- Las partes seleccionadas al azar de tamaño aleatorio de la muestra se copian y pegan al azar en la imagen de salida. El resultado es una imagen bastante no repetitiva con costuras visibles.
- La imagen de salida se filtra para suavizar los bordes.
El resultado es una imagen de textura aceptable, que no es demasiado repetitiva y no contiene demasiados artefactos. Aún así, este método no es satisfactorio porque el suavizado en el paso 3 hace que la imagen de salida parezca borrosa.
Síntesis de texturas basada en píxeles
Estos métodos, que utilizan campos de Markov, [3] muestreo no paramétrico, [4] cuantificación vectorial estructurada en árbol [5] y analogías de imágenes [6], son algunos de los algoritmos generales de síntesis de texturas más simples y exitosos. Por lo general, sintetizan una textura en el orden de la línea de exploración al encontrar y copiar píxeles con el vecindario local más similar a la textura sintética. Estos métodos son muy útiles para completar imágenes. Pueden estar limitados, como en las analogías de imágenes , para realizar muchas tareas interesantes. Por lo general, se aceleran con alguna forma de método del vecino más cercano aproximado, ya que la búsqueda exhaustiva del mejor píxel es algo lenta. La síntesis también se puede realizar en multirresolución, como mediante el uso de un campo aleatorio de Markov multiescala no causal y no paramétrico. [7]
Síntesis de textura basada en parches
La síntesis de textura a base de parche crea una nueva textura copiando y costura texturas juntos en diversos desplazamientos, similar al uso de la herramienta de clonación para sintetizar manualmente una textura. El acolchado de imágenes [8] y las texturas graphcut [9] son los algoritmos de síntesis de texturas basados en parches más conocidos. Estos algoritmos tienden a ser más efectivos y rápidos que los métodos de síntesis de texturas basados en píxeles.
Enfoques de aprendizaje profundo y redes neuronales
Más recientemente, se demostró que los métodos de aprendizaje profundo son un enfoque paramétrico poderoso, rápido y basado en datos para la síntesis de texturas. El trabajo de Leon Gatys [10] es un hito: él y sus coautores demostraron que los filtros de una red neuronal profunda entrenada discriminativamente pueden usarse como descriptores de imágenes paramétricos efectivos, lo que lleva a un método novedoso de síntesis de texturas.
Otro desarrollo reciente es el uso de modelos generativos para la síntesis de texturas. El método Spatial GAN [11] mostró por primera vez el uso de GAN totalmente sin supervisión para la síntesis de texturas. En un trabajo posterior, [12] el método se amplió aún más: PSGAN puede aprender imágenes periódicas y no periódicas de forma no supervisada a partir de imágenes individuales o grandes conjuntos de datos de imágenes. Además, el muestreo flexible en el espacio de ruido permite crear texturas novedosas con un tamaño de salida potencialmente infinito y una transición suave entre ellas. Esto hace que PSGAN sea único con respecto a los tipos de imágenes que puede crear un método de síntesis de texturas.
Implementaciones
Existen algunas implementaciones de síntesis de texturas como complementos para el editor de imágenes gratuito Gimp :
Una implementación de síntesis de texturas basada en píxeles:
Síntesis de textura basada en parches:
Síntesis de textura generativa profunda con PSGAN, implementada en Python con Lasagne + Theano:
Literatura
Varios de los artículos más antiguos y más referenciados en este campo incluyen:
- Popat en 1993 - "Nuevo modelo de probabilidad basado en conglomerados para síntesis, clasificación y compresión de texturas".
- Heeger-Bergen en 1995 - "Análisis / síntesis de texturas basado en pirámides".
- Paget-Longstaff en 1998 - "Síntesis de texturas a través de un campo aleatorio de Markov multiescala no causal y no paramétrico"
- Efros-Leung en 1999 - "Síntesis de texturas por muestreo no paramétrico".
- Wei-Levoy en 2000 - "Síntesis rápida de texturas mediante cuantificación vectorial estructurada en árbol"
aunque también hubo trabajos anteriores sobre el tema, como
- Gagalowicz y Song De Ma en 1986, "Síntesis basada en modelos de texturas naturales para escenas en 3-D",
- Lewis en 1984, "Síntesis de texturas para pintura digital".
(El último algoritmo tiene algunas similitudes con el enfoque del Mosaico del Caos).
El enfoque de muestreo no paramétrico de Efros-Leung es el primer enfoque que puede sintetizar fácilmente la mayoría de los tipos de textura, y ha inspirado literalmente cientos de artículos de seguimiento en gráficos por computadora. Desde entonces, el campo de la síntesis de texturas se ha expandido rápidamente con la introducción de tarjetas aceleradoras de gráficos 3D para computadoras personales. Sin embargo, resulta que Scott Draves publicó por primera vez la versión basada en parches de esta técnica junto con el código GPL en 1993, según Efros .
Ver también
- Síntesis granular , una técnica similar para audio en lugar de imágenes
- En pintura
- Tallado de costuras
- Textura procedimental
- Iniciacionismo
Referencias
- ^ "Curso SIGGRAPH 2007 sobre síntesis de texturas basada en ejemplos"
- ^ "Análisis y manipulación de texturas casi regulares". Yanxi Liu , Wen-Chieh Lin y James Hays. SIGGRAPH 2004
- ^ "Síntesis de textura a través de un campo aleatorio de Markov multiescala no causal y no paramétrico". Paget y Longstaff, IEEE Trans. sobre procesamiento de imágenes, 1998
- ^ "Síntesis de textura por muestreo no paramétrico". Efros y Leung, ICCV, 1999
- ^ "Síntesis de textura rápida mediante la cuantificación de vectores estructurados en árbol" Wei y Levoy SIGGRAPH 2000
- ^ "Analogías de imagen" Hertzmann et al. SIGGRAPH 2001.
- ^ "Síntesis de textura a través de un campo aleatorio de Markov multiescala no causal y no paramétrico". Paget y Longstaff, IEEE Trans. sobre procesamiento de imágenes, 1998
- ^ "Acolchado de imágenes". Efros y Freeman. SIGGRAPH 2001
- ^ "Texturas Graphcut: Síntesis de imagen y video mediante cortes de gráfico". Kwatra y col. SIGGRAPH 2003
- ↑ Gatys, Leon A .; Ecker, Alexander S .; Bethge, Matthias (27 de mayo de 2015). "Síntesis de texturas mediante redes neuronales convolucionales". arXiv : 1505.07376 [ cs.CV ].
- ^ Jetchev, Nikolay; Bergmann, Urs; Vollgraf, Roland (24 de noviembre de 2016). "Síntesis de texturas con redes adversas generativas espaciales". arXiv : 1611.08207 [ cs.CV ].
- ^ Bergmann, Urs; Jetchev, Nikolay; Vollgraf, Roland (18 de mayo de 2017). "Aprendizaje de los colectores de texturas con la GAN espacial periódica". arXiv : 1705.06566 [ cs.CV ].
enlaces externos
- síntesis de texturas
- síntesis de texturas
- síntesis de película de textura
- Textura2005
- Síntesis de textura casi regular
- El laboratorio de texturas
- Síntesis de textura no paramétrica
- Ejemplos de texturas de reacción-difusión.
- Implementación del algoritmo de Efros & Leung con ejemplos
- Síntesis de microtexturas por aleatorización de fases, con código y demostración en línea
- Implementación de la GAN espacial periódica para la síntesis de texturas