{"id":912,"date":"2021-02-20T12:26:17","date_gmt":"2021-02-20T18:26:17","guid":{"rendered":"http:\/\/ofeliayorquesta.com\/blog\/?p=912"},"modified":"2021-05-14T12:25:56","modified_gmt":"2021-05-14T18:25:56","slug":"sintesis-de-textura","status":"publish","type":"post","link":"http:\/\/ofeliayorquesta.com\/blog\/2021\/02\/20\/sintesis-de-textura\/","title":{"rendered":"S\u00edntesis de Textura"},"content":{"rendered":"<p class=\"p1\">La s\u00edntesis de textura, como procedimiento algor\u00edtmico no tiene nada de art\u00edstico;<span class=\"Apple-converted-space\">\u00a0 <\/span>aunque una exploraci\u00f3n en el tema pudiera llevarnos a controlar mejor el aspecto de obras visuales que la utilicen. Existen diversos m\u00e9todos para efectuar s\u00edntesis de textura: por cortes m\u00ednimos, teselaciones de Wang, o redes neuronales, entre otras posibilidades.<\/p>\n<p class=\"p1\">El problema de s\u00edntesis de textura consiste en que, a partir de la muestra peque\u00f1a de una textura, se pueda crear un tapiz m\u00e1s grande con \u00e9sta, que se perciba como la misma textura de la que provino. En la creaci\u00f3n de videojuegos es com\u00fan querer pintar un cielo, o una regi\u00f3n de pasto, o tal vez aplicar un aspecto de mosaicos a un castillo, y una manera eficiente para realizar esta tarea sin saturar el procesamiento computacional, ser\u00eda que, cada uno de esos tapices estuviera generado por una imagen muy peque\u00f1a. De aqu\u00ed que sea \u00fatil desarrollar un algoritmo de s\u00edntesis de textura.<\/p>\n<p class=\"p1\">La texturizaci\u00f3n de geometr\u00eda conforma s\u00f3lo un sub sistema en un programa como Blender; sin embargo, la s\u00edntesis de textura tambi\u00e9n tiene diversas aplicaciones fuera del modelado 3D. Se pudiera pensar en usar una misma textura para unir varias aplicaciones o porciones de videos (o de im\u00e1genes, o entornos virtuales), conformando una pieza visual, donde esa misma textura estuviera presente desde varias perspectivas distintas.<\/p>\n<p class=\"p1\">Desglosar\u00e9 algunas maneras de emplear y pensar la s\u00edntesis de textura y la transferencia de estilo.<\/p>\n<p class=\"p1\"><strong>Texturas y Teselaciones<\/strong><\/p>\n<p class=\"p1\">Esta secci\u00f3n intentar\u00e1 establecer una relaci\u00f3n entre los conceptos de textura y teselaci\u00f3n.<\/p>\n<p class=\"p1\">Una teselaci\u00f3n (o embaldosado) en el plano $\\mathcal{T}$<span class=\"Apple-converted-space\">\u00a0<\/span>es una familia numerable de conjuntos cerrados $$\\mathcal{T} = \\{T_1, T_2, \\ldots\\}$$que cubren al plano, que no se sobrelapan unos con otros y no dejan huecos. M\u00e1s formalmente, se cumplen dos condiciones:<span class=\"Apple-converted-space\">\u00a0$$\\mathcal{T} = T_1\\cup T_2\\cup \\ldots \\text{,}$$\u00a0<\/span>lo que significa que la uni\u00f3n de todas las teselas (o baldosas) debe ser todo el plano euclidiano, e $$int(T_i)\\cap int(T_j) = \\emptyset$$para<span class=\"Apple-converted-space\">\u00a0$i \\neq j$<\/span>. Es decir, los puntos interiores de los conjuntos $T_i$<span class=\"Apple-converted-space\">\u00a0<\/span>son disjuntos dos a dos. <sup class='footnote'><a href='#marker-912-1' id='markerref-912-1' onclick='return footnotation_show(912)'>1<\/a><\/sup><\/p>\n<p class=\"p1\">En la siguiente imagen (figura 1), cada \u201cave\u201d representa una tesela<span class=\"Apple-converted-space\">\u00a0$T_i$\u00a0<\/span>, seg\u00fan la definici\u00f3n. Si cont\u00e1ramos con una infinidad de ellas, sin duda se cubrir\u00eda el plano.<\/p>\n<figure id=\"attachment_922\" aria-describedby=\"caption-attachment-922\" style=\"width: 256px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-922 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds.png\" alt=\"\" width=\"256\" height=\"256\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds.png 256w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds-150x150.png 150w\" sizes=\"auto, (max-width: 256px) 100vw, 256px\" \/><\/a><figcaption id=\"caption-attachment-922\" class=\"wp-caption-text\">Figura 1: Teselaci\u00f3n Escher<\/figcaption><\/figure>\n<p class=\"p1\">Y m\u00e1s a\u00fan, decimos que la teselaci\u00f3n es \u201cperi\u00f3dica, con centros de simetr\u00eda de \u00f3rdenes 6, 3 y 2\u201d (haciendo referencia al \u201cgrupo 632\u201d). <sup class='footnote'><a href='#marker-912-2' id='markerref-912-2' onclick='return footnotation_show(912)'>2<\/a><\/sup><\/p>\n<p class=\"p1\">Peri\u00f3dico quiere decir, que al trasladar los centros de simetr\u00eda hacia otros centros de simetr\u00eda, la figura queda invariante (es decir, parece que no hubo un movimiento de imagen despu\u00e9s de la traslaci\u00f3n).<\/p>\n<p class=\"p1\">Hay tres centros de simetr\u00eda para esta ilustraci\u00f3n, que son: a) los puntos en donde se juntan las colas de 3 p\u00e1jaros con las alas de otras 3 aves, y donde se puede rotar 60\u00ba y 180\u00ba, dejando invariante la teselaci\u00f3n; b) los puntos donde se juntan \u00fanicamente las alas derechas de 6 p\u00e1jaros, y donde se puede rotar 120\u00ba sobre este centro, dejando la figura igual, salvo por que se intercambien algunos colores.<\/p>\n<p class=\"p1\">En el contexto de la s\u00edntesis de textura, es posible considerar la imagen descrita (Figura 1) como una <i>textura estructurada <\/i>y hacer el experimento de tomar esta muestra como la imagen de entrada en un algoritmo de s\u00edntesis de textura, buscando obtener un tapiz m\u00e1s amplio, que preserve la \u201cconfiguraci\u00f3n de aves.\u201d<\/p>\n<p class=\"p1\">De los resultados experimentales, corroboramos que esto no es lo que realmente ocurre (ver figuras 2 y 3). Para el algoritmo de s\u00edntesis de textura de Kwatra el al. algunas aves quedan recortadas (figura 2), y especialmente en el modelo de Gatys, las teselas ya no tienen forma de aves (figura 3). <sup class='footnote'><a href='#marker-912-3' id='markerref-912-3' onclick='return footnotation_show(912)'>3<\/a><\/sup> Ya no se puede decir que la imagen obtenida es un embaldosado peri\u00f3dico, a diferencia de la ilustraci\u00f3n original, que s\u00ed lo era. De donde podemos concluir que el modelo de Gatys no sirve muy bien para emular texturas estructuradas.<\/p>\n<figure id=\"attachment_928\" aria-describedby=\"caption-attachment-928\" style=\"width: 300px\" class=\"wp-caption alignright\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds_02.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-928 size-medium\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds_02-300x194.jpg\" alt=\"\" width=\"300\" height=\"194\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds_02-300x194.jpg 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds_02-768x498.jpg 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds_02-1024x664.jpg 1024w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/birds_02.jpg 1990w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-928\" class=\"wp-caption-text\">Figura 2: S\u00edntesis de textura por cortes m\u00ednimos.<\/figcaption><\/figure>\n<p class=\"p1\">Sin embargo, el mismo modelo s\u00ed permite realizar s\u00edntesis de textura a varias escalas, agrandando o achicando las figuras de la imagen de entrada (figura 4).<\/p>\n<p class=\"p1\">Luego del an\u00e1lisis anterior, plantearemos cuatro preguntas, y que se intentar\u00e1n responder:<\/p>\n<figure id=\"attachment_927\" aria-describedby=\"caption-attachment-927\" style=\"width: 300px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-927 size-medium\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-300x194.png\" alt=\"\" width=\"300\" height=\"194\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-300x194.png 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-768x498.png 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-1024x664.png 1024w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png 1990w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption id=\"caption-attachment-927\" class=\"wp-caption-text\">Figura 3: S\u00edntesis de textura por redes neuronales convolucionales.<\/figcaption><\/figure>\n<ol class=\"ol1\">\n<li class=\"li1\">\u00bfEs una teselaci\u00f3n una textura?<sup class='footnote'><a href='#marker-912-4' id='markerref-912-4' onclick='return footnotation_show(912)'>4<\/a><\/sup><\/li>\n<li class=\"li1\">\u00bfEs una textura una teselaci\u00f3n?<sup class='footnote'><a href='#marker-912-5' id='markerref-912-5' onclick='return footnotation_show(912)'>5<\/a><\/sup><\/li>\n<li class=\"li1\">\u00bfEste punto de vista ayudar\u00eda a desarrollar un mejor algoritmo de s\u00edntesis de textura?<\/li>\n<li class=\"li1\">\u00bfEl concepto de teselaci\u00f3n ya figura de alg\u00fan modo en la implementaci\u00f3n de alguno de los algoritmos de s\u00edntesis de textura estudiados?<span class=\"Apple-converted-space\">\u00a0 \u00a0<\/span><\/li>\n<\/ol>\n<figure id=\"attachment_936\" aria-describedby=\"caption-attachment-936\" style=\"width: 1195px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/6style_weights.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-936 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/6style_weights.jpg\" alt=\"\" width=\"1195\" height=\"645\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/6style_weights.jpg 1195w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/6style_weights-300x162.jpg 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/6style_weights-768x415.jpg 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/6style_weights-1024x553.jpg 1024w\" sizes=\"auto, (max-width: 1195px) 100vw, 1195px\" \/><\/a><figcaption id=\"caption-attachment-936\" class=\"wp-caption-text\">Figura 4: S\u00edntesis de textura con NST usando diferentes escalamientos.<\/figcaption><\/figure>\n<p class=\"p1\">Una definici\u00f3n general de textura es: \u201cla agregaci\u00f3n de materiales que se perciben como variaciones o irregularidades de una superficie continua, y que se distinguen a trav\u00e9s del tacto, la vista o el o\u00eddo. A las texturas tactiles se les llama as\u00ed, pues es el tacto el que mejor distingue entre una textura y otra. Por ejemplo, la suavidad, aspereza y rugosidad son sensaciones que transmite la textura. En una pintura, se destaca la importancia de la textura, abarcando desde el lienzo o papel, hasta las brochas y la pintura utilizados. En m\u00fasica, textura hace referencia al modo en que se combinan los materiales r\u00edtmicos, mel\u00f3dicos y arm\u00f3nicos en una composici\u00f3n, determinando as\u00ed, la cualidad sonora global de una pieza. Finalmente, las texturas visuales imitan la realidad, como puede ser el caso de im\u00e1genes de arena, piedras, o agua.\u201d<\/p>\n<p class=\"p1\">Entonces, \u00bfEs una textura una teselaci\u00f3n?<\/p>\n<p class=\"p1\">Tomando en cuenta la noci\u00f3n general de textura, ser\u00eda poco adecuado decir que lo es; incorrecto inclusive, pues en el caso de una pintura, su rugosidad bien puede deberse a varios elementos que se sobrelapan, que ser\u00edan varios trazos encimados sobre un lienzo, el cual tambi\u00e9n forma parte de la textura.<\/p>\n<p class=\"p1\">\u00bfEs una teselaci\u00f3n una textura?<\/p>\n<p class=\"p1\">S\u00ed. En el contexto de s\u00edntesis de textura, si la imagen de entrada del algoritmo es una teselaci\u00f3n, la consideramos una textura estructurada, y \u00e9stas son particularmente dif\u00edciles de sintetizar. Fuera de este escenario, que ya no es tan relevante para el presente texto, las teselaciones suelen ser un decorado para el suelo y las paredes de hogares, hasta catedrales y ruinas. Son distinguibles al tacto y la vista, por lo que tambi\u00e9n se manejan como texturas en el \u00e1mbito social.<\/p>\n<p class=\"p1\">Luego, \u00bfEl concepto de teselaci\u00f3n ya figura de alg\u00fan modo en la implementaci\u00f3n de alguno de los algoritmos de s\u00edntesis de textura estudiados?<\/p>\n<p class=\"p1\">Pensando en el algoritmo con que se est\u00e1 realizando la s\u00edntesis de textura, que en el caso de los modelos tratados se da con respecto a parches de pixeles, sin duda estos parches no tienen la forma de las teselas que conforman lo que en la imagen de entrada, podr\u00eda ser una baldosa. La elecci\u00f3n de los parches es aleatoria, y es aplicable no solamente a texturas estructuradas, sino tambi\u00e9n a las estoc\u00e1sticas. Aunque estas \u00faltimas pudieran llegar a considerarse, en casos muy particulares, teselaciones aperi\u00f3dicas, ser\u00eda dif\u00edcil identificar los bloques b\u00e1sicos que las construir\u00edan.<\/p>\n<p class=\"p1\">Observamos, sin embargo, que, en el modelo de Kwatra, y en el nivel de los pixeles que componen una imagen, el algoritmo de flujo m\u00e1ximo corte m\u00ednimo determina qu\u00e9 pixeles de cada parche ser\u00e1n pegados en la imagen de salida, lo que eventualmente cubre a toda la resoluci\u00f3n de la imagen de salida. Este punto de vista, en el nivel de los pixeles, concuerda con la definici\u00f3n de teselaci\u00f3n, donde subconjuntos de pixeles en los parches son una tesela. Y nuevamente hay que recalcar, que los parches no suelen coincidir con lo que ser\u00eda una baldosa en la imagen de entrada, si tal muestra de entrada fuera una teselaci\u00f3n.<\/p>\n<p class=\"p1\">\u00bfConsiderar que en el contexto de la s\u00edntesis de textura, una textura pudiera ser una teselaci\u00f3n,<span class=\"Apple-converted-space\">\u00a0 <\/span>ayudar\u00eda a desarrollar un mejor algoritmo de s\u00edntesis de textura?<\/p>\n<p class=\"p1\">Esta pregunta es m\u00e1s interesante, y tambi\u00e9n m\u00e1s dif\u00edcil de responder.<\/p>\n<p class=\"p1\">Primero, hay que tomar en cuenta que el \u00e1rea de la computaci\u00f3n maneja una propia teor\u00eda y metodolog\u00eda, la cual puede prescindir de la \u201cteor\u00eda de las teselaciones en matem\u00e1ticas\u201d para proponer un algoritmo de s\u00edntesis de textura que funcione. A esto agregu\u00e9mosle los trabajos que en el pasado ya se han hecho para elaborar s\u00edntesis de textura. Kwatra et. al se basaron en trabajos previos de Efros y Freeman; Gatys et. al usaron el mismo modelo que Portilla y Simoncelli, pero en el \u00e1mbito de las redes neuronales. De esto y muchas otras cosas se deriva que existan muchas maneras de hacer s\u00edntesis de textura, y ser\u00eda dif\u00edcil establecer un \u00fanico algoritmo, nombr\u00e1ndolo el m\u00e1s eficiente. As\u00ed, si se pretende desarrollar un buen algoritmo de s\u00edntesis de textura que tome como inspiraci\u00f3n la definici\u00f3n matem\u00e1tica de teselaci\u00f3n, ser\u00eda conveniente conocer otras implementaciones de s\u00edntesis de textura, en lugar de reinventar la rueda totalmente.<\/p>\n<p class=\"p1\">Dicho esto, existen aplicaciones de las llamadas \u201cteselaciones de Wang\u201d a la s\u00edntesis de textura, que datan desde 1997 (Stam). Consultar tambi\u00e9n \u201c<em>Wang Tiles for image and texture generation<\/em>\u201d (Cohen, et al, 2003).<\/p>\n<p class=\"p1\">Las teselaciones de Wang son colecciones de baldosas cuadradas y coloreadas en cada una de sus esquinas. La regla para apilar a una tesela seguida de otra es: \u00fanicamente se pueden unir los extremos que comparten color. Adem\u00e1s, no se pueden rotar los cuadrados. El comportamiento es parecido al del juego de domin\u00f3, donde s\u00f3lo se puede agregar una nueva ficha que comparta extremo con la pieza que ya est\u00e1 en el tablero.<\/p>\n<p class=\"p1\">Est\u00e1 demostrado que cualquier conjunto de teselas de Wang que sea capaz de cubrir todo el plano, lo har\u00e1 de manera aperi\u00f3dica; lo que significa que la teselaci\u00f3n carecer\u00e1 de simetr\u00eda traslacional. Y esta es la motivaci\u00f3n principal para utilizar este tipo de mosaicos en s\u00edntesis de textura, ya que el algoritmo necesitar\u00e1 muy pocas piezas cuadradas \u201crellenas\u201d de textura para producir una teselaci\u00f3n aperi\u00f3dica de esa misma textura. Como los parches empleados son pocos, esto ayudar\u00e1 en el procesamiento computacional, y tambi\u00e9n facilitar\u00e1 la programaci\u00f3n de un algoritmo que junte los mosaicos. Por otro lado, la aperiodicidad garantizar\u00e1 que visualmente sea imperceptible que las mismas piezas se est\u00e1n utilizando una y otra vez para tapizar la textura de salida.<\/p>\n<p class=\"p1\"><strong>Texturas y transferencia de estilo<\/strong><\/p>\n<p class=\"p1\">El problema de transferencia de estilo consiste en que, a partir de dos im\u00e1genes de entrada, un algoritmo haga posible combinar ambas, de tal modo una de ellas aporte el contenido y la otra, el estilo, generando una sola imagen de salida.<\/p>\n<figure id=\"attachment_938\" aria-describedby=\"caption-attachment-938\" style=\"width: 1555px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/NST.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-938 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/NST.png\" alt=\"\" width=\"1555\" height=\"900\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/NST.png 1555w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/NST-300x174.png 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/NST-768x445.png 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/NST-1024x593.png 1024w\" sizes=\"auto, (max-width: 1555px) 100vw, 1555px\" \/><\/a><figcaption id=\"caption-attachment-938\" class=\"wp-caption-text\">Figura 5: Transferencia de estilo que preserva los colores de las im\u00e1genes contenido.<\/figcaption><\/figure>\n<p class=\"p1\">Desde Efros y Freeman, en su art\u00edculo \u201cImage quilting for texture synthesis and transfer\u201d (2001) se propuso a la transferencia de estilo como una extensi\u00f3n de la s\u00edntesis de textura. Posteriormente, se crearon algoritmos que lograron procesar<span class=\"Apple-converted-space\">\u00a0 <\/span>cualquier imagen con un \u00fanico estilo. No fue sino hasta el modelo Neural Style Transfer de Gatys, Ecker, Bethge, que la t\u00e9cnica se implement\u00f3 de manera realmente eficiente, pudiendo adaptarse el algoritmo a diversos estilos, y siendo capaz de extraer con suficiente fidelidad las caracter\u00edsticas relevantes de las im\u00e1genes contenido y estilo. <sup class='footnote'><a href='#marker-912-6' id='markerref-912-6' onclick='return footnotation_show(912)'>6<\/a><\/sup><\/p>\n<p class=\"p1\">El algoritmo Neural Style Transfer propuesto por Gatys et al, funciona as\u00ed:<\/p>\n<p class=\"p1\">Se tiene una red neuronal convolucional que acepta como entrada dos im\u00e1genes aleatorias: a la primera se le llama la imagen contenido, y a la segunda, la imagen estilo. La salida del algoritmo ser\u00e1 una \u00fanica ilustraci\u00f3n que fusionar\u00e1 ambas im\u00e1genes de entrada, a partir de estilizar la imagen contenido. En el ejemplo m\u00e1s t\u00edpico, como contenido se elige la fotograf\u00eda de una persona, mientras que la imagen estilo es una pintura de Van Gogh (\u201cLa noche estrellada\u201d), y que al combinarse, se obtiene lo que parecer\u00eda ser una pintura de la persona fotografiada, en el estilo de Van Gogh (ver figura 6).<\/p>\n<figure id=\"attachment_940\" aria-describedby=\"caption-attachment-940\" style=\"width: 1800px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/natOsta_edit_01.jpg\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-940 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/natOsta_edit_01.jpg\" alt=\"\" width=\"1800\" height=\"650\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/natOsta_edit_01.jpg 1800w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/natOsta_edit_01-300x108.jpg 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/natOsta_edit_01-768x277.jpg 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/natOsta_edit_01-1024x370.jpg 1024w\" sizes=\"auto, (max-width: 1800px) 100vw, 1800px\" \/><\/a><figcaption id=\"caption-attachment-940\" class=\"wp-caption-text\">Figura 6. La imagen estilo es &#8220;La noche estrellada&#8221;, de Van Gogh.<\/figcaption><\/figure>\n<p class=\"p1\">La imagen estilizada es el resultado de haber optimizado la red neuronal, donde la funci\u00f3n que se optimiza \u2014y que en el contexto de redes neuronales es com\u00fanmente llamada funci\u00f3n de p\u00e9rdida\u2014 es:<\/p>\n<p class=\"p3\"><span class=\"Apple-converted-space\">$$\\mathcal{L}_{total} = \\alpha\\mathcal{L}_c + \\beta\\mathcal{L}_s \\text{.}$$\u00a0<\/span><\/p>\n<p class=\"p1\">Significa que la funci\u00f3n de p\u00e9rdida total es la suma de dos funciones de p\u00e9rdida $\\mathcal{L}_s$<span class=\"Apple-converted-space\">\u00a0\u00a0<\/span>y<span class=\"Apple-converted-space\">\u00a0 $\\mathcal{L}_c$\u00a0\u00a0<\/span>, donde $\\mathcal{L}_s$<span class=\"Apple-converted-space\">\u00a0<\/span>es la funci\u00f3n de p\u00e9rdida para la imagen estilo, y $\\mathcal{L}_c$<span class=\"Apple-converted-space\">\u00a0<\/span>es la funci\u00f3n de p\u00e9rdida para la imagen contenido (consultar el art\u00edculo de Gatys en (3) para m\u00e1s detalles acerca de esta ecuaci\u00f3n). Los escalares $\\alpha$<span class=\"Apple-converted-space\">\u00a0<\/span>y $\\beta$ que acompa\u00f1an a $\\mathcal{L}_s$<span class=\"Apple-converted-space\">\u00a0<\/span>y $\\mathcal{L}_c$<span class=\"Apple-converted-space\">\u00a0<\/span>determinar\u00edan cuanta informaci\u00f3n de cada una de estas funciones de p\u00e9rdida, permanecer\u00e1 en la imagen de salida.<\/p>\n<p class=\"p1\">Por ejemplo, si $\\alpha = 0$<span class=\"Apple-converted-space\">\u00a0<\/span>y<span class=\"Apple-converted-space\">\u00a0$\\beta = 1$<\/span>, entonces $\\mathcal{L}_{total} = 0 + \\mathcal{L}_s = \\mathcal{L}_s$<span class=\"Apple-converted-space\">\u00a0<\/span>. Pero en este caso, lo que aparece en la imagen de salida, s\u00f3lo tiene informaci\u00f3n de la imagen estilo.<\/p>\n<p class=\"p1\">Tambi\u00e9n se podr\u00eda hacer algo parecido, pero al rev\u00e9s, especificando $\\beta = 0$<span class=\"Apple-converted-space\">\u00a0<\/span>y<span class=\"Apple-converted-space\">\u00a0$\\alpha \\neq 0$<\/span>. De este modo, $\\mathcal{L}_{total} = \\alpha\\mathcal{L}_c + 0 = \\alpha \\mathcal{L}_c$ . Y lo que dar\u00eda como resultado<span class=\"Apple-converted-space\">\u00a0 <\/span>una reconstrucci\u00f3n de la imagen contenido sin ning\u00fan tipo de estilizaci\u00f3n.<\/p>\n<p class=\"p1\">Como bien constata el art\u00edculo de Gatys en [3], la funci\u00f3n de p\u00e9rdida $\\mathcal{L}_s$<span class=\"Apple-converted-space\">\u00a0<\/span>es nada m\u00e1s ni nada menos que una implementaci\u00f3n de s\u00edntesis de textura. Es decir, estableciendo $\\alpha = 0$<span class=\"Apple-converted-space\">\u00a0<\/span>y $\\beta$<span class=\"Apple-converted-space\">\u00a0<\/span>igual a un n\u00famero distinto de cero, es una manera de hacer s\u00edntesis de textura para la imagen de estilo.<\/p>\n<p class=\"p1\">En sus inicios, y con el objetivo de efectuar s\u00edntesis de textura, Neural Style Transfer requer\u00eda que la imagen de entrada e imagen de salida fueran del mismo tama\u00f1o. De este modo, s\u00f3lo se estaba trabajando en el problema de que la textura de salida se pareciera mucho a la textura de entrada, pero no se estaba tomando en cuenta la idea de crear un tapiz m\u00e1s amplio a partir de la muestra peque\u00f1a de una textura. Se puede ilustrar este proceso de reconstrucci\u00f3n de imagen que lleva a cabo Neural Style Transfer (Figura 6).<\/p>\n<figure id=\"attachment_942\" aria-describedby=\"caption-attachment-942\" style=\"width: 1030px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/reconstruccio\u0301n03.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-942 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/reconstruccio\u0301n03.png\" alt=\"\" width=\"1030\" height=\"765\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/reconstruccio\u0301n03.png 1030w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/reconstruccio\u0301n03-300x223.png 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/reconstruccio\u0301n03-768x570.png 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/reconstruccio\u0301n03-1024x761.png 1024w\" sizes=\"auto, (max-width: 1030px) 100vw, 1030px\" \/><\/a><figcaption id=\"caption-attachment-942\" class=\"wp-caption-text\">Figura 6: Proceso de reconstrucci\u00f3n de imagen. Cada muestra representa una iteraci\u00f3n del algoritmo.<\/figcaption><\/figure>\n<p class=\"p1\">En posteriores mejoras al algoritmo, como en \u201cneural_style_pt\u201d <sup class='footnote'><a href='#marker-912-7' id='markerref-912-7' onclick='return footnotation_show(912)'>7<\/a><\/sup>, se puede especificar que la imagen de salida tenga igual resoluci\u00f3n a la imagen contenido, mientras que la imagen estilo sea m\u00e1s peque\u00f1a. As\u00ed, en el caso de s\u00edntesis de textura ($\\alpha = 0$), la imagen contenido ser\u00eda inicializada por un ruido aleatorio aplicado sobre un canvas blanco. Y en este caso ya es posible generar un tapiz m\u00e1s amplio de una textura a partir de la muestra peque\u00f1a de la misma.<\/p>\n<p class=\"p1\">Al realizar s\u00edntesis de textura con Neural Style Transfer, donde la ya referida ilustraci\u00f3n de Escher se tom\u00f3 como la imagen estilo, y que ten\u00eda una dimensi\u00f3n de 256&#215;256 pixeles, se gener\u00f3 una imagen de salida de 1990&#215;1290 pixeles de dimensi\u00f3n. style_scale y style_weight fueron par\u00e1metros que se modificaron en el programa y que determinaron totalmente la apariencia de la imagen generada. El primer par\u00e1metro escala la textura de entrada, agrand\u00e1ndola o achic\u00e1ndola hacia la imagen de salida. Dado que la imagen contenido es de mayor resoluci\u00f3n que la textura, de no modificarse el escalamiento (es decir, dejando style_scale=1), se obtendr\u00eda una textura agrandada y muy poco similar a lo que se busca. Mejores resultados de s\u00edntesis de textura se producen al dar valores 0.1, 0.2, \u2026., 0.9 a style_scale (ver figura 4).<\/p>\n<p class=\"p1\">Los diferentes escalamientos de la textura inciden de manera relevante, en una fotograf\u00eda estilizada por la textura (ver figura 7).<\/p>\n<figure id=\"attachment_943\" aria-describedby=\"caption-attachment-943\" style=\"width: 2958px\" class=\"wp-caption alignnone\"><a href=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/3ofes_p2_p3_p4.png\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-943 size-full\" src=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/3ofes_p2_p3_p4.png\" alt=\"\" width=\"2958\" height=\"1479\" srcset=\"http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/3ofes_p2_p3_p4.png 2958w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/3ofes_p2_p3_p4-300x150.png 300w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/3ofes_p2_p3_p4-768x384.png 768w, http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/3ofes_p2_p3_p4-1024x512.png 1024w\" sizes=\"auto, (max-width: 2958px) 100vw, 2958px\" \/><\/a><figcaption id=\"caption-attachment-943\" class=\"wp-caption-text\">Figura 7: Transferencias de estilo usando las texturas generadas.<\/figcaption><\/figure>\n<p class=\"p1\"><strong>Conclusiones<\/strong><\/p>\n<p class=\"p1\">Estudiar algoritmos de s\u00edntesis de textura puede ayudar a entender c\u00f3mo funciona el procesamiento de im\u00e1genes desde el nivel de los pixeles, y conocer la teor\u00eda matem\u00e1tica involucrada en ella.<\/p>\n<p class=\"p1\">Existen diversas maneras de hacer s\u00edntesis de textura, y actualmente se siguen elaborando nuevos algoritmos que sintetizan texturas, algunos de los cu\u00e1les parten de que una textura debe ser modelada por un campo aleatorio de Markov, mientras otras propuestas usan estad\u00edsticas de segundo orden, modelos fractales o transformadas Wavelet. Los algoritmos de s\u00edntesis de textura var\u00edan enormemente entre s\u00ed; algunos (los m\u00e1s antiguos) trabajan pixel por pixel, y otros emplean bloques de pixeles denominados parches. Algunos m\u00e9todos funcionan mediante programaci\u00f3n estructurada, a diferencia de los que emplean aprendizaje de m\u00e1quinas o redes neuronales. A\u00fan as\u00ed, no se puede hablar de un algoritmo \u00f3ptimo de s\u00edntesis de textura, lo que tambi\u00e9n estar\u00eda muy relacionado con el para qu\u00e9 ser\u00e1 utilizada la textura.<\/p>\n<p class=\"p1\">Varios m\u00e9todos de s\u00edntesis de textura pueden generalizarse a videos. Tal es el caso del algoritmo de Kwatra et al, y el de Gatys et al.<\/p>\n<p class=\"p1\">Visto desde el lado matem\u00e1tico, los campos aleatorios de Markov, los modelos probabil\u00edsticos en gr\u00e1ficas o la estad\u00edstica, forman parte de la teor\u00eda que sustenta varios algoritmos de s\u00edntesis de textura. <sup class='footnote'><a href='#marker-912-8' id='markerref-912-8' onclick='return footnotation_show(912)'>8<\/a><\/sup><\/p>\n<p class=\"p1\">Visto del lado de la programaci\u00f3n, tambi\u00e9n podr\u00eda ser de inter\u00e9s la optimizaci\u00f3n de algoritmos en visi\u00f3n computacional. E igualmente lo ser\u00eda la transferencia de estilo, para la cual ya existen muchos m\u00e1s algoritmos que hacen uso de esta t\u00e9cnica, adem\u00e1s de Neural Style Transfer (por ejemplo Strotss Style Transfer).<\/p>\n<p><iframe loading=\"lazy\" title=\"Strotss Vs Artistic Videos\" width=\"900\" height=\"506\" src=\"https:\/\/www.youtube.com\/embed\/videoseries?list=PLT47BbQIqPXay79WrIF3ov8lHTL42CDg9\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/p>\n<p class=\"p1\">Para m\u00e1s ideas sobre c\u00f3mo emplear s\u00edntesis de textura y transferencia de estilo en obras visuales visitar:\u00a0<a href=\"http:\/\/ofeliayorquesta.com\/blog\/2020\/05\/17\/green-screen\/\">Green Screen<\/a>,\u00a0<a href=\"http:\/\/ofeliayorquesta.com\/blog\/2020\/07\/25\/transferencia-de-estilo-en-videos\/\">Transferencia de Estilo en Videos<\/a>, y\u00a0<a href=\"http:\/\/ofeliayorquesta.com\/blog\/2020\/09\/13\/modelado-de-cabezas-en-3d\/\">Modelado de cabezas en 3D<\/a>\u00a0, en pasadas publicaciones de este blog.<\/p>\n<p><strong>Bibliograf\u00eda<\/strong><\/p>\n<p>[1] A. Efros y W. T. Freeman, Image quilting for texture synthesis and transfer, Proceedings of the 28 th Annual Conference on Computer Graphics and Interactive Techniques, (2001), 341-346.<\/p>\n<p class=\"p1\">[2] L. Gatys, A. S. Ecker y M. Bethge, Texture Synthesis using convolutional neural networks, NIPS\u2019S15, Proceedings of the 28 th International Conference on Neural Information Processing Systems, (2015) 262-270.<\/p>\n<p class=\"p1\">[3] L. Gatys, A. S. Ecker y M. Bethge, Image Style Transfer using convolutional neural networks, IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2016)<\/p>\n<p>[4] B. Gr\u00fcnbaum y G. Shepard, Tilings and Patterns, 2da edici\u00f3n, Dover Publications, 2016<\/p>\n<p class=\"p1\">[5] V. Kwatra, A. Sch\u00f6dl, et. al. Graphcut Textures: Image and Video Synthesis Using Graph Cuts. ACM Transactions on Graphics. (22)(3) (2003)<\/p>\n<p class=\"p1\">[6] Y. Jing, et al., Neural Style Transfer: A review, Transactions on Visualization and Computer Graphics. (26)(11) (2020), 3365-3385.<\/p>\n<p class=\"p1\">\n<div class='footnotes' id='footnotes-912'>\n<div class='footnotedivider'><\/div>\n<ol>\n<li id='marker-912-1'>\u00a0 El interesado en esta definici\u00f3n deber\u00eda revisar \u201cTilings and Patterns,\u201d de Gr\u00fcnbaum y Shepard. <span class='returnkey'><a href='#markerref-912-1'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-2'>\u00a0 M\u00e1s detalles sobre el grupo 632 en <a href=\"https:\/\/l.facebook.com\/l.php?u=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWallpaper_group%3Ffbclid%3DIwAR0wqlbXNM5Id82T6XPLhF566lrwgkSI1dBcKdtXcGUYNBHFAikoSEfRGj4%23Group_p6_(632)&amp;h=AT2csiDy52eVGCh_OEVAn-G2YACzaH-BrAG0_31-hFnLyY4NhrctThQVL2hw7Nel96Hzbf7RGKlWBt-2f_I-FEfT6MQKIeiEelVwUwob9iQ_UI2IFgaIJH-xTqgL4odJnVbgzY2osphaJDFp0UlWopVk\" target=\"_blank\" rel=\"noopener\"><span class=\"s1\">https:\/\/en.wikipedia.org\/wiki\/Wallpaper_group#Group_p6_(632)<\/span><\/a>  <span class='returnkey'><a href='#markerref-912-2'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-3'>\u00a0 Consultar (3) y (5) en la bibliograf\u00eda para la referencia completa a los art\u00edculos de estos modelos de s\u00edntesis de textura. <span class='returnkey'><a href='#markerref-912-3'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-4'>\u00a0 Se refiere a si &#8220;\u00bftodo lo que es teselaci\u00f3n es una textura?&#8221; <span class='returnkey'><a href='#markerref-912-4'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-5'>\u00a0 Refiri\u00e9ndose a: si cualquier textura es una teselaci\u00f3n. <span class='returnkey'><a href='#markerref-912-5'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-6'>\u00a0 Se recomienda leer el art\u00edculo &#8220;Neural Style Transfer, a review,&#8221; en (6). <span class='returnkey'><a href='#markerref-912-6'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-7'>\u00a0 Disponible en\u00a0\u00a0<a href=\"https:\/\/github.com\/ProGamerGov\/neural-style-pt\" target=\"_blank\" rel=\"noopener\"><span class=\"s1\">https:\/\/github.com\/ProGamerGov\/neural-style-pt<\/span><\/a>\u00a0 <span class='returnkey'><a href='#markerref-912-7'>&#8629;<\/a><\/span><\/li>\n<li id='marker-912-8'>\u00a0 En https:\/\/youtu.be\/QSBS-keJcfM se puede ver la charla que di sobre matem\u00e1ticas y s\u00edntesis de textura en el CaRT 2020. <span class='returnkey'><a href='#markerref-912-8'>&#8629;<\/a><\/span><\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>La s\u00edntesis de textura, como procedimiento algor\u00edtmico no tiene nada de art\u00edstico;\u00a0 aunque una exploraci\u00f3n en el tema pudiera llevarnos a controlar mejor el aspecto de obras visuales que la utilicen. Existen diversos m\u00e9todos para efectuar s\u00edntesis de textura: por cortes m\u00ednimos, teselaciones de Wang, o redes neuronales, entre otras posibilidades. El problema de s\u00edntesis<\/p>\n","protected":false},"author":1,"featured_media":927,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[4,73,72],"tags":[74,71,75],"class_list":["post-912","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-matematicas","category-programacion","category-sintesis-de-textura","tag-neuralstyletransfer","tag-sintesisdetextura","tag-strotssstyletransfer"],"uagb_featured_image_src":{"full":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png",1990,1290,false],"thumbnail":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-150x150.png",150,150,true],"medium":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-300x194.png",300,194,true],"medium_large":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-768x498.png",768,498,true],"large":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2-1024x664.png",900,584,true],"1536x1536":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png",1536,996,false],"2048x2048":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png",1990,1290,false],"coup-single-post":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png",900,583,false],"coup-archive-sticky":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png",1000,648,false],"coup-archive":["http:\/\/ofeliayorquesta.com\/blog\/wp-content\/uploads\/2021\/02\/p2.png",450,292,false]},"uagb_author_info":{"display_name":"Ofelia Negrete","author_link":"http:\/\/ofeliayorquesta.com\/blog\/author\/ofelia-negrete\/"},"uagb_comment_info":4,"uagb_excerpt":"La s\u00edntesis de textura, como procedimiento algor\u00edtmico no tiene nada de art\u00edstico;\u00a0 aunque una exploraci\u00f3n en el tema pudiera llevarnos a controlar mejor el aspecto de obras visuales que la utilicen. Existen diversos m\u00e9todos para efectuar s\u00edntesis de textura: por cortes m\u00ednimos, teselaciones de Wang, o redes neuronales, entre otras posibilidades. El problema de s\u00edntesis","_links":{"self":[{"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/912","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/comments?post=912"}],"version-history":[{"count":46,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/912\/revisions"}],"predecessor-version":[{"id":983,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/posts\/912\/revisions\/983"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media\/927"}],"wp:attachment":[{"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/media?parent=912"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/categories?post=912"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/ofeliayorquesta.com\/blog\/wp-json\/wp\/v2\/tags?post=912"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}