#!/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...                                                  #



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.