/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I S T O R S I O N   D ' U N E   I M A G E   P A R   U N   C H A M P   D O N N E   P A R   D E U X   I M A G E S :        */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Definition :                                                                                                               */
/*                                                                                                                                   */
/*                    Cette commande calcule une image                                                                               */
/*                  qui est la version distordue de l'image                                                                          */
/*                  Argument. La distorsion est definie par                                                                          */
/*                  deux images chacune associee a l'une des                                                                         */
/*                  coordonnees...                                                                                                   */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xci/distord.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
                                        /* Les images non standards ont ete introduites le 20210603103206...                         */

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#define   METHODE_DE_DISTORSION                                                                                                         \
                    METHODE_IMPLICITE_DE_REECHANTILLONNAGE                                                                              \
                                        /* Methode de distorsion a utiliser...                                                       */

#define   FACTEUR_X                                                                                                                     \
                    GRO4(FRA10(FRA10(FU)))
#define   ANTI_TRANSLATION_X                                                                                                            \
                    GRIS
#define   FANTI_TRANSLATION_X                                                                                                           \
                    FZERO
                                        /* Definition du parametrage de la distorsion en 'X'.                                        */
#define   FACTEUR_Y                                                                                                                     \
                    FZERO
#define   ANTI_TRANSLATION_Y                                                                                                            \
                    GRIS
#define   FANTI_TRANSLATION_Y                                                                                                           \
                    FZERO
                                        /* Definition du parametrage de la distorsion en 'Y'.                                        */

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

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I S T O R S I O N   D ' U N E   I M A G E   P A R   U N   C H A M P   D O N N E   P A R   D E U X   I M A G E S :        */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
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_imageA),NOM_PIPE));
                                        /* Nom de l'image a distordre.                                                               */
     DEFV(CHAR,INIC(POINTERc(nom_imageX),NOM_PIPE));
                                        /* Nom de l'image donnant la distorsion en 'X',                                              */
     DEFV(CHAR,INIC(POINTERc(nom_imageY),NOM_PIPE));
                                        /* Nom de l'image donnant la distorsion en 'Y'.                                              */
     DEFV(Int,INIT(methode_de_distorsion,METHODE_DE_DISTORSION));
                                        /* Methode de distorsion a utiliser...                                                       */
     DEFV(Float,INIT(facteur_X,FACTEUR_X));
     DEFV(genere_p,INIT(anti_translation_X,ANTI_TRANSLATION_X));
     DEFV(genere_Float,INIT(Fanti_translation_X,FANTI_TRANSLATION_X));
                                        /* Definition du parametrage de la distorsion en 'X'.                                        */
     DEFV(Float,INIT(facteur_Y,FACTEUR_Y));
     DEFV(genere_p,INIT(anti_translation_Y,ANTI_TRANSLATION_Y));
     DEFV(genere_Float,INIT(Fanti_translation_Y,FANTI_TRANSLATION_Y));
                                        /* Definition du parametrage de la distorsion en 'Y'.                                        */
     /*..............................................................................................................................*/
                                        /* On notera le 20210603142206 qu'a cause de 'v $xiii/di_image$FON compatibilite_20170316'   */
                                        /* cette option est forcee dans 'v $xiii/di_image$FON IFdistorsion_par_un_champ' et ce       */
                                        /* afin que le mode 'REECHANTILLONNAGE_PAR_REPLICATION_ET_DESTRUCTION' ne soit pas force...  */

     GET_ARGUMENTSi(nombre_d_arguments
                   ,BLOC(GET_ARGUMENT_C("imageR=""R=",nom_imageR);
                         GET_ARGUMENT_C("imageA=""A=",nom_imageA);
                         GET_ARGUMENT_C("imageX=""X=",nom_imageX);
                         GET_ARGUMENT_C("imageY=""Y=",nom_imageY);
                         GET_ARGUMENT_L("standard=",les_images_sont_standards);
                                        /* Parametre introduit le 20210603103206...                                                  */

                         GET_ARGUMENT_I("methode=",methode_de_distorsion);

                         GET_ARGUMENT_F("fX=""FX=",facteur_X);
                         GET_ARGUMENT_P("trX=",anti_translation_X);
                         GET_ARGUMENT_F("FtrX=",Fanti_translation_X);
                         GET_ARGUMENT_F("fY=""FY=",facteur_Y);
                         GET_ARGUMENT_P("trY=",anti_translation_Y);
                         GET_ARGUMENT_F("FtrY=",Fanti_translation_Y);
                         )
                    );

     CALi(gInettoyage(les_images_sont_standards,ImageR,IFmageR));
                                        /* Initialisation de l'image Resultat (introduite le 20210603103206)...                      */

     Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA,IFmageA,nom_imageA))))
          Bblock
          Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA1,IFmageA1,nom_imageX))))
               Bblock
               Test(PAS_D_ERREUR(CODE_ERROR(gIload_image(les_images_sont_standards,ImageA2,IFmageA2,nom_imageY))))
                    Bblock
                    CALS(gIdistorsion_par_un_champ(les_images_sont_standards
                                                  ,ImageR,IFmageR
                                                  ,ImageA,IFmageA
                                                  ,facteur_X,ImageA1,IFmageA1,anti_translation_X,Fanti_translation_X
                                                  ,facteur_Y,ImageA2,IFmageA2,anti_translation_Y,Fanti_translation_Y
                                                  ,methode_de_distorsion
                                                   )
                         );
                                        /* Et distorsion de 'ImageA' via le champ {ImageA1,ImageA2}...                               */
                    CALi(gIupdate_image(les_images_sont_standards,nom_imageR,ImageR,IFmageR));
                    Eblock
               ATes
                    Bblock
                    Test__CODE_ERREUR__ERREUR07;
                    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.