/*************************************************************************************************************************************/
/* */
/* R E G R O U P E M E N T D ' U N E N S E M B L E D ' I M A G E S ( S A N S L E S R E D U I R E ) */
/* E N U N E I M A G E D E T A I L L E S U P E R I E U R E : */
/* */
/* */
/* Author of '$xci/regroupe.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
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
#include xci/sequence.01.I"
#define NOMBRE_D_IMAGES_SUR_L_HORIZONTALE \
QUATRE
#define NOMBRE_D_IMAGES_SUR_L_VERTICALE \
QUATRE
/* Dimensions du tableau-image Resultat exprime en nombre d'images dans les deux directions. */
#define ACCEPTER_LES_IMAGES_INEXISTANTES_SANS_ERREUR \
FAUX \
/* Indicateur introduit le 20211210104108 afin d'accepter sans message d'erreur les images */ \
/* inexistantest et de les remplacer silencieusement par du NOIR, la valeur par defaut */ \
/* assurant la compatibilite anterieure... */
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* R E G R O U P E M E N T D ' U N E N S E M B L E D ' I M A G E S ( S A N S L E S R E D U I R E ) */
/* E N U N E I M A G E D E T A I L L E S U P E R I E U R E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_postfixe),NOM_UNDEF_VIDE));
/* Nom d'un eventuel postfixe a placer derriere <nom_imageA><numero> (par exemple '$ROUGE'). */
DEFV(Int,INIT(premiere_image,PREMIERE_IMAGE));
/* Numero de la premiere image, */
DEFV(Int,INIT(derniere_image,DERNIERE_IMAGE));
/* Numero de la derniere image. */
DEFV(Int,INIT(pas_des_images,PAS_DES_IMAGES));
/* Pas de passage d'un numero d'image a une autre. */
DEFV(Int,INIT(nombre_de_chiffres,NOMBRE_DE_CHIFFRES));
/* Nombre de chiffres codant le numero des images de la serie... */
DEFV(Int,INIT(numero_d_image,UNDEF));
/* Numero de l'image courante. */
DEFV(CHAR,INIT(POINTERc(nom_image),NOM_UNDEF));
/* Nom courant des images. */
DEFV(Int,INIT(nombre_d_images_sur_l_horizontale,NOMBRE_D_IMAGES_SUR_L_HORIZONTALE));
DEFV(Int,INIT(nombre_d_images_sur_la_verticale,NOMBRE_D_IMAGES_SUR_L_VERTICALE));
/* Dimensions du tableau-image Resultat exprime en nombre d'images dans les deux directions. */
DEFV(Logical,INIT(accepter_les_images_inexistantes_sans_erreur,ACCEPTER_LES_IMAGES_INEXISTANTES_SANS_ERREUR));
/* Indicateur introduit le 20211210104108 afin d'accepter sans message d'erreur les images */
/* inexistantest et de les remplacer silencieusement par du NOIR, la valeur par defaut */
/* assurant la compatibilite anterieure... */
DEFV(Float,INIT(translation_horizontale,FLOT__UNDEF));
DEFV(Float,INIT(translation_verticale,FLOT__UNDEF));
/* Increment des translations afin de generer le tableau final... */
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_C("postfixe=",nom_postfixe);
GET_ARGUMENT_I("premiere=",premiere_image);
GET_ARGUMENT_I("derniere=",derniere_image);
GET_ARGUMENT_I("pas=",pas_des_images);
GET_ARGUMENT_I("chiffres=",nombre_de_chiffres);
GET_ARGUMENT_P("niveau=",REECHANTILLONNAGE_GENERAL_____niveau_manquant);
GET_ARGUMENT_I("horizontale=""h=",nombre_d_images_sur_l_horizontale);
GET_ARGUMENT_I("verticale=""v=",nombre_d_images_sur_la_verticale);
GET_ARGUMENT_L("accepter_images_inexistantes=""aii=",accepter_les_images_inexistantes_sans_erreur);
/* Parametre introduit le 20211210104108... */
)
);
EGAL(REECHANTILLONNAGE_GENERAL_____marquer_les_niveaux_manquants,FAUX);
/* Ainsi, on pourra juxtaposer les differentes petites images dans le tableau final... */
PUSH_DIMENSIONS_2D;
SET_DIMENSIONS_2D_SANS_VALIDATION(Xmin,XYZmax(Xmin,MUL2(nombre_d_images_sur_l_horizontale,EnTete_de_sauvegardM ## dimX))
,Ymin,XYZmax(Ymin,MUL2(nombre_d_images_sur_la_verticale,EnTete_de_sauvegardM ## dimY))
);
/* Sauvegarde et changement du dimensionnement... */
EGAL(translation_horizontale,DIVI(_____lNORMALISE_OX(dimX),FLOT(nombre_d_images_sur_l_horizontale)));
EGAL(translation_verticale,DIVI(_____lNORMALISE_OY(dimY),FLOT(nombre_d_images_sur_la_verticale)));
/* Increment des translations afin de generer le tableau final... */
begin_nouveau_block
Bblock
BDEFV(image,image_de_regroupement);
/* Definition de l'image Resultat maintenant que l'on a change les dimensions... */
CALi(Iinitialisation(image_de_regroupement,REECHANTILLONNAGE_GENERAL_____niveau_manquant));
/* Initialisation de l'image Resultat. */
EGAL(numero_d_image,premiere_image);
/* Initialisation du numero de l'image courante. */
/* ATTENTION, par oubli de mise a jour, les deux variables : */
/* */
/* Iredimensionnement_____Rtranslation_OX */
/* Iredimensionnement_____Rtranslation_OY */
/* */
/* ont continue longtemps a s'appeler ici : */
/* */
/* Iredimensionnement_translation_OX */
/* Iredimensionnement_translation_OX */
/* */
/* Si un probleme apparaissait (apres le 1995102700), il faudrait etudier precisemment */
/* le probleme et voir s'il ne faut pas changer le 'R' en 'A' (voir a ce propos le fichier */
/* 'v $xiii/di_image$FON' ou elles sont definies). */
EGAL(Iredimensionnement_____Rtranslation_OY,FZERO);
/* Initialisation de la translation verticale. */
Repe(nombre_d_images_sur_la_verticale)
Bblock
EGAL(Iredimensionnement_____Rtranslation_OX,FZERO);
/* Initialisation ou re-initialisation de la translation horizontale. */
Repe(nombre_d_images_sur_l_horizontale)
Bblock
DEFV(Int,INIT(EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Xmin,EnTete_de_sauvegardM ## Xmin));
DEFV(Int,INIT(EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Xmax,EnTete_de_sauvegardM ## Xmax));
DEFV(Int,INIT(EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Ymin,EnTete_de_sauvegardM ## Ymin));
DEFV(Int,INIT(EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Ymax,EnTete_de_sauvegardM ## Ymax));
/* Memorisation du dimensionnement des images Argument. */
PUSH_DIMENSIONS_2D;
SET_DIMENSIONS_2D_SANS_VALIDATION(EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Xmin
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Xmax
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Ymin
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Ymax
);
/* Retour au dimensionnement des images Argument. */
CALi(Inoir(ImageA));
/* Au cas ou l'image courante n'existerait pas... */
EGAL(nom_image
,COND(IFEQ_chaine(nom_postfixe,NOM_UNDEF_VIDE)
,chain_Aconcaten2_sauf_nom_pipe(nom_imageA
,chain_numero(numero_d_image,nombre_de_chiffres)
)
,chain_Aconcaten3_sauf_nom_pipe(nom_imageA
,chain_numero(numero_d_image,nombre_de_chiffres)
,nom_postfixe
)
)
);
BSaveModifyVariable(Logical
,bloquer_tous_les_messages_d_erreur_des_fichiers
,COND(IL_FAUT(accepter_les_images_inexistantes_sans_erreur)
,BLOQUER_TOUS_LES_MESSAGES_D_ERREUR_DES_FICHIERS
,bloquer_tous_les_messages_d_erreur_des_fichiers
)
);
/* Introduit le 20211210110503... */
Test(PAS_D_ERREUR(CODE_ERROR(Iload_image(ImageA,nom_image))))
/* On notera que le chargement des images Argument a lieu avec les dimensions definies */
/* par '$formatI"... */
Bblock
Eblock
ATes
Bblock
Test(IL_FAUT(accepter_les_images_inexistantes_sans_erreur))
/* Test introduit le 20211210104108... */
Bblock
Eblock
ATes
Bblock
Test__CODE_ERREUR__ERREUR07;
Eblock
ETes
Eblock
ETes
ESaveModifyVariable(Logical
,bloquer_tous_les_messages_d_erreur_des_fichiers
);
/* Introduit le 20211210110503... */
PULL_DIMENSIONS_2D;
CALS(Iredimensionnement(image_de_regroupement
,Xmin,Xmax,Ymin,Ymax
,ImageA
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Xmin
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Xmax
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Ymin
,EnTete_de_sauvegardM ## EnTete_de_sauvegardM ## Ymax
,REECHANTILLONNAGE_SANS_REECHANTILLONNAGE_AVEC_POSITIONNEMENT_QUELCONQUE
)
);
/* Et insertion de l'image courante dans le tableau final... */
INCR(Iredimensionnement_____Rtranslation_OX,translation_horizontale);
/* Progression de la translation horizontale. */
INCR(numero_d_image,pas_des_images);
/* Determination du numero de l'image courante... */
Eblock
ERep
INCR(Iredimensionnement_____Rtranslation_OY,translation_verticale);
/* Progression de la translation verticale. */
Eblock
ERep
CALi(Iupdate_image(nom_imageR,image_de_regroupement));
EDEFV(image,image_de_regroupement);
/* Definition de l'image Resultat maintenant que l'on a change les dimensions... */
Eblock
end_nouveau_block
PULL_DIMENSIONS_2D;
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.