frame_1frame_2frame_3frame_4frame_5frame_5

Retour sommaire de la programmation

Projet du restaurateur de plans

Comme les planches du cadastre napoléonien sont généralement numérisées en mode RASTER avec une résolution de 200dpi (~120 Mo par images) on peut donc les traiter numériquement. C’est une étape qui consiste à retirer la patine qu’il y a sur tout les vieux plans. Comme aucun logiciel (à ma connaissance) ne permet de faire une telle opération j’ai donc décidé de le créer moi-même. Pour cela j’ai utilisé un programme en C qui me permet ainsi de me débarrasser plus ou moins bien de ce parasite de manière arithmétique.

Télécharger le programme

Avant le traitement


Après le traitement


Code Source

Ne pas oublier que pour lancer la transformation il faut faire un glissé-déposé du fichier bitmap.

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main(int argc, char *argv[])
{ FILE *fh1;
FILE *fh2;
char ext_1,ext_2,ext_3;
char *filename2;
int ch;
int postexte;
int A,B,C;
int compte=53;
if ((fh1 = fopen(argv[1], "rb")) == NULL)
{
fprintf(stderr, "\nErreur durant l'ouverture du fichier en lecture...");
}
printf("\nFichier qui va etre restaure :\n");
printf("-------> %s\n",argv[1]);
filename2=argv[1];
postexte=0;
while ( filename2[postexte] != '\0')
{
postexte++;
}
ext_1=filename2[postexte-3];
ext_2=filename2[postexte-2];
ext_3=filename2[postexte-1];
filename2[postexte-4]='_';
filename2[postexte-3]='$';
filename2[postexte-2]='.';
filename2[postexte-1]=ext_1;
filename2[postexte-0]=ext_2;
filename2[postexte+1]=ext_3;
filename2[postexte+2]='\0';
printf("\nFichier qui va etre cree :\n");
printf("-------> %s\n",filename2);
printf("\n");
A=0;
B=0;
C=0;
puts("\nIndiquez les trois parametres R,V,B : ***;***;*** ");
printf("\n -> ");
scanf("%i;%i;%i;",&A,&B,&C);
A=A;
B=B;
C=C;
if ((fh2 = fopen(filename2, "wb")) == NULL)
{
fprintf(stderr, "\nErreur durant l'ouverture du fichier en ecriture...");
exit(1);
}
while( !feof( fh1 ) )
{
while( compte>=0 || feof(fh1) )
{
ch = getc( fh1 );
if( !feof(fh1) == 0 ){return(0);}
fprintf(fh2, "%c", ch);
compte--;
}
ch = getc( fh1 );
ch=ch+(ch-A);
if (ch<0)ch=0;
if (ch>255)ch=255;
fprintf(fh2, "%c", ch);
if( !feof(fh1) == 0 ){return(0);}
ch = getc( fh1 );
ch=ch+(ch-B);
if (ch<0)ch=0;
if (ch>255)ch=255;
fprintf(fh2, "%c", ch);
if( !feof(fh1) == 0 ){return(0);}
ch = getc( fh1 );
ch=ch+(ch-C);
if (ch<0)ch=0;
if (ch>255)ch=255;
fprintf(fh2, "%c", ch);
if( !feof(fh1) == 0 ){return(0);}
}
fclose( fh1 );
fclose( fh2 );
return 0;
}

Retour sommaire de la programmation