Question: In C, edit int main() to read and write a picture with sobel edge detection. Source code below: #include #include #include #include #include /* Do

In C, edit int main() to read and write a picture with sobel edge detection. Source code below:

#include #include #include #include #include

/* Do not modify write_pgm() or read_pgm() */ int write_pgm(char *file, void *image, uint32_t x, uint32_t y) { File *o;

if (!(o = fopen(file, "w"))) { perror(file);

return -1; }

fprintf(o, "P5 %u %u 255 ", x, y);

/* Assume input data is correctly formatted. * * There's no way to handle it, otherwise. */

if (fwrite(image, 1, x * y, o) != (x * y)) { perror("fwrite"); fclose(o);

return -1; }

fclose(o);

return 0; }

/* A better implementation of this function would read the image dimensions * * from the input and allocate the storage, setting x and y so that the * * user can determine the size of the file at runtime. In order to * * minimize complication, I've written this version to require the user to * * know the size of the image in advance. */ int read_pgm(char *file, void *image, uint32_t x, uint32_t y) { FILE *f; char s[80]; unsigned i, j;

if (!(f = fopen(file, "r"))) { perror(file);

return -1; }

if (!fgets(s, 80, f) || strncmp(s, "P5", 2)) { fprintf(stderr, "Expected P6 ");

return -1; }

/* Eat comments */ do { fgets(s, 80, f); } while (s[0] == '#');

if (sscanf(s, "%u %u", &i, &j) != 2 || i != x || j != y) { fprintf(stderr, "Expected x and y dimensions %u %u ", x, y); fclose(f);

return -1; }

/* Eat comments */ do { fgets(s, 80, f); } while (s[0] == '#');

if (strncmp(s, "255", 3)) { fprintf(stderr, "Expected 255 "); fclose(f);

return -1; }

if (fread(image, 1, x * y, f) != x * y) { perror("fread"); fclose(f);

return -1; }

fclose(f);

return 0; }

int main(int argc, char *argv[]) { int8_t image[1024][1024]; int8_t out[1024][1024]; /* Example usage of PGM functions */ /* This assumes that motorcycle.pgm is a pgm image of size 1024x1024 */ read_pgm("motorcycle.pgm", image, 1024, 1024);

/* After processing the image and storing your output in "out", write * * to motorcycle.edge.pgm. */ write_pgm("motorcycle.edge.pgm", out, 1024, 1024); return 0; }

In C, edit int main() to read and write a picture with

sobel edge detection. Source code below: #include #include #include #include #include /*

Transcribed image text

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!