Comme nous l'avons vu précédemment, la compression fractale par subdivisions successives de triangles, découpe l'image à traiter en un pavage de triangles. Pour améliorer l'efficacité de l'algorithme de compression, une division des triangles ayant un nombre important de détails est ajoutée. Pour connaître le niveau de détails d'une zone de l'image (couverte par un triangle considéré), nous calculons simplement l'écart type des pixels de celui-ci. Plus cette valeur sera importante, et plus le triangle est loin d'être uniforme. L'opération de subdivision sera alors lancée.
Le triangle sera divisé en 6 plus petits triangles comme le montre la figure suivante :
A l'étape 1, nous division une première fois le triangle en 3 triangles, qui seront formés d'une part, avec les 3 points du triangle parent, et d'autre part avec son barycentre. L'étape 2 va ensuite scinder les 3 nouveaux fils en 2, en utilisant la médiane (partant de l'ancien barycentre) de chacun.
Cette subdivision améliore considérablement le rendu de l'image compressée. La perte de qualité est diminuée, mais le temps de compression impose une profondeur de division réstreinte. De plus, la taille du fichier de sortie augmente car il est nécessaire de stocker les différentes subdivisions. Un simple booléen suffit (1 : triangle divisé, 0 : triangle non subdivisé).
julien michot 2006-08-13