#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         T R A N S F O R M A T I O N   D ' U N E   I M A G E   S U I V A N T   L A   C O U R B E   D E   H I L B E R T  :            #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#                   $xci/TransformationHilbert.01$Z         <ImageArgument> <ImageResultat> [<Directe>]                               #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/TransformationHilbert.01$Z' :                                                                               #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20140430165311).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

set       ImageArgument=$1
set       ImageResultat=$2
set       Directe=$3

setArgum  Directe                       $EXIST
                                        # A priori, il s'agit de la transformation Directe...                                         #

Format    $ImageArgument
eval      "$Format"
                                        # Mise en place eventuelle du format de 'ImageArgument'...                                    #

if        ($dimX == $dimY) then
          set       DiMeNsIoN=`$xcg/MIN2.01$X x=$dimX y=$dimY`
          set       LoG_DiMeNsIoN_=`calcul log2($DiMeNsIoN)+1`
          set       LoG_DiMeNsIoNI=`calculINS log2($DiMeNsIoN)+1`

          if        ($LoG_DiMeNsIoN_ == $LoG_DiMeNsIoNI) then
                                        # Test introduit le 20140502090429...                                                         #
                    FilSTmpB  FLiStE

                    $xci/valeurs_Hilbert2D$X                                                                                            \
                                        profondeur=$LoG_DiMeNsIoNI                                                                      \
                                        coordonnees_denormalisees=VRAI                                                            |     \
                    $SE                 -e "s/B=/A=/g"                                                                            |     \
                    $AW                 ' { print $1 " " $2 } '                                                                   |     \
                    $UNI                                                                                                                \
                                                                                                              >  $FLiStE.Hilbert
                                        # Generation de la courbe de Hilbert passant par tous les points de l'image carree...         #

                    $CA                 $FLiStE.Hilbert                                                                           |     \
                    $AW                 ' { print $1 } '                                                                          |     \
                    $SE                 -e "s/^.*=//"                                                                                   \
                                                                                                              >  $FLiStE$COORD_X
                    $CA                 $FLiStE.Hilbert                                                                           |     \
                    $AW                 ' { print $2 } '                                                                          |     \
                    $SE                 -e "s/^.*=//"                                                                                   \
                                                                                                              >  $FLiStE$COORD_Y
                                        # Recuperation des coordonnees des points sucessifs de la courbe de Hilbert.                  #

                    if        ($Directe == $EXIST) then
                              $xci/liste_points$X                                                                                       \
                                                  A=$ImageArgument                                                                      \
                                                  Ndenormaliser=VRAI                                                                    \
                                                  lister_fond=VRAI                                                                      \
                                                  eX=FAUX eY=FAUX eN=VRAI                                                               \
                                                  en_tete=FAUX                                                                          \
                                                  epoints=FAUX                                                                          \
                                                                                                              >  $FLiStE.NIVEAU
                                        # Recuperation des niveaux de 'ImageArgument' dans l'ordre "naturel"...                       #
                    else
                              $xrv/load_image$X                                                                                         \
                                                  A=$ImageArgument                                                                      \
                                                  ne=$tailleI                                                                           \
                                                  Xnormalisees=FAUX                                                                     \
                                                  LISTE_X=$FLiStE$COORD_X                                                               \
                                                  Ynormalisees=FAUX                                                                     \
                                                  LISTE_Y=$FLiStE$COORD_Y                                                               \
                                                  Nnormalises=FAUX                                                                      \
                                                                                                              $formatI                  \
                                                                                                              >  $FLiStE.NIVEAU
                                        # Recuperation des niveaux de 'ImageArgument' dans l'ordre de la courbe de Hilbert.           #

                              $DELETE             $FLiStE$COORD_X
                              $DELETE             $FLiStE$COORD_Y

                              $xci/valeurs_imag$X premiere=1 derniere=$tailleI                                                          \
                                                  denormalisees=VRAI                                                                    \
                                                  PX=1 PY=0                                                                             \
                                                                                                              >  $FLiStE$COORD_X
                              $xci/valeurs_imag$X premiere=1 derniere=$tailleI                                                          \
                                                  denormalisees=VRAI                                                                    \
                                                  PX=0 PY=1                                                                             \
                                                                                                              >  $FLiStE$COORD_Y
                                        # Recuperation des coordonnees des points sucessifs dans l'ordre "naturel"...                 #
                    endif

                    $xrv/store_image$X                                                                                                  \
                                        ne=$tailleI                                                                                     \
                                        Xnormalisees=FAUX                                                                               \
                                        LISTE_X=$FLiStE$COORD_X                                                                         \
                                        Ynormalisees=FAUX                                                                               \
                                        LISTE_Y=$FLiStE$COORD_Y                                                                         \
                                        Nnormalises=FAUX                                                                                \
                                        LISTE_NIVEAU=$FLiStE.NIVEAU                                                                     \
                                        R=$ImageResultat                                                                                \
                                                                                                    $formatI
                                        # Et enfin, generation de l'image '$ImageResultat' contenant les niveaux de '$ImageArgument'  #
                                        # dans l'ordre de la courbe de Hilbert dans le cas "Directe" et dans l'ordre "naturel" dans   #
                                        # le cas contraire...                                                                         #

                    FilSTmpE  FLiStE
          else
                    EROR      "Seules les images de format carre et dont les dimensions sont des puissances de 2 sont possibles."
                                        # Message introduit le 20140502090429...                                                      #
          endif
else
          EROR      "Seules les images de format carre sont possibles."
endif



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