/*************************************************************************************************************************************/
/* */
/* G R A D I E N T " S I M P L I F I E " D ' U N E I M A G E F L O T T A N T E : */
/* */
/* */
/* Author of '$xci/gradient.02$K' : */
/* */
/* Jean-Francois COLONNA (LACTAMME, 1998??????????). */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* 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
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* P A R A M E T R E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* M A C R O S U T I L E S : */
/* */
/*************************************************************************************************************************************/
/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/* */
/* G R A D I E N T " S I M P L I F I E " D ' U N E I M A G E F L O T T A N T E : */
/* */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
Bblock
DEFV(CHAR,INIC(POINTERc(nom_imageR),NOM_PIPE));
DEFV(CHAR,INIC(POINTERc(nom_imageA),NOM_PIPE));
/*..............................................................................................................................*/
GET_ARGUMENTSi(nombre_d_arguments
,BLOC(GET_ARGUMENT_C("imageA=""A=",nom_imageA);
GET_ARGUMENT_C("imageR=""R=",nom_imageR);
GET_ARGUMENT_L("gradient_moyen=",IFgradient_simplifie_____evaluer_le_gradient_local_moyen);
GET_ARGUMENT_L("histogramme=",IFgradient_simplifie_____calculer_l_histogramme);
GET_ARGUMENT_L("module=",IFgradient_simplifie_____calculer_le_module);
GET_ARGUMENT_L("periodiser_X=""periodX=",IFgradient_simplifie_____periodiser_X);
GET_ARGUMENT_L("periodiser_Y=""periodY=",IFgradient_simplifie_____periodiser_Y);
GET_ARGUMENT_L("symetriser_X=""symetrX=",IFgradient_simplifie_____symetriser_X);
GET_ARGUMENT_L("symetriser_Y=""symetrY=",IFgradient_simplifie_____symetriser_Y);
GET_ARGUMENT_L("prolonger_X=""prolX=",IFgradient_simplifie_____prolonger_X);
GET_ARGUMENT_L("prolonger_Y=""prolY=",IFgradient_simplifie_____prolonger_Y);
GET_ARGUMENT_F("niveau_hors_image=""niveau=",IFgradient_simplifie_____niveau_hors_image);
GET_ARGUMENT_L("v8=""sv=""seconds_voisins="
,IFgradient_simplifie_____utiliser_les_4_premiers_voisins_et_aussi_les_4_seconds_voisins
);
GET_ARGUMENT_N("v4=""pv=""premiers_voisins="
,IFgradient_simplifie_____utiliser_les_4_premiers_voisins_et_aussi_les_4_seconds_voisins
);
/* Options introduites le 20171128171947... */
GET_ARGUMENT_F("pS=",IFgradient_simplifie_____ponderation_des_voisins___Sud);
GET_ARGUMENT_F("pO=",IFgradient_simplifie_____ponderation_des_voisins_Ouest);
GET_ARGUMENT_F("pN=",IFgradient_simplifie_____ponderation_des_voisins__Nord);
GET_ARGUMENT_F("pE=",IFgradient_simplifie_____ponderation_des_voisins___Est);
GET_ARGUMENT_L("normaliser=",IFgradient_simplifie_____normaliser_les_gradients_3x3);
GET_ARGUMENT_L("circulaire=",IFgradient_simplifie_____domaine_circulaire);
GET_ARGUMENT_I("dimensionX=""demi_dimension_X=""dX=",IFgradient_simplifie_____demi_dimension_X);
GET_ARGUMENT_I("dimensionY=""demi_dimension_Y=""dY=",IFgradient_simplifie_____demi_dimension_Y);
GET_ARGUMENT_I("facteur_du_pas_en_X=""facteurX="
,IFgradient_simplifie_____facteur_du_pas_en_X
);
GET_ARGUMENT_I("facteur_du_pas_en_Y=""facteurY="
,IFgradient_simplifie_____facteur_du_pas_en_Y
);
/* Introduit le 20230408115926 acr oublie depuis bien longtemps... */
GET_ARGUMENT_F("echelleX=",IFgradient_simplifie_____echelle_en_X_de_l_histogramme);
GET_ARGUMENT_F("echelleY=",IFgradient_simplifie_____echelle_en_Y_de_l_histogramme);
GET_ARGUMENT_F("translationX=",IFgradient_simplifie_____translation_en_X_de_l_histogramme);
GET_ARGUMENT_F("translationY=",IFgradient_simplifie_____translation_en_Y_de_l_histogramme);
)
);
CALi(IFinitialisation(IFmageR,FZERO));
/* Initialisation de l'image Resultat. */
Test(PAS_D_ERREUR(CODE_ERROR(IloadF_image(IFmageA,nom_imageA))))
Bblock
CALS(IFgradient_simplifie(IFmageR,IFmageA));
/* Calcul du gradient. Lorsque 'IL_FAUT(IFgradient_simplifie_____calculer_l_histogramme)', */
/* on notera qu'il est preferable que 'IFmageA' soit dans [0,1] et ce afin que le vecteur */
/* gradient calcule ne soit pas plus grand qu'un vecteur unitaire (en particulier si elle */
/* provient d'une image 'EST_VRAI(les_images_sont_standards)', il sera preferable de lui */
/* appliquer '$xci/normalise.01$X' avant '$xci/gradient.02$X'. Ensuite, etant donne que l'on */
/* calcule finalement des compteurs, il est possible que l'un deux l'emporte largement sur */
/* les autres (cas d'une image ayant, par exemple, un grand fond uniforme) ; alors, il est */
/* suggere d'appliquer '$xci/decibel.01$X' au resultat (tout ceci s'est vu lors de tests */
/* effectues avec la luminance de l'image 'v $xiirc/JULI.k1'). */
/* */
/* D'autre part, si l'image provient d'une image 'EST_VRAI(les_images_sont_standards)' et */
/* qu'elle n'a pas ete lissee (par 'v $xci/lissage$K'), l'histogramme du gradient est fait */
/* d'un nuage de points sur un reseau carre dont le pas est fonction de {echelleX,echelleY}. */
CALi(IupdateF_image(nom_imageR,IFmageR));
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.