Bonjour à tous et toutes !
J'ai un filtre à appliquer à une image.
Celle-ci est stockée sous la forme d'un tableau unidimensionnel (je code en C, mais c'est un problème d'algo, je pense).
Afin d'appliquer mon filtre, qui est évidemment composé d'un filtre horizontal et d'un filtre vertical, je parcours mon tableau (deux fois...).
Pour le cas du filtre horizontal, j'ai deux boucles imbriquées, très classique, mais pas pénalisant car les accès mémoire sont efficaces (tableau aligné et données qui se suivent).
Par contre, le cas vertical est beauoup plus coûteux, car je parcours ainsi:
Pour résumer, on fait des accès avec des saut mémoire à chaque tour !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for (j=0 ; j < height ; j++) { for (i=0 ; i < w ; i++) { tab[j*w+i] = ... //filtrage de l'image } }
Evidement, je n'ai pas ecrit directement j*w+i, mais c'est léidée générale.
Ma question:
Existe-t-il un algorithme (et pas un code, j'insiste) qui parcours de manière optimale une image pour la filtrer ? Par exemple avec un parcours unique, au lieu de deux ?
Merci d'avance !
Partager