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 >
Wrap
C/C++ Source or Header
|
2002-06-25
|
2KB
|
112 lines
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include "patt_rec.h"
#include "image2d.h"
#include "pnmio.h"
#include "nrutil.h"
int dim_r,dim_c;
main (int argc, char *argv[]) {
char f_matrix[256], f_out[256];
int i, j, k;
double tmp;
int itmp;
double **mat_kernel;
int **mat,**mat2;
unsigned char **image;
FILE *f;
double maximum = -1000000.;
double minimum = 100000.;
Image2D *mat_image;
strcpy(f_matrix, "NO_INPUT");
strcpy(f_out, "NO_OUTPUT");
for (k = 1; k < argc; k++)
if (*argv[k] == '-')
switch (*(argv[k] + 1))
{
case 'i':
if (sscanf(argv[++k], "%s", f_matrix) == NULL)
exit(-1);
break;
case 'o':
if (sscanf(argv[++k], "%s", f_out) == NULL)
exit(-1);
break;
case 'h':
help_message();
break;
default:
help_message();
exit(-1);
}
if (!strcmp(f_matrix, "NO_INPUT"))
{
fprintf(stderr, "missing input file\n");
help_message();
exit(-1);
}
if (!strcmp(f_out, "NO_OUTPUT"))
{
fprintf(stderr, "missing output file\n");
help_message();
exit(-1);
}
f = fopen(f_matrix,"r");
fscanf(f,"%d ",&dim_r);
fprintf(stderr,"%d\n",dim_r);
mat_kernel = dmatrix(0,dim_r-1,0,dim_r-1);
mat = imatrix(0,dim_r-1,0,dim_r-1);
mat2 = imatrix(0,dim_r-1,0,dim_r-1);
for(i=0;i < dim_r; i++) {
for(j=0; j < dim_r; j++) {
fscanf(f,"%lf ", &tmp);
mat_kernel[i][j] = tmp;
if( mat_kernel[i][j] > maximum )
maximum = mat_kernel[i][j];
if( mat_kernel[i][j] < minimum)
minimum = mat_kernel[i][j];
}
}
fclose(f);
fprintf(stderr, "max %lf min %lf\n",maximum,minimum);
/*mando il massimo in 256 e basta*/
for (i = dim_r-1; i >= 0; i--){
// if (maximum!=0) minimum = -maximum;
// if (minimum!=0) maximum = -minimum;
mat_image = ImageAlloc(dim_r,dim_r);
for (i = dim_r-1; i >= 0; i--)
for (j = dim_r-1; j >= 0; j--) {
//mat2[i][j] = (int)( 100*mat_kernel[i][j]);
//mat2[i][j] = ( mat_kernel[i][j] - minimum )*255/(maximum - minimum);
mat2[i][j] = ( mat_kernel[i][j] )*255/(maximum);
mat_image->data[i][j] = mat2[i][j];
}
write_file_pnm(f_out, mat_image );
}
}
help_message()
{
fprintf(stderr, "usage: makemat -i matrix (mat_kernel file)\n -o (output file) \n");
}