#include <stdlib.h>
#include<stdio.h>
#include <iostream>
using namespace std;
//=================================================================================
double ** my_readcsv(char *path, int ROWS, int COLS)
{
FILE *fp = NULL;
fp = fopen(path, "at+");
if ( NULL == fp )
{
cout << "Failed to open " << path << endl;
}
double *arr1=NULL;
arr1 = (double *)malloc(ROWS*COLS*sizeof(double));
double **arr2=NULL;
arr2 = (double **)malloc(ROWS*sizeof(double *));
for(int r=0; r<ROWS; r++)
{
arr2[r] = arr1 + r*COLS;
}
char d;
int ret=1;
int i = 0;
while ( ret != EOF && i < ROWS )
{
for(int j=0; j<COLS; j++)
{
ret = fscanf( fp, "%lf", &arr2[i][j]);
ret = fscanf( fp, ",", &d);
}
i++;
}
fclose(fp);
return arr2;
}
//=================================================================================
double *** get_ImageMTF()
{
int ROWS=16;
int COLS=16;
char path_rdc[260];
char path_gdc[260];
char path_bdc[260];
char path_rac[260];
char path_gac[260];
char path_bac[260];
strcpy(path_rdc, "/home/zlf/Documents/code/MTF/MTF_rdc.csv");
strcpy(path_gdc, "/home/zlf/Documents/code/MTF/MTF_gdc.csv");
strcpy(path_bdc, "/home/zlf/Documents/code/MTF/MTF_bdc.csv");
strcpy(path_rac, "/home/zlf/Documents/code/MTF/MTF_rac.csv");
strcpy(path_gac, "/home/zlf/Documents/code/MTF/MTF_gac.csv");
strcpy(path_bac, "/home/zlf/Documents/code/MTF/MTF_bac.csv");
double ***MTF;
MTF = (double ***)malloc(6*sizeof(double **));
double ** MTF_rdc=NULL;
double ** MTF_gdc=NULL;
double ** MTF_bdc=NULL;
double ** MTF_rac=NULL;
double ** MTF_gac=NULL;
double ** MTF_bac=NULL;
MTF_rdc = my_readcsv(path_rdc, ROWS, COLS);
MTF_gdc = my_readcsv(path_gdc, ROWS, COLS);
MTF_bdc = my_readcsv(path_bdc, ROWS, COLS);
MTF_rac = my_readcsv(path_rac, ROWS, COLS);
MTF_gac = my_readcsv(path_gac, ROWS, COLS);
MTF_bac = my_readcsv(path_bac, ROWS, COLS);
MTF[0] = MTF_rdc;
MTF[1] = MTF_gdc;
MTF[2] = MTF_bdc;
MTF[3] = MTF_rac;
MTF[4] = MTF_gac;
MTF[5] = MTF_bac;
return MTF;
}
int main()
{
double ***arr3=NULL;
arr3 = get_ImageMTF();
for(int k=0; k<6; k++)
{
for(int i=0; i<16; i++)
{
for(int j=0; j<16; j++)
{
printf("%f ", arr3[k][i][j]);
}
printf("\n");
}
printf("\n\n");
}
return 0;
}