Example #1
0
int main(int argc, char** argv)
{
    Parameters param;

    // [-d] <fz_c1> <fz_c2> <fz_c3> <fn_c1> <fn_c2> <fn_c3> <alpha> <stride> <n_img> [<pz_c1> <pz_c2> <pz_c3> <nz_c1> <nz_c2> <nz_c3>]
    // -d : diferentes los tamaƱos de filtro, normalizaciĆ³n y pulling
    int i = 1;
    bool diferents = false;
    if ((argc == 10) || (argc == 17)){
        if (argv[i][0] == '-') {
            if (strcmp(argv[i], "-d") == 0) {
                diferents = true;
                i++;
            }
            else {
                exit_with_help();
            }
        }

        if (diferents && argc != 17) exit_with_help();

        param.fz_c1 = atoi(argv[i++]);
        param.fz_c2 = atoi(argv[i++]);
        param.fz_c3 = atoi(argv[i++]);
        param.fn_c1 = atoi(argv[i++]);
        param.fn_c2 = atoi(argv[i++]);
        param.fn_c3 = atoi(argv[i++]);
        param.alpha = atof(argv[i++]);
        param.stride = atoi(argv[i++]);
        param.n_img = atol(argv[i++]);

        if (diferents) {
            param.pz_c1 = atoi(argv[i++]);
            param.pz_c2 = atoi(argv[i++]);
            param.pz_c3 = atoi(argv[i++]);
            param.nz_c1 = atoi(argv[i++]);
            param.nz_c2 = atoi(argv[i++]);
            param.nz_c3 = atoi(argv[i++]);
        }
        else{
            param.pz_c1 = param.nz_c1 = param.fz_c1;
            param.pz_c2 = param.nz_c2 = param.fz_c2;
            param.pz_c3 = param.nz_c3 = param.fz_c3;
        }

        param.activation = ACTIVATION_MAX;
        //return EXIT_SUCCESS;
    }
    else {
        //printf("fallo argumentos: %d\n", argc);
        exit_with_help();
    }

    //printf(" params: %d, %d, %d, %d, %d, %d, %d\n", param.fz_c1, param.fz_c2, param.fz_c3, param.fn_c1, param.fn_c2, param.fn_c3, param.n_img);

    long loops;

    /*int filterSize = atoi(argv[1]);
    int n = atoi(argv[2]);
    int n2 =atoi(argv[3]);
    int n3 =atoi(argv[4]);
    int stride = atoi(argv[5]);
    float radio = atof(argv[6]);
    float alpha = atof(argv[7]);
    int normalizationSize = atoi(argv[8]);
    int numimages = atoi(argv[9]);
    int activation = ACTIVATION_MAX;*/


    srand(time(NULL));
    //Generate Random Filter Banks
    MultibandKernel **kernels1 = generateKernelBank(param.fz_c1, param.fz_c1, 1, param.fn_c1);
    MultibandKernel **kernels2 = generateKernelBank(param.fz_c2, param.fz_c2, param.fn_c1,param.fn_c2);
    MultibandKernel **kernels3 = generateKernelBank(param.fz_c3, param.fz_c3, param.fn_c2, param.fn_c3);
    printf("Created Multiband Kernels for convolution\n");



    printf("Started bucle\n");

    #pragma omp parallel for private(loops) num_threads(16)
    for(loops=0; loops<param.n_img; loops++){
        printf("Image %d\n", loops+1);
        body(param, kernels1, kernels2, kernels3);
    }

    for(i=0; i<param.fn_c1; i++){
        DestroyMultibandKernel(&kernels1[i]);
    }
    for(i=0; i<param.fn_c2; i++){
        DestroyMultibandKernel(&kernels2[i]);
    }
    for(i=0; i<param.fn_c3; i++){
        DestroyMultibandKernel(&kernels3[i]);
    }

    free(kernels1);
    free(kernels2);
    free(kernels3);


    /*struct stat st = {0};
    if (stat("directorioPrueba", &st) == -1) {
        if (mkdir("directorioPrueba", 0777) == -1){
            Error("cannot create directory.", "WriteMultibandImageToGrayImages");
        }
    }
    char name[30] = "";
    char extencion[10] = "";
    char file[] = "nombrearchivo.extencion";
    char *ptc;

    ptc = strchr(file, '.');
    strcpy(extencion, ptc+1);
    *ptc = '\0';
    strcpy(name, file);

    printf("name: %s, ext: %s", name, extencion);
    FILE *fp=NULL;
    fp = fopen("directorioPrueba/img1.img", "wb");
    fclose(fp);*/
    return 0;
}
Example #2
0
int main(int argc, char** argv)
{
    char c;
    int i, aux;
    char filename[200];
    int filterSize = 3;
    int n = 64;
    int n2 =128;
    int n3 =256;
    int stride = 2;
    float radio = 2;
    float alpha = 10;
    int activation = ACTIVATION_MAX;
    int times = 0;


    //Generate Random Filter Banks
    MultibandKernel **kernels1 = generateKernelBank(filterSize,filterSize,1,n);
    MultibandKernel **kernels2 = generateKernelBank(filterSize,filterSize,n,n2);
    MultibandKernel **kernels3 = generateKernelBank(filterSize,filterSize,n2,n3);
    printf("Created Multiband Kernels for convolution\n");

    //Read image
    MultibandImage *im;
    MultibandImage *layer_result;

    printf("Started bucle\n");
    while(1){
        aux = 0;
        times++;
        while((c=getchar()) && c!='\n')
           filename[aux++] = c;
        filename[aux] = '\0';

        if(strcmp(filename, "END")==0)
            break;

        printf("Image %d\n", times);
        im = ReadGrayImageIntoMultibandImage(filename);
        //Layer 0
        layer_result = layer0(im);
        DestroyMultibandImage(&im);
        im = layer_result;

        //Layer 1
        layer_result = layer_n(im, n, 1, kernels1, activation, stride, radio, alpha);
        DestroyMultibandImage(&im);
        im = layer_result;

        //Layer 2
        layer_result = layer_n(im, n2, n, kernels2, activation, stride, radio, alpha);
        DestroyMultibandImage(&im);
        im = layer_result;

        //Layer 3
        layer_result = layer_n(im, n3, n2, kernels3, activation, stride, radio, alpha);
        DestroyMultibandImage(&im);
        im = layer_result;


        //Write result
        Write2CSV(&im, 1, "result.csv", filename);

        //Destroy
        DestroyMultibandImage(&im);
    }

    for(i=0; i<n; i++){
        DestroyMultibandKernel(&kernels1[i]);
    }
    for(i=0; i<n2; i++){
        DestroyMultibandKernel(&kernels2[i]);
    }
    for(i=0; i<n3; i++){
        DestroyMultibandKernel(&kernels3[i]);
    }

    free(kernels1);
    free(kernels2);
    free(kernels3);


    /*struct stat st = {0};
    if (stat("directorioPrueba", &st) == -1) {
        if (mkdir("directorioPrueba", 0777) == -1){
            Error("cannot create directory.", "WriteMultibandImageToGrayImages");
        }
    }
    char name[30] = "";
    char extencion[10] = "";
    char file[] = "nombrearchivo.extencion";
    char *ptc;

    ptc = strchr(file, '.');
    strcpy(extencion, ptc+1);
    *ptc = '\0';
    strcpy(name, file);

    printf("name: %s, ext: %s", name, extencion);*/
    return 0;

}