33,311
社区成员
发帖
与我相关
我的任务
分享
int main(int argc, char *argv[])
{
char *rtn = "Rauschdetektion";
int err = 0;
char *in_name1 = NULL;
char *out_name = NULL;
char file_name[50]={" "};
int format1, formato=0; /* format of PNM images */
int x, y;
int height1, width1; /* size of input image 1 */
int v_flag = 0; /* verbose flag */
int ascii_flag = 0; /* controls output format ASCII or RAW */
int *in_ptr = NULL;
int *out_ptr = NULL;
unsigned long *mw_ptr = NULL;
int n_start = 0 ;
int n_end ;
int n;
double var, mw;
unsigned long count;
FILE *in1, *out;
FILE **in;
FILE *fp;
xelval maxval1, maxvalo; /* xelval is 'unsigned int' */
xel **xelarray1;
xel ***xelarray;
IMAGE image, *im;
fprintf( stderr, "\n####################################");
fprintf( stderr, "\nStart, %s\n", title);
im = ℑ
while (( optstr =
( char*)get_option( argc, argv)) != NULL)
{
switch (optstr[1])
{
case 'v':
v_flag = 1;
break;
case 'i':
in_name1 = OptArg;
break;
case 'o':
out_name = OptArg;
break;
case 's':
n_start = atoi(OptArg);
break;
case 'e':
n_end = atoi(OptArg);
break;
default:
usage( argv[0]);
err = 11;
goto endfunct;
}
}
/* check whether all mandatory options were given */
err = check_opt( argv[0]);
if (err) goto endfunct;
pnm_init(&argc, argv); /* not sure, whether this is required */
in = (FILE**)malloc( 42 * sizeof(FILE*));
if (in == NULL )
{
fprintf( stderr, "\n%s: Could not allocate in!\n", rtn);
err = 1;
goto endfunct;
}
xelarray = (xel***)malloc( 42 * sizeof(xel**));
if (xelarray == NULL )
{
fprintf( stderr, "\n%s: Could not allocate xelarray!\n", rtn);
err = 1;
goto endfunct;
}
in[0] = pm_openr( in_name1);
/* open the first image */
in1 = pm_openr( in_name1);
/* allocate memory for one images */
xelarray[0] = pnm_readpnm( in[0], &width1, &height1, &maxval1, &format1);
xelarray1 = pnm_readpnm( in1, &width1, &height1, &maxval1, &format1);
for( n = n_start ; n <= n_end ; n ++)
{
sprintf(in_name1, "IMG_%03d_G.pgm", n);
in[n] = pm_openr(in_name1);
xelarray[n] = pnm_readpnm( in[n],&width1, &height1, &maxval1, &format1);
}
if (v_flag)
{
fprintf( stderr, "\n image ");
fprintf( stderr, "\n width : %d", width1);
fprintf( stderr, "\n height: %d", height1);
fprintf( stderr, "\n maxval: %d", maxval1);
fprintf( stderr, "\n format: %d", format1);
fprintf( stderr, "\n MAGIC1: %c", format1/256);
fprintf( stderr, "\n MAGIC2: %c", format1%256);
fprintf( stderr, "\n");
}
/* open the result image */
out = pm_openw( out_name);
maxvalo = 0;
formato = format1;
/* Zeiger auf width , height und size. size ist abhaengig von den detektierten Bilddatein */
im->height = height1;
im->width = width1;
im->size = height1 * width1;
in_ptr = (int*)malloc( im->size * sizeof(int));/* int bezeichnet der Zeiger int* */
out_ptr = (int*)malloc( im->size * sizeof(int));
if (in_ptr == NULL || out_ptr == NULL )
{
fprintf( stderr, "\n%s: Could not allocate arrays!\n", rtn);
err = 1;
goto endfunct;
}
/* process data */
printf("\nsave path:");
scanf("%s",&file_name);
fgets(file_name,49, stdin);
fp = fopen(file_name, "w");
if(fp == NULL)
{
printf("Fehler");
exit(1);
}
else
for ( y = 0; y < height1; y++) /* Positonen von Bildpunkten*/
{
for ( x = 0; x < width1; x++)
{
mw = var = count = 0 ;
count = y * width1 + x;
for( n = n_start ; n <= n_end ; n ++)
{
/* fprintf( stderr, "\n%5d ",xelarray[n][y][x].b);*/
mw += xelarray[n][y][x].b; /* Summe aller Helligkeitswerte */
var += xelarray[n][y][x].b * xelarray[n][y][x].b;
}
mw /= n_end - n_start +1 ;
var = sqrt( var/ (n_end - n_start +1) - mw*mw);
}
fprintf(fp,"\n%3d%3d%7.2f%7.2f",y, x, mw, var);
fclose(fp);
}