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