home *** CD-ROM | disk | FTP | other *** search
/ ftp.disi.unige.it / 2015-02-11.ftp.disi.unige.it.tar / ftp.disi.unige.it / pub / .person / BarlaA / sw / OLD / Simo / SVM_mono / matrix.c < prev    next >
C/C++ Source or Header  |  2002-06-25  |  2KB  |  112 lines

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5. #include <math.h>
  6. #include "patt_rec.h"
  7. #include "image2d.h"
  8. #include "pnmio.h"
  9. #include "nrutil.h"
  10.  
  11. int dim_r,dim_c;
  12.  
  13. main (int argc, char *argv[]) {
  14.   char f_matrix[256], f_out[256];
  15.   int i, j, k;
  16.   double tmp;
  17.   int itmp;
  18.   double **mat_kernel;
  19.   int **mat,**mat2;
  20.   unsigned char **image;
  21.   FILE *f;
  22.   double maximum = -1000000.;
  23.   double minimum = 100000.;
  24.   Image2D         *mat_image;
  25.  
  26.  
  27.   strcpy(f_matrix, "NO_INPUT");
  28.   strcpy(f_out, "NO_OUTPUT");
  29.  
  30. for (k = 1; k < argc; k++)
  31.                 if (*argv[k] == '-')
  32.                         switch (*(argv[k] + 1)) 
  33.               {
  34.               case 'i':
  35.                 if (sscanf(argv[++k], "%s", f_matrix) == NULL)
  36.                   exit(-1);
  37.                 break;
  38.               case 'o':
  39.                 if (sscanf(argv[++k], "%s", f_out) == NULL)
  40.                   exit(-1);
  41.                 break;
  42.               case 'h':
  43.                 help_message();
  44.                 break;
  45.               default:
  46.                 help_message();
  47.                 exit(-1);
  48.               }
  49.  
  50.  
  51.   if (!strcmp(f_matrix, "NO_INPUT"))
  52.     {
  53.       fprintf(stderr, "missing input file\n");
  54.       help_message();
  55.       exit(-1);
  56.     }
  57.   if (!strcmp(f_out, "NO_OUTPUT"))
  58.     {
  59.       fprintf(stderr, "missing output file\n");
  60.       help_message();
  61.       exit(-1);
  62.     }
  63.   f = fopen(f_matrix,"r");
  64.   fscanf(f,"%d ",&dim_r);
  65.   fprintf(stderr,"%d\n",dim_r);
  66.   mat_kernel = dmatrix(0,dim_r-1,0,dim_r-1);
  67.   mat = imatrix(0,dim_r-1,0,dim_r-1);
  68.   mat2 = imatrix(0,dim_r-1,0,dim_r-1);
  69.  
  70.  
  71.   for(i=0;i < dim_r; i++) {
  72.     for(j=0; j < dim_r; j++) {
  73.       fscanf(f,"%lf ", &tmp);
  74.       mat_kernel[i][j] = tmp;
  75.  
  76.           
  77.       if( mat_kernel[i][j] > maximum )
  78.     maximum = mat_kernel[i][j];
  79.       if( mat_kernel[i][j] < minimum)
  80.     minimum = mat_kernel[i][j];
  81.     }
  82.  
  83.   }
  84.  
  85.   fclose(f);
  86.  
  87.   fprintf(stderr, "max %lf min %lf\n",maximum,minimum);
  88.  
  89. /*mando il massimo in 256 e basta*/
  90.  
  91.   for (i = dim_r-1; i >= 0; i--){
  92.    // if (maximum!=0) minimum = -maximum;
  93.    // if (minimum!=0) maximum = -minimum;
  94.     mat_image = ImageAlloc(dim_r,dim_r);
  95.     for (i = dim_r-1; i >= 0; i--)
  96.       for (j = dim_r-1; j >= 0; j--) {
  97.     //mat2[i][j] = (int)( 100*mat_kernel[i][j]);
  98.     //mat2[i][j] = ( mat_kernel[i][j] - minimum )*255/(maximum - minimum);
  99.     mat2[i][j] = ( mat_kernel[i][j] )*255/(maximum);
  100.     mat_image->data[i][j] = mat2[i][j];
  101.       }         
  102.          
  103.     write_file_pnm(f_out, mat_image );
  104.   }
  105. }
  106.   
  107. help_message()
  108. {
  109.   fprintf(stderr, "usage: makemat -i matrix (mat_kernel file)\n                 -o (output file) \n");
  110.       }
  111.  
  112.