/*************************************************************************************************************************************/ /* */ /* 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