int main(int argc, char* argv[]){ static const char *optString = "M:o:f:p:q:r:"; int c, method, factor; char* picture; char* output; double p,q; while((c = getopt(argc, argv, optString)) != -1){ switch(c){ case 'M': { method = atoi(optarg); break; } case 'f': { picture = optarg; break; } case 'o': { output = optarg; break; } case 'p': { p = atof(optarg); break; } case 'q': { q = atof(optarg); break; } case 'r': { factor = atoi(optarg); break; } default: { printf("Cannot parse.\n"); } } } printf("p = %lf \n" , p ); PGMInfo pgm_info = parse_pgm(picture,1); double results[pgm_info.height * pgm_info.width]; switch(method) { case 0: { printf("Salt: \n"); createWithSaltPeperNoise(results, p, q, output, &pgm_info); break; } case 1: { printf("gaussian:\n"); createGaussianNoise(results, factor, output, &pgm_info); break; } default: { printf("Metodo no valido.\n"); } } free_pixels_memory(&pgm_info); return 0; }
int main(int argc, char* argv[]){ static const char *optString = "o:l:f:r:"; int c; char* picture; char* output; double lambda; int factor; while((c = getopt(argc, argv, optString)) != -1){ switch(c){ case 'l': { lambda = atof(optarg); break; } case 'f': { picture = optarg; break; } case 'o': { output = optarg; break; } case 'r': { factor = atoi(optarg); break; } default: { printf("Cannot parse.\n"); } } } PGMInfo pgm_info = parse_pgm(picture,factor); Matrix matrix = build_matrix(lambda, &pgm_info); double results[pgm_info.fHeight * pgm_info.fWidth]; gauss(matrix, &pgm_info); solve_equations(matrix, &pgm_info, results); create_new_picture(results, output, &pgm_info); free_pixels_memory(&pgm_info); return 0; }
int size_pgm(const char* path, size_t* w, size_t* h, size_t* bpp) { FILE* f = fopen(path, "rb"); if (f == NULL) { perror("open"); return -1; } int ret = parse_pgm(f, w, h, bpp); fclose(f); return ret; }
int load_pgm_uint16(const char* path, uint16_t* image, size_t w, size_t stride, size_t h, size_t bpp) { FILE* f = fopen(path, "rb"); if (f == NULL) { perror("open"); return -1; } size_t _w; size_t _h; size_t _bpp; int ret = parse_pgm(f, &_w, &_h, &_bpp); if (ret) { return ret; } if (bpp != _bpp || w != _w || h != _h) { fprintf(stderr, "mismatch expected %ldx%ldx%ld but file is %ldx%ldx%ld\n", w,h,bpp, _w,_h,_bpp); fclose(f); return -1; } if (stride < w) { fprintf(stderr, "Invalid image stride\n"); } size_t i; for (i = 0; i < h; ++i) { size_t n = w*bpp/8; if (fread(image, n, 1, f) != 1) { fprintf(stderr, "failed to read from file\n"); fclose(f); return -1; } #if __BYTE_ORDER == __LITTLE_ENDIAN swab(image, image, n); #endif image += stride; } fclose(f); return 0; }