/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N S T R U C T I O N   D ' U N   A U T O S T E R E O G R A M M E  :                                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande calcule une image                                                                               */
/*                  qui est le stereogramme obtenu a partir                                                                          */
/*                  d'une trame Argument et d'un champ de cote...                                                                    */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                    Par exemple :                                                                                                  */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  O-oo::o:-o%o:o:-O-oo::o:-o%o:o:-O-oo::o:-o%o:o:-O-oo::o:-o%o:o:-                                                 */
/*                  -oo::O:.-::oOoo:-oo::O:.-::oOoo:-oo::O:.-::oOoo:-oo::O:.-::oOoo:                                                 */
/*                  :o:-OoO.-:OOo:o::o:-OoO.-:OOo:o::o:-OoO.-:OOo:o::o:-OoO.-:OOo:o:                                                 */
/*                  :o::::-OOOO-:oOo:o::::-OOOO-:oOo-o::::-OOOO-:oOo-o::::-OOOO-:oOo                                                 */
/*                  ::-o-o.o:oO:-oo-::-o-o.ooOo-oo-::-:::-::oOo-oo-::-:::-::oOo-oo-:                                                 */
/*                  :o-::oo::.:oo:Oo:o-::oo:.oooOo:o-::oo:.-ooo-%o:o-::oo:.-ooo-%o:o                                                 */
/*                  ::o-:O:o.o:ooooo::::O::o:o-oOo:--:%o-Ooo-ooO::::-:%o-Ooo-ooO::::                                                 */
/*                  O-o-oOOoOOo:o:--oo-OOOOoooo:o:-oo-OO%O:oo::o-O-o-:OO%O:oo::o-O-o                                                 */
/*                  -o:-:o::oOo-::O-o::o:::OOo:-::O-o::o::oOo-::::o:-:o:::oOo-::::o:                                                 */
/*                  o-:-oO-o:ooo:o:-::oO::o::ooo:o:-::oO::o::oo::-:OoOOo-:o::oo::-:O                                                 */
/*                  :o-:::%::O:O-O:oo::::O%::O:O-O:oo::::O%::O:o%:.:::::o%%::O:o%:.:                                                 */
/*                  :-:::-oo::%-:-:-:o:::-oo::%-:-:-:o:::-oo::%-:--o:::--ooo::%-:--o                                                 */
/*                  :-o::Ooooo-:-%O-:OO-:Ooooo-:-%O-:OO-:Ooooo-:-O::O-oooooooo-:-O::                                                 */
/*                  :::ooooOoOoo::o::-oooooOoOoo::o::-oooooOoOoo::o::o:OOoo%oOoo::o:                                                 */
/*                  o:oooo:::Ooo:-oo::oooo:::Ooo:-oo::oooo:::Ooo:-o:::o::::::Ooo:-o:                                                 */
/*                  :o::o::oO-:-.:::o:::o::oO-:-.:::o:::o::oO-:-.::o::o:::o:O-:-.::o                                                 */
/*                  o-oo:O::-oOoO-o:-ooo:O::-oOoO-o:-ooo:O::-oOoO-o-oo-Oo::--oOoO-o-                                                 */
/*                  o-o::oo:oo-::::-:oO::oo:oo-::::-:oO::oo:oo-:::::oo:OOoo:oo-:::::                                                 */
/*                  -o::-o:O-O-:oo-o::-:-o:O-O-:oo-o::-:-o:O-O-:ooo:-:-oo:oO-O-:ooo:                                                 */
/*                  O:Ooo:o:ooo:OoO:OOooo:o:ooo:OoO:OOooo:o:ooo:oo:%ooo::O::ooo:oo:%                                                 */
/*                  o:oO-o:oo::%Ooo:oO:-o::oo::%Ooo:oO:-o::oo:::ooOO--oo:::oo:::ooOO                                                 */
/*                  ::O:o-o:o::oO:-:o:o:-Oo:o::oO:-:o:o:-Oo:o:oO%:%oo:--:Oo:o:oO%:%o                                                 */
/*                  O.-:ooOOoo:ooo%O.:ooOO:ooo-Ooo%O.:oo%Oooo:oooo.-:ooO%Oooo:oooo.-                                                 */
/*                  O.o::-O:oo:o::o--o:.O:oo:o:o:O--o:.Ooo:o:o:O-O.o:o.Ooo:o:o:O-O.o                                                 */
/*                  oOO:-oo::oo%oo-:ooo-oo-ooOO:-o:oo-Oo:OooO:--ooOoo-Oo:OooO:--ooOo                                                 */
/*                  ooo:oO:Ooo:oo%o:ooo:o:OooO:#o:ooO:ooOoo-O:%%o:ooO:ooOoo-O:%%o:oo                                                 */
/*                  oo:ooo-o%-:%o:o:oo:ooo-OO-%ooo-oo:Oo:::%:-%ooo-oo:Oo:::%:-%ooo-o                                                 */
/*                  O:O:o:o:%::Oo:oOO:O:o:o:%::Oo:oOO:O:o:o:%::Oo:oOO:O:o:o:%::Oo:oO                                                 */
/*                  Oo:o:o:-Oo::oo-oOo:o:o:-Oo::oo-oOo:o:o:-Oo::oo-oOo:o:o:-Oo::oo-o                                                 */
/*                  ::::o::::o:ooO-O::::o::::o:ooO-O::::o::::o:ooO-O::::o::::o:ooO-O                                                 */
/*                  :o:-o::o-::::%Oo:o:-o::o-::::%Oo:o:-o::o-::::%Oo:o:-o::o-::::%Oo                                                 */
/*                  :o::::OO%-o::::.:o::::OO%-o::::.:o::::OO%-o::::.:o::::OO%-o::::.                                                 */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*                  obtenu par :                                                                                                     */
/*                                                                                                                                   */
/*                                      $xci/stereogra.01$X T=$xiio/BAND_RDN.11.41 C=$xT/ANNEAU pf=0.25     | $xci/liste$X           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/stereogra.01$K' :                                                                                          */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1994??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_BASE
#include  image_image_IMAGESF_EXT
#include  image_image_QUAD_IMAGE_EXT

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   AUTORISER_LES_PERMUTATIONS_HORIZONTALES_DE_LA_TRAME                                                                           \
                    VRAI                                                                                                                \
                                        /* Cet indicateur permet d'autoriser ('VRAI') les permutations horizontales de points dans   */ \
                                        /* la trame ou les interdire ('FAUX').                                                       */
#define   INTERPOLER_LA_TRAME                                                                                                           \
                    FAUX                                                                                                                \
                                        /* Lors du decalage de la trame, cet indicateur permet d'interpoler cette derniere ('VRAI')  */ \
                                        /* ou pas ('FAUX').                                                                          */
#define   REPARTIR_LES_POINTS_DE_LA_TRAME                                                                                               \
                    FAUX                                                                                                                \
                                        /* Lors du decalage de la trame, cet indicateur permet de repartir les points par une        */ \
                                        /* procedure d'interpolation ('VRAI') ou bien de les deplacer individuellement comme des     */ \
                                        /* entites insecables ('FAUX'). La valeur par defaut garantit la compatibilite anterieure.   */

#define   FACTEUR_MULTIPLICATIF                                                                                                         \
                    GRO4(FRA10(FRA10(FU)))                                                                                              \
                                        /* Definition du parametrage de la distorsion.                                               */

#define   PERIODE_HORIZONTALE_A_FORCER_DANS_LA_TRAME                                                                                    \
                    FRA5(FU)                                                                                                            \
                                        /* Definition de la periode horizontale a forcer a priori dans la trame.                     */
#define   PERIODE_HORIZONTALE_INTRINSEQUE_DE_LA_TRAME                                                                                   \
                    FRA1(FU)                                                                                                            \
                                        /* Definition de la periode horizontale intrinseque de la trame.                             */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        C O N S T R U C T I O N   D ' U N   A U T O S T E R E O G R A M M E  :                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
                                        /* Nom de l'image a generer.                                                                 */
     DEFV(CHAR,INIC(POINTERc(nom_imageRT),NOM_PIPE));
                                        /* Nom de l'image definissant la trame a la fin du processus (eventuellement).               */
     DEFV(CHAR,INIC(POINTERc(nom_imageAT),NOM_PIPE));
                                        /* Nom de l'image definissant la trame Argument.                                             */
     DEFV(CHAR,INIC(POINTERc(nom_imageC),NOM_PIPE));
                                        /* Nom de l'image donnant le champ de cote.                                                  */
     DEFV(Logical,INIT(autoriser_les_permutations_horizontales_de_la_trame,AUTORISER_LES_PERMUTATIONS_HORIZONTALES_DE_LA_TRAME));
                                        /* Cet indicateur permet d'autoriser ('VRAI') les permutations horizontales de points dans   */
                                        /* la trame ou les interdire ('FAUX').                                                       */
     DEFV(Logical,INIT(interpoler_la_trame,INTERPOLER_LA_TRAME));
                                        /* Lors du decalage de la trame, cet indicateur permet d'interpoler cette derniere ('VRAI')  */
                                        /* ou pas ('FAUX').                                                                          */
     DEFV(Logical,INIT(repartir_les_points_de_la_trame,REPARTIR_LES_POINTS_DE_LA_TRAME));
                                        /* Lors du decalage de la trame, cet indicateur permet de repartir les points par une        */
                                        /* procedure d'interpolation ('VRAI') ou bien de les deplacer individuellement comme des     */
                                        /* entites insecables ('FAUX'). La valeur par defaut garantit la compatibilite anterieure.   */
     DEFV(Float,INIT(facteur_multiplicatif,FACTEUR_MULTIPLICATIF));
                                        /* Definition du parametrage de la distorsion.                                               */
     DEFV(Float,INIT(periode_horizontale_a_forcer_dans_la_trame,PERIODE_HORIZONTALE_A_FORCER_DANS_LA_TRAME));
                                        /* Definition de la periode horizontale a forcer a priori dans la trame.                     */
     DEFV(Float,INIT(periode_horizontale_intrinseque_de_la_trame,PERIODE_HORIZONTALE_INTRINSEQUE_DE_LA_TRAME));
                                        /* Definition de la periode horizontale intrinseque de la trame.                             */
     /*..............................................................................................................................*/
     EGAL(fX_CIRCULAIRE_____compatibilite_20110602,VRAI);
                                        /* Introduit le 20110602181644 car, en effet, je ne suis pas encore sur, a cette date, de    */
                                        /* l'utilite de cette modification...                                                        */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_L("fX_CIRCULAIRE_____compatibilite_20110602=""compatibilite_20110602="
                                       ,fX_CIRCULAIRE_____compatibilite_20110602
                                        );
                                        /* Argument introduit le 20110602171239...                                                   */
                         GET_ARGUMENT_L("GENERATION_D_UN_AUTOSTEREOGRAMME_____compatibilite_20110610=""compatibilite_20110610="
                                       ,GENERATION_D_UN_AUTOSTEREOGRAMME_____compatibilite_20110610
                                        );
                                        /* Argument introduit le 20110610103836...                                                   */

                         GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_C("imageRT=""RT=",nom_imageRT);
                         GET_ARGUMENT_C("imageT=""imageAT=""imageA=""T=""AT=""A=",nom_imageAT);
                         GET_ARGUMENT_C("imageZ=""imageC=""Z=""C=",nom_imageC);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                                        /* Argument introduit le 20110601184250...                                                   */

                         GET_ARGUMENT_L("permutations=",autoriser_les_permutations_horizontales_de_la_trame);
                         GET_ARGUMENT_L("interpoler=",interpoler_la_trame);
                         GET_ARGUMENT_L("repartir=",repartir_les_points_de_la_trame);
                                        /* Argument introduit le 20110607170111...                                                   */

                         GET_ARGUMENT_F("facteur=""f=",facteur_multiplicatif);
                         GET_ARGUMENT_F("pf=""periode_a_forcer=",periode_horizontale_a_forcer_dans_la_trame);
                         GET_ARGUMENT_F("pi=""periode_intrinseque=",periode_horizontale_intrinseque_de_la_trame);

                         GET_ARGUMENTS2_L("renormaliser="
                                         ,Iautostereogramme_____renormaliser_l_autostereogramme_et_la_trame
                                         ,IFautostereogramme_____renormaliser_l_autostereogramme_et_la_trame
                                          );
                         GET_ARGUMENTS2_N("ne_pas_renormaliser=""brutal="
                                         ,Iautostereogramme_____renormaliser_l_autostereogramme_et_la_trame
                                         ,IFautostereogramme_____renormaliser_l_autostereogramme_et_la_trame
                                          );
                                        /* Arguments introduits le 20100120140309...                                                 */
                         )
                    );

     Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_imageAT))))
          Bblock
          Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA1,IFmageA1,nom_imageC))))
               Bblock
               CALS(gIautostereogramme(les_images_sont_standards
                                      ,ImageR
                                      ,ImageA2
                                      ,ImageA
                                      ,facteur_multiplicatif,ImageA1,IFmageA1
                                      ,periode_horizontale_a_forcer_dans_la_trame
                                      ,periode_horizontale_intrinseque_de_la_trame
                                      ,autoriser_les_permutations_horizontales_de_la_trame
                                      ,interpoler_la_trame
                                      ,repartir_les_points_de_la_trame
                                       )
                    );
                                        /* Et generation du stereogramme.                                                            */
                                        /*                                                                                           */
                                        /* Le 20150325095511 je note que si 'EST_FAUX(les_images_sont_standards)', il est preferable */
                                        /* que les niveaux de 'IFmageA1' soient normalises dans [0,1]...                             */

               CALi(Iupdate_image(nom_imageR,ImageR));

               Test(IFNE_chaine(nom_imageRT,NOM_PIPE))
                    Bblock
                    CALi(Iupdate_image(nom_imageRT,ImageA2));
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               Test__CODE_ERREUR__ERREUR07;
               Eblock
          ETes
          Eblock
     ATes
          Bblock
          Test__CODE_ERREUR__ERREUR07;
          Eblock
     ETes

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.