#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         A C C E S   A V E C   L I S S A G E   D ' U N E   I M A G E  :                                                              #
#         C O N V E R S I O N   " S T A N D A R D   -->   F L O T T A N T E "   D ' U N E                                             #
#         I M A G E   E N   F A U S S E S   C O U L E U R S   A V E C   L I S S A G E  :                                              #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#                   $xci/acces_lis.11$Z <imageA standard> <imageR flottante> [<attenuation> [<Points7> ... [<Points0>]]]]]]]]]        #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/acces_lis.11$Z' :                                                                                           #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

set       nomA=$1
set       nomR=$2
set       attenuation=$3
set       Points7=$4
set       Points6=$5
set       Points5=$6
set       Points4=$8
set       Points3=$9
set       Points2=$10
set       Points1=$11
set       Points0=$12
                                        # Comme on peut le voir sur l'image 'v $xiirc/JULI.b1.0114$ROUGE' par exemple, il peut        #
                                        # etre souhaitable de temps en temps de faire que les '$Points?' ne varient pas comme         #
                                        # des carres strictement. Par exemple pour ce qui est de l'image precedemment citee, on       #
                                        # aura interet a prendre :                                                                    #
                                        #                                                                                             #
                                        #                   Points7=009                                                               #
                                        #                                                                                             #
                                        # et '$Points6' a '$Points0' ayant les valeurs calculees ci-apres, c'est-a-dire :             #
                                        #                                                                                             #
                                        #                   {009,025,049,081,121,169,225}                                             #
                                        #                                                                                             #

set       nomPb=$xiP/bits
set       nomPp=$xiP/plan

#AAAAMMJJhhmmss____:set       nomP=$nomPp                                                                                             #
set       nomP=$nomPb
                                        # Nom de la palette d'extraction des differents bits...                                       #

if        ("$attenuation" == "$K_VIDE") then
          if        ("$nomP" == "$nomPb") then
                    set       attenuation=1
                                        # Dans le cas de '$xiP/bits' la ponderation (les puissance de 2) sont contenues dans le       #
                                        # resultat de l'extraction par definition de '$xiP/bits'.                                     #
          else
          endif

          if        ("$nomP" == "$nomPp") then
                    set       attenuation=0
                                        # Dans le cas de '$xiP/plan' il faut restaurer une pseudo-ponderation des plans (l'equivalent #
                                        # des puissance de 2 finalement...) puisque l'extraction par '$xiP/plan' donne a priori du    #
                                        # '$BLANC'.                                                                                   #
          else
          endif
else
endif

set       Coef1n=2
set       Coef0n=1
                                        # Definition des coefficients du polynome du premier degre definissant le passage du          #
                                        # numero 'NuMeRo' a la variable du polynome du second degre qui suit. La variable             #
                                        # '$PoInTs1D' sera donc definie par :                                                         #
                                        #                                                                                             #
                                        #                   PoInTs1D = (($Derniere - $NuMeRo) * $Coef1n) + $Coef0n                    #
                                        #                                                                                             #
set       Coef2P=1
set       Coef1P=0
set       Coef0P=0
                                        # Definition des coefficients du polynome du second degre definissant la taille des noyaux    #
                                        # de convolution. La variable '$PoInTs2D' sera donc definie par :                             #
                                        #                                                                                             #
                                        #                   PoInTs2D = ((($Coef2P * $PoInTs1D) + $Coef1P) * $PoInTs1D) + $Coef0P      #
                                        #                                                                                             #

alias     Gcoeff    'set                 NoM=\!:1 ; set NuMeRo=\!:2                                                               ;    \\
                     @                   PoInTs1D = (($Derniere - $NuMeRo) * $Coef1n) + $Coef0n                                   ;    \\
                     @                   PoInTs2D = ((($Coef2P * $PoInTs1D) + $Coef1P) * $PoInTs1D) + $Coef0P                     ;    \\
                     eval                "set TeSt=$K_DOLLAR$NoM"                                                                 ;    \\
                     if                  ("$TeSt" == "$K_VIDE") eval "set $NoM=$PoInTs2D"                                         ;    \\
                     unset               NoM NuMeRo PoInTs1D PoInTs2D TeSt'
                                        # Procedure de generation des nombres de points des differents noyaux de convolution.         #

set       Premiere=0001
set       Derniere=0008

Gcoeff    Points0   $Premiere
Gcoeff    Points1   0002
Gcoeff    Points2   0003
Gcoeff    Points3   0004
Gcoeff    Points4   0005
Gcoeff    Points5   0006
Gcoeff    Points6   0007
Gcoeff    Points7   $Derniere
                                        # Generation des nombres de points des differents noyaux de convolution, ou '$Points7'        #
                                        # correspond aux poids forts (2 puissance 7) et '$Points0' aux poids faibles (2 puissance 0). #

set       nomT=$xT/`Genom4`
                                        # ATTENTION, c'est 'Genom4' et non point 'genom' qui est utilise afin de limiter la longueur  #
                                        # des noms de fichier crees ci-apres...                                                       #

alias     substit   'set                 PlAn=\!:1                                                                                ;    \\
           $xci/substitue$X    A=$nomA p=$nomP$K_sepP$PlAn substitution=L_SUBSTITUTION_ROUGE R=$nomT$K_sepP$PlAn $formatI         ;    \\
                     unset               PlAn'
                                        # Procedure d'extraction des 8 plans de bits...                                               #
substit   01
substit   02
substit   04
substit   08
substit   10
substit   20
substit   40
substit   80
                                        # Extraction des 8 plans de bits...                                                           #

alias     convol    'set                 PlAn=\!:1 ; set PoInTs=\!:2 ; set NuMeRo=\!:3                                            ;    \\
                     $xci/acces$X        A=$nomT$K_sepP$PlAn convertir=VRAI                                         $formatI      |    \\
                     $xci/convol.01$X    standard=FAUX points=$PoInTs noyau_carre=FAUX R=$nomT$K_sepP$NuMeRo        $formatI      ;    \\
                     unset               PlAn NuMeRo PoInTs'
                                        # Procedure de filtrage des 8 plans de bits...                                                #

convol    01        $Points0  $Premiere
convol    02        $Points1  0002
convol    04        $Points2  0003
convol    08        $Points3  0004
convol    10        $Points4  0005
convol    20        $Points5  0006
convol    40        $Points6  0007
convol    80        $Points7  $Derniere
                                        # Convolution des 8 plans de bits en convoluant beaucoup les bits de poids faible et tres     #
                                        # peu les bits de poids fort.                                                                 #

$xci/accumule.01$X  A=$nomT$K_sepP premiere=$Premiere derniere=$Derniere standard=FAUX attenuation=$attenuation R=$nomR $formatI

$DELETE             $nomT$K_sepP??
$DELETE             $nomT$K_sepP????
                                        # Puis grand nettoyage...                                                                     #



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