#!/bin/csh ####################################################################################################################################### # # # T R A I T E M E N T " A N T I - A L I A S I N G " D ' U N I M A G E E N V R A I E S C O U L E U R S # # P A R C O N V O L U T I O N " V A R I A B L E " L A O U L E G R A D I E N T E S T F O R T : # # # # # # Utilisation : # # # # $xci/anti_alia.11$Z <imageA> <imageR> [<imageL> [<PointsG> [<PointsGC> [<Facteur> [<Transfert> [<Forme> [<Valeur>]]]]]]] # # # # par defaut : # # # # $xci/anti_alia.11$Z <imageA> <imageR> <imageA> 81 25 0.1 1.0 $BLANC $BLANC # # # # # # Nota : # # # # Malheureusement, cette methode ajoute un # # leger flou sur l'image Resultat... # # # # # # Author of '$xci/anti_alia.11$Z' : # # # # Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). # # # ####################################################################################################################################### set nomA=$1 set nomR=$2 set nomL=$3 set PointsG=$4 set PointsGC=$5 set Facteur=$6 set Transfert=$7 set Forme=$8 set Valeur=$9 if ("$nomL" == "$K_VIDE") then #20111214171448____: set nomL=$nomA # SET1s nomL = $nomA # Image dont on va utiliser le gradient de la luminance pour convoluer. # # Argument. # else endif setArgum PointsG 81 # Nombre de points du noyau destine a calculer le gradient de la luminance de l'image # # Argument. # setArgum PointsGC 25 # Nombre de points du noyau destine a convoluer le gradient de la luminance. # setArgum Facteur 0.1 # Facteur multiplicatif destine a passer en chaque point (X,Y) du gradient convolue de # # la luminance au nombre de points du noyau de convolution d'anti-aliasing. Augmenter cette # # valeur (a 1.0 par exemple) augmente tout simplement le flou...). # setArgum Transfert 1.0 # Exposant de la fonction de transfert du cumul de convolution (1.0 est la valeur neutre). # # ATTENTION, cette methode a malheureusement des effets pervers : par exemple, la convolution # # "unite" (ne portant que sur un seul point) qui devrait laisser inchangee les niveaux, les # # modifie lorsque le parametre '$Transfert' n'est pas egal a 1 ; cela fait donc perdre du # # contraste aux images (d'ou la valeur 1.0 par defaut, et non plus 0.5...). # if ("$Forme" == "$K_VIDE") then #AAAAMMJJhhmmss____: set Forme=$xiio/BLANC # FileTmpB Forme $xci/init$X niveau=$BLANC R=$Forme $formatI # Choix de l'image definissant la forme du noyau de convolution. Il y a differents choix # # interessants, et en particulier : # # # # $xiio/BLANC : noyau carre, # # $xiio/GAUSS.8??? : noyau circulaire, # # $xiit/RANDOM.11 : noyau aleatoire. # # # else endif if ("$Valeur" == "$K_VIDE") then #AAAAMMJJhhmmss____: set Valeur=$xiio/BLANC # FileTmpB Valeur $xci/init$X niveau=$BLANC R=$Valeur $formatI # Choix de l'image definissant la valeur des elements du noyau de convolution. La valeur par # # defaut definie un noyau uniforme... # else endif FileTmpB nomT # Creation d'un nom temporaire... # $xci/luminance.01$X AR=$nomL$ROUGE AV=$nomL$VERTE AB=$nomL$BLEUE $formatI \ | $xci/gradient.01$X points=$PointsG $formatI \ | $xci/convol.01$X points=$PointsGC R=$nomT $formatI # Calcul de la luminance de l'image Argument, dont on calcule ensuite le gradient, qui est # # lui-meme convolue afin d'arrondir ses angles... # $xci/convol.02$X A=$nomA$ROUGE \ N=$nomT Facteur=$Facteur F=$Forme V=$Valeur transfert=$Transfert \ renormaliser=FAUX \ messages=FAUX \ R=$nomR$ROUGE $formatI # Traitement anti-aliasing de la composante ROUGE. # $xci/convol.02$X A=$nomA$VERTE \ N=$nomT Facteur=$Facteur F=$Forme V=$Valeur transfert=$Transfert \ renormaliser=FAUX \ messages=FAUX \ R=$nomR$VERTE $formatI # Traitement anti-aliasing de la composante VERTE. # $xci/convol.02$X A=$nomA$BLEUE \ N=$nomT Facteur=$Facteur F=$Forme V=$Valeur transfert=$Transfert \ renormaliser=FAUX \ messages=FAUX \ R=$nomR$BLEUE $formatI # Traitement anti-aliasing de la composante BLEUE. # FileTmpE nomT FileTmpE Forme FileTmpE Valeur # Puis destruction des images temporaires... #