#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         D E T O U R A G E   E N   N O I R   D ' U N E   I M A G E   E N   V R A I E S   C O U L E U R S  :                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#    $xci/detourage.13$Z <imageA> <imageR> [<Sgradient> [<Sfiltre> [<EtLogique> [<MessageErr> [<Conv> [<FConv> [<Dil> [<NDil>]]]]]]]] #
#                    .                                                                                                                #
#                   /|\                                                                                                               #
#                    |                                                                                                                #
#                     ------------ "3" parce que travaille sur les trois composantes (ROUGE, VERTE et BLEUE)                          #
#                                                                                                                                     #
#                                                                                                                                     #
#              *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *              #
#                         *             *        *             **        *        *        *   *         *   **        *              #
#             * *         *             *        *             * *       *        *        *   *         *   * *       *              #
#                         *             *        *             *  *      *        *        *   *         *   *  *      *              #
#            *   *        *             *        *             *   *     *        *        *   *         *   *   *     *              #
#                         *             *        * * *         *    *    *        *        *   *         *   *    *    *              #
#           * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *              #
#                         *             *        *             *      *  *        *        *   *         *   *      *  *              #
#          *       *      *             *        *             *       * *        *        *   *         *   *       * *              #
#                         *             *        *             *        **        *        *   *         *   *        **              #
#         *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *              #
#                                                                                                                                     #
#                                                                                                                                     #
#         ATTENTION :                                                                                                                 #
#                                                                                                                                     #
#                     A compter du 20060606145534, il est                                                                             #
#                   preferable d'utiliser 'v $xci/detourage.23$Z'                                                                     #
#                   qui est plus general et moins restrictif...                                                                       #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/detourage.13$Z' :                                                                                           #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

set       nomA=$1
set       nomR=$2
set       Sgradient=$3
set       Sfiltre=$4
set       EtLogique=$5
set       MessageErr=$6
                                        # Parametre introduit le 20050920185006...                                                    #
set       Convoluer=$7
set       FConvol=$8
                                        # Parametres introduits le 20091202094132...                                                  #
set       Dilater=$9
set       NDilater=$10
                                        # Parametres introduits le 20140814101720...                                                  #

setArgum  Sgradient                     28

setArgum  Sfiltre                       80

setArgum  EtLogique                     $EXIST
                                        # Permet de choisir entre '$xci/and$X' ('$EXIST') et '$xci/multi_02.01$X' ('$NEXIST'),        #
                                        # l'avantage de '$xci/and$X' etant de conserver les couleurs de l'image Argument...           #
                                        # Ce choix a ete introduit le 19970725175500, sachant que dans les versions anterieures       #
                                        # il faut considerer qu'il etait a l'etat '$NEXIST' puisque seul '$xci/multi_02.01$X' etait   #
                                        # utilise...                                                                                  #

setArgum  MessageErr                    $EXIST

setArgum  Convoluer                     $NEXIST

setArgum  FConvol                       `GetParam $xci/convol.02$X facteur_points`

setArgum  Dilater                       $NEXIST
                                        # Parametre introduit le 20140814101720 et dont la valeur par defaut assure la compatibilite  #
                                        # anterieure...                                                                               #

setArgum  NDilater                      `GetParam $xci/dilate.01$X points`

FileTmpB  nomT
                                        # Generation d'un nom temporaire...                                                           #

execRVB   $xci/gradient.01$X  A=$nomA%s R=$nomT%s                                                             $formatI
                                        # Calcul du gradient pour chacune des trois composantes de l'image vraies couleurs Argument.  #

if        (    ("$formatI" == "$format_Suq")                                                                                            \
          ||   ("$formatI" == "$format_Sud")                                                                                            \
          ||   ("$formatI" == "$format_Std")                                                                                            \
          ||   ("$formatI" == "$format_Sdu")                                                                                            \
           ) then
          $xci/gauss$X        R=$nomT$W                                                                                 $formatI
                                        # Generation systematique d'un champ gaussien du type 'v $xiio/GAUSS.8110' ; en effet, on ne  #
                                        # peut utiliser cette derniere image que si on est en mode 'Suq', 'Sud', 'Std' ou 'Sdu'       #
                                        # (c'est-a-dire en format "carre" de dimension lineaire egale a une puissance de 2).          #

          $xci/maximum$X      A1=$nomT$ROUGE A2=$nomT$VERTE                                                             $formatI        \
                                                            | $xci/maximum$X      A2=$nomT$BLEUE                        $formatI        \
                                                            | $xci/seuil$X                            seuil=$Sgradient  $formatI        \
                                                            | $xci/complement$X                                         $formatI        \
                                                            | $xci/filtre.01$X    N=$nomT$W           seuil=$Sfiltre    $formatI        \
                                                            | $xci/acces$X                            R=$nomT           $formatI
                                        # Calcul du maximum des trois gradients que l'on seuille, puis que l'on complemente, puis     #
                                        # qu'enfin on filtre...                                                                       #
else
          if        ($MessageErr == $EXIST) then
                                        # Test introduit le 20050920185006 et permettant de supprimer le message qui suit...          #
                    EROR      "Les seuls formats d'image reconnus par le programme '"'$xci/filtre.01$X'"' sont \c"
                    ECHO      "{Suh,Suq,Sud,Std,Sdu} (carree et puissance de 2), ce programme ne peut donc etre utilise."
          else
          endif

          $xci/maximum$X      A1=$nomT$ROUGE A2=$nomT$VERTE                                                             $formatI        \
                                                            | $xci/maximum$X      A2=$nomT$BLEUE                        $formatI        \
                                                            | $xci/seuil$X                            seuil=$Sgradient  $formatI        \
                                                            | $xci/complement$X                                         $formatI        \
                                                            | $xci/acces$X                            R=$nomT           $formatI
                                        # Calcul du maximum des trois gradients que l'on seuille, puis que l'on complemente.          #
endif

if        ($EtLogique == $EXIST) then
          execRVB   $xci/and$X          A1=$nomA%s A2=$nomT R=$nomR%s                                         $formatI
else
          execRVB   $xci/multi_02.01$X  A1=$nomA%s A2=$nomT R=$nomR%s                                         $formatI
endif
                                        # Et enfin detourage la ou le gradient est fort...                                            #

if        ($Convoluer == $EXIST) then
          $xci/complement$X   A=$nomT R=$nomT                                                       $formatI

          if        ($Dilater == $EXIST) then
                    $xci/dilate.01$X    A=$nomT points=$NDilater R=$nomT                                      $formatI
                                        # Introduit le 20140814101720 afin de pouvoir elargir la zone de convolution '$nomT' et       #
                                        # ainsi pouvoir convoluer de part et d'autre du detourage...                                  #
          else
          endif

          execRVB   $xci/convol.02$X    A=$nomR%s N=$nomT V=$BLANC F=$BLANC R=$nomR%s fp=$FConvol mncv=FAUX   $formatI
                                        # Et enfin convolution fonction du gradient inverse (introduit le 20091202094132)...          #
else
endif

FileTmpE  nomT
                                        # Puis destruction des images de manoeuvre...                                                 #



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