Projet final: À vous de jouer! par Joël Tanguay

Description du projet

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.

Échantillonnage aléatoire

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.

Échantillonnage avec recouvrement

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.

Échantillonnage avec recouvrement et recherche de joint optimal.

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.

Résultat

Texture initial

Texture avec échantillonage aléatoire

Texture avec recouvrement

Texture avec recherche de joint

Source : site du cours

Texture initial

Texture avec échantillonage aléatoire

Texture avec recouvrement

Texture avec recherche de joint

Source : site du cours

L'ombrage de la texture initial rend la texture élargie discutable.

Texture initial

Texture avec échantillonage aléatoire

Texture avec recouvrement

Texture avec recherche de joint

Source : site du cours

Texture initial

Texture avec échantillonage aléatoire

Texture avec recouvrement

Texture avec recherche de joint

Source : Présentation du cours

Texture initial

Texture avec échantillonage aléatoire

Texture avec recouvrement

Texture avec recherche de joint

Source : www.textures.com

Texture initial

Texture avec échantillonage aléatoire

Texture avec recouvrement

Texture avec recherche de joint

Source : www.textures.com

Analyse

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.

Au contraire de trop gros blocs restreignent encore une fois les possibilités de comparaison

donc il y a plus de chances d’avoir un appariement sur les mêmes blocs comme l’image ci-dessous.