Pour ce projet, j’ai choisi de faire de la synthèse de texture. Ce champ est très utilisé dans le
milieu de la création et/ou de la retouche d'images par ordinateur. La synthèse de texture a d'ailleurs une grande importance, car une bonne texture bien générée peut donner un réalisme à une photo ou à une image. Le principe de synthétiser une texture est à partir un petit échantillon de texture de la rappel pour une surface plus grande de échantillon du début. À l’intérieur de ce projet, je vais synthétiser de la texture à partir de trois algorithmes différents.Le premier est assez primitif. Il suffit de juxtaposer des portions, choisies au hasard, de
l’échantillon de textures jusqu’à temps d’obtenir les dimensions de l’image à sortir. Cet algorithme est bien, mais il y a de fortes chances qu’il y ait des discontinuités entre chaque bloc choisi aléatoirement.Alors le deuxième algorithme a pour but de réduire ce problème. Avec une section proche de la
bordure du bloc déjà en place, nous allons rechercher dans l’échantillon de départ une portion qui a une bordure similaire. Le calcul de similarité est fait seulement par une somme de différence au carré sur les trois canaux (R,G,B) séparément pour la portion de la bordure dans toute l’image d’échantillon. Par la suite, parmi l'ensemble des blocs retenus avec une bordure similaire nous allons en choisir un au hasard que nous allons superposer légèrement avec celui déjà en place. Il y a encore un risque de discontinuité, car les parties rajoutées restent avec une bordure franche (coupée carré). Ce qui est rare avec des textures dans le monde réel.Pour réduire encore cette discontinuité, on peut essayer de trouver une frontière dans la zone
de chevauchement où la différence entre le bloc de gauche et de droit ou celle entre le bloc du bas et du haut est la plus faible. Pour arriver à faire le masque pour faire la découpe entre les deux blocs il est possible de faire un algorithme dit dynamique pour trouver le chemin avec la somme totale la plus basse. Texture initial | Texture avec échantillonage aléatoire | Texture avec recouvrement | Texture avec recherche de joint |
![]() | ![]() | ![]() | ![]() |
Texture initial | Texture avec échantillonage aléatoire | Texture avec recouvrement | Texture avec recherche de joint |
![]() | ![]() | ![]() | ![]() |
Texture initial | Texture avec échantillonage aléatoire | Texture avec recouvrement | Texture avec recherche de joint |
![]() | ![]() | ![]() | ![]() |
Texture initial | Texture avec échantillonage aléatoire | Texture avec recouvrement | Texture avec recherche de joint |
![]() | ![]() | ![]() | ![]() |
Texture initial | Texture avec échantillonage aléatoire | Texture avec recouvrement | Texture avec recherche de joint |
![]() | ![]() | ![]() | ![]() |
Texture initial | Texture avec échantillonage aléatoire | Texture avec recouvrement | Texture avec recherche de joint |
![]() | ![]() | ![]() | ![]() |
Comme l’on pouvait s'y attendre la méthode aléatoire à un résultat pas très réaliste. On y
retrouve beaucoup de discontinuités et pas beaucoup d’ensembles en général dans les textures. La méthode par échantillonnage avec recouvrement donne d’assez bons résultats pour des textures avec des formes géométriques régulières comme pour la brique. Par contre, avec une tolérance très petite on peut voir souvent la même zone de la texture initiale revenir comme pour les pierres. La méthode d’échantillonnage avec recherche de joint était bien pour la texture avec de petits détails, car au lieu de couper en deux des objets proches des bordures, la jointure les contournait pour les garder le plus possibles continus. On peut voir sur l’ensemble des résultats une très grande continuité sur ma première ligne horizontale et sur la première ligne verticale. En effet, la comparaison, et surtout la superposition de blocs quand il y avait deux contraintes, a été difficile à implanter. J’ai essayé différentes méthodes et la meilleure fut de faire la somme au carré pour le bloc vertical et, par la suite, pour le bloc horizontal et faire la somme des résultats pour les blocs avec le même point de départ et de prendre le premier. J’aurais aussi pu avoir un meilleur résultat en jouant davantage avec les paramètres, soit la taille de la zone de chevauchement et la tolérance. J’ai pris des zones trop grandes et des tolérances trop faibles c’est pour cela que dans mes résultats j’ai une forte tendance avec les mêmes blocs qui reviennent souvent. Avec davantage de temps, je changerai ma méthodologie quand mes résultats sont très discutables. Un des paramètres avec lequel il est possible de jouer est la grosseur de bloc à copier. En effet, si le bloc est petit par rapport à la texture il y aura une perte d’informations comme ci-dessous.