/*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* D A N S L E P L A N C O M P L E X E */ /* S U R U N E I M A G E C O M P L E X E : */ /* */ /* */ /* Definition : */ /* */ /* Cette commande genere une image Complexe */ /* dont le nom est le premier argument */ /* d'appel ; elle est le resultat de */ /* la transformation de la deuxieme */ /* image par la transformation homographique. */ /* */ /* */ /* Author of '$xci/z_homogra.11$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 1993??????????). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* 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_IMAGESJ_EXT #include maths_compl_fonct_CONFORMES_EXT /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #include xci/coordonne.01.I" /* Introduit le 20050912130348... */ #define TRAVAILLER_DANS_LE_PLAN_IMAGE \ VRAI \ /* Indique s'il faut travailler dans le plan image ('VRAI') ou bien dans le plan complexe */ \ /* ("FAUX'). */ #define FACTEUR \ PARE(64000.0) \ /* Facteur multiplicatif lorsqu'il faut 'TRAVAILLER_DANS_LE_PLAN_IMAGE'. Dans le cas */ \ /* contraire, on pourra prendre une valeur proche de '0.25', c'est a dire la valeur */ \ /* precedente 'FACTEUR' divisee par 'dimXY'... */ #define PARTIE_REELLE_DE_A \ FZERO #define PARTIE_IMAGINAIRE_DE_A \ FZERO /* Nombre complexe 'A'. */ #define PARTIE_REELLE_DE_B \ FU #define PARTIE_IMAGINAIRE_DE_B \ FZERO /* Nombre complexe 'B'. */ #define PARTIE_REELLE_DE_C \ FU #define PARTIE_IMAGINAIRE_DE_C \ FZERO /* Nombre complexe 'C'. */ #define PARTIE_REELLE_DE_D \ FZERO #define PARTIE_IMAGINAIRE_DE_D \ FZERO /* Nombre complexe 'D'. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* A P P L I C A T I O N D E L A T R A N S F O R M A T I O N C O N F O R M E H O M O G R A P H I Q U E */ /* D A N S L E P L A N C O M P L E X E */ /* S U R U N E I M A G E C O M P L E X E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock #include xci/coordonne.02.I" /* Introduit le 20050912130348... */ DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE)); DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE)); DEFV(Logical,INIT(travailler_dans_le_plan_image,TRAVAILLER_DANS_LE_PLAN_IMAGE)); /* Indique s'il faut travailler dans le plan image ('VRAI') ou bien dans le plan complexe */ /* ("FAUX'). */ DEFV(Float,INIT(facteur,FACTEUR)); /* Facteur multiplicatif. */ DEFV(deltaF_2D,Atranslation); /* Translation de l'image Argument, */ DEFV(deltaF_2D,Rtranslation); /* Translation de l'image Resultat. */ DEFV(complexe,nombre_A); DEFV(complexe,nombre_B); DEFV(complexe,nombre_C); DEFV(complexe,nombre_D); /* Definition des quatre coefficients de la transformation homographique... */ DEFV(complexe,valeur_initiale); /* Valeur initiale de l'image Resultat. */ /*..............................................................................................................................*/ #include xci/coordonne.04.I" /* Ceci a ete introduit le 20051218183721... */ Cinitialisation(nombre_A,PARTIE_REELLE_DE_A,PARTIE_IMAGINAIRE_DE_A); Cinitialisation(nombre_B,PARTIE_REELLE_DE_B,PARTIE_IMAGINAIRE_DE_B); Cinitialisation(nombre_C,PARTIE_REELLE_DE_C,PARTIE_IMAGINAIRE_DE_C); Cinitialisation(nombre_D,PARTIE_REELLE_DE_D,PARTIE_IMAGINAIRE_DE_D); /* Initialisation des quatre coefficients de la transformation homographique... */ #include xci/conformes.01.I" /* Ceci a ete introduit le 20120521174519... */ GET_ARGUMENTSi(nombre_d_arguments ,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA); GET_ARGUMENT_C("imageR=""R=",nom_imageR); GET_ARGUMENT_L("plan_image=""image=",travailler_dans_le_plan_image); GET_ARGUMENT_N("plan_complexe=""complexe=",travailler_dans_le_plan_image); GET_ARGUMENT_F("facteur=""f=",facteur); /* L'argument abrege "f=" a ete introduit le 20101029101858... */ GET_ARGUMENT_F("RA=",Reelle(nombre_A)); GET_ARGUMENT_F("IA=",Imaginaire(nombre_A)); GET_ARGUMENT_F("RB=",Reelle(nombre_B)); GET_ARGUMENT_F("IB=",Imaginaire(nombre_B)); GET_ARGUMENT_F("RC=",Reelle(nombre_C)); GET_ARGUMENT_F("IC=",Imaginaire(nombre_C)); GET_ARGUMENT_F("RD=",Reelle(nombre_D)); GET_ARGUMENT_F("ID=",Imaginaire(nombre_D)); ARGUMENTS_DES_TRANSFORMATIONS_CONFORMES; /* Arguments introduits sous cette forme le 20120521174519... */ CONTROLE_DE_L_ARITHMETIQUE_ETENDUE_DES_NOMBRES_COMPLEXES; /* Cette extension a ete introduite le 20120521174519... */ ) ); #include xci/coordonne.03.I" /* Introduit le 20050912130348... */ Cinitialisation(valeur_initiale,R0_Complexe,I0_Complexe); CALi(IJinitialisation(IJmageR,ADRESSE(valeur_initiale))); /* Initialisation de l'image Resultat. */ Test(PAS_D_ERREUR(CODE_ERROR(IloadJ_image(IJmageA,nom_imageA)))) /* Chargement de l'image a transformer. */ Bblock INITIALISATION_ACCROISSEMENT_2D(Atranslation ,NEGA(SUPER_lNORMALISE_OX(MOIT(FLOT(dimX)))) ,NEGA(SUPER_lNORMALISE_OY(MOIT(FLOT(dimY)))) ); INITIALISATION_ACCROISSEMENT_2D(Rtranslation ,ZERO ,ZERO ); Test(IL_FAUT(travailler_dans_le_plan_image)) Bblock CALS(IJz_homographique_dans_le_plan_image(IJmageR ,ADRESSE(Rtranslation) ,facteur ,IJmageA ,ADRESSE(Atranslation) ,ADRESSE(nombre_A),ADRESSE(nombre_B) ,ADRESSE(nombre_C),ADRESSE(nombre_D) ) ); /* Et transformation de l'image Argument dans le plan image. */ Eblock ATes Bblock CALS(IJz_homographique_dans_le_plan_complexe(IJmageR ,ADRESSE(Rtranslation) ,facteur ,IJmageA ,ADRESSE(Atranslation) ,ADRESSE(nombre_A),ADRESSE(nombre_B) ,ADRESSE(nombre_C),ADRESSE(nombre_D) ) ); /* Et transformation de l'image Argument dans le plan Complexe. */ Eblock ETes CALi(IupdateJ_image(nom_imageR,IJmageR)); Eblock ATes Bblock Test__CODE_ERREUR__ERREUR07; Eblock ETes RETU_Commande; Eblock ECommande