/*************************************************************************************************************************************/
/* */
/* D O N N E E S C O M M U N E S D ' I M A G E S D E T Y P E ' bit ' P O U R */
/* L ' E T U D E D E L A C O M P L E X I T E S T R U C T U R E L L E : */
/* */
/* */
/* Author of '$xrC/images_1bit.01$vv$I' : */
/* */
/* Jean-Francois Colonna (LACTAMME, 20130509211406). */
/* */
/*************************************************************************************************************************************/
#define TYPE_BIT__
/* Introduit le 20130730102154... */
#define dimXb \
(dimX/NBITOC)
#define IMAGE_TEMPORAIRE_1 \
TypeImage DEFINITION_IMAGE(imageT1,dimY,dimXb) \
/* Introduit le 20140113143947... */
#define DimImages \
gMUL2(dimXb,dimY) \
/* Dimension introduit le 20140116110650... */
#include "images.01.vv.I"
TypeImage DEFINITION_IMAGE(image,dimY,dimXb);
#ifndef SEUIL_DE_BINARISATION
# define SEUIL_DE_BINARISATION \
GRIS \
/* Introduit le 20130729114018... */
#else
#endif
# define gLOAD_IMAGE_PLAN(image,x,y) \
ETLO(DECD(INDEXATION_IMAGE(image,y,DIVI(x,NBITOC)),REST(x,NBITOC)),BIT)
# define gLOAD_IMAGE_TORE(image,x,y) \
gLOAD_IMAGE_PLAN(image \
,ADD2(REST(ADD2(REST(SOUS(x,Xmin),dimX),dimX),dimX),Xmin) \
,ADD2(REST(ADD2(REST(SOUS(y,Ymin),dimY),dimY),dimY),Ymin) \
)
/* Definitions introduites le 20130730092739... */
# define gLOAD_IMAGE_PLAN_BIT_OCTET(image,x,y) \
MUL2(gLOAD_IMAGE_PLAN(image,x,y),COULEURS)
# define gLOAD_IMAGE_TORE_BIT_OCTET(image,x,y) \
MUL2(gLOAD_IMAGE_TORE(image,x,y),COULEURS)
/* Definitions introduites le 20130730104422 pour le traitement des images reelles a */
/* convertir de "octet" a "bit"... */
# define LOAD_IMAGE_PLAN(x,y) \
gLOAD_IMAGE_PLAN(image,x,y)
# define LOAD_IMAGE_TORE(x,y) \
gLOAD_IMAGE_TORE(image,x,y)
/* Definitions introduites le 20130730092739... */
# define LOAD_IMAGE_PLAN_BIT_OCTET(x,y) \
gLOAD_IMAGE_PLAN_BIT_OCTET(image,x,y)
# define LOAD_IMAGE_TORE_BIT_OCTET(x,y) \
gLOAD_IMAGE_TORE_BIT_OCTET(image,x,y)
/* Definitions introduites le 20130730103050 pour le traitement des images reelles a */
/* convertir de "octet" a "bit"... */
#define gSTORE_IMAGE_PLAN(image,x,y,niveau) \
{ \
int xQ=DIVI(x,NBITOC); \
int xR=REST(x,NBITOC); \
\
INDEXATION_IMAGE(image,y,xQ) = ETLO(INDEXATION_IMAGE(image,y,xQ),OUEX(BLANC,DECG(BIT,xR))); \
/* Mise a 0 du bit courant {x,y}. */ \
\
if (niveau >= SEUIL_DE_BINARISATION) \
/* Le 20130729111616 le test : */ \
/* */ \
/* if (niveau != NOIR) */ \
/* */ \
/* afin de permettre d'etendre la portee des images "format bit", en particulier avec */ \
/* 'v $xrC/ObjetComplexe.S____2$vv$c'... */ \
{ \
INDEXATION_IMAGE(image,y,xQ) = OUIN(INDEXATION_IMAGE(image,y,xQ),DECG(BIT,xR)); \
/* Mise a 1 du bit courant {x,y}. */ \
} \
else \
{ \
} \
}
#define gSTORE_IMAGE_TORE(image,x,y,niveau) \
{ \
int Xtore=ADD2(REST(ADD2(REST(SOUS(x,Xmin),dimX),dimX),dimX),Xmin); \
int Ytore=ADD2(REST(ADD2(REST(SOUS(y,Ymin),dimY),dimY),dimY),Ymin); \
\
gSTORE_IMAGE_PLAN(image,Xtore,Ytore,niveau); \
}
#define STORE_IMAGE_PLAN(x,y,niveau) \
{ \
gSTORE_IMAGE_PLAN(image,x,y,niveau); \
}
#define STORE_IMAGE_TORE(x,y,niveau) \
{ \
gSTORE_IMAGE_TORE(image,x,y,niveau); \
}
#define ACCES_IMAGE_REELLE(nom_de_l_image_reelle) \
/* On notera que 'image_reelle' ne peut etre un argument ci-dessus a cause de l'usage de */ \
/* cette procedure 'ACCES_IMAGE_REELLE(...)' dans 'MAIN(...)' qui n'autorise pas la */ \
/* presence de virgules a l'interieur de son argument... */ \
{ \
TypeImage DEFINITION_IMAGE(image_reelle,dimY,dimX); \
\
FILE *Fdescripteur; \
\
Fdescripteur = fopen(nom_de_l_image_reelle,"r"); \
fread(image_reelle,1,GDimImages,Fdescripteur); \
/* Il faut evidemment lire le fichier 'octet' entier, d'ou le 'GDimImages'... */ \
\
INITIALISATION_IMAGE(INDEXATION_IMAGE(image_reelle,y,x)); \
} \
/* Procedure introduite le 20130729211816... */
#define ACCES_IMAGE_SYNTHETIQUE(nom_de_l_image_synthetique) \
{ \
ACCES_IMAGE_REELLE(nom_de_l_image_synthetique); \
} \
/* Procedure introduite le 20150128100235... */
#ifdef NE_PAS_SORTIR_LE_FICHIER_IMAGE
# define SORTIE_DU_FICHIER_IMAGE \
{ \
}
#else
# ifdef CONVERTIR_LE_FICHIER_IMAGE
# define SORTIE_DU_FICHIER_IMAGE \
{ \
TypeImage DEFINITION_IMAGE(image_convertie,dimY,dimX); \
\
CONVOLUTION_IMAGE; \
TRANSFORMATION_IMAGE; \
/* Les transformations ont ete introduites le 20140113114553... */ \
\
for (y=Ymin ; y <= Ymax ; y=ADD2(y,1)) \
{ \
for (x=Xmin ; x <= Xmax ; x=ADD2(x,1)) \
{ \
int xQ=DIVI(x,NBITOC); \
int xR=REST(x,NBITOC); \
\
gINDEXATION_IMAGE(image_convertie,y,x,dimX) \
=COND(((INDEXATION_IMAGE(image,y,xQ) & DECG(BIT,xR))==0),NOIR,BLANC); \
} \
} \
\
write(STDOUT,image_convertie,GDimImages); \
}
# else
# define SORTIE_DU_FICHIER_IMAGE \
{ \
CONVOLUTION_IMAGE; \
TRANSFORMATION_IMAGE; \
/* Les transformations ont ete introduites le 20140113114553... */ \
\
write(STDOUT,image,DimImages); \
}
# endif
#endif