Page 87 -
P. 87
Chapter 2 ■ Edge-Detection Techniques 61
int i,j,k,n,m;
float u,v;
for (i=1; i<nr-1; i++)
for (j=1; j<nc-1; j++)
{
y[i][j] = (x[i][j+1]+x[i][j-1]+x[i-1][j]+x[i+1][j]) - 4*x[i][j];
if (u>y[i][j]) u = y[i][j];
if (v<y[i][j]) v = y[i][j];
}
}
int main ()
{
int i,j,n;
float s=1.0;
FILE *params;
IMAGE im1, im2;
char name[128];
// Try to read an image
printf (“Enter path to the image file to be processed: “);
scanf (“%s“, name);
printf (“Opening file '%s’\n“, name);
im1 = get_image(name);
printf (“Enter standard deviation: “);
scanf (“%f“, &s);
display_image (im1);
/* Look for parameter file */
im2 = newimage (im1->info->nr, im1->info->nc);
for (i=0; i<im1->info->nr; i++)
for (j=0; j<im1->info->nc; j++)
im2->data[i][j] = im1->data[i][j];
/* Apply the filter */
marr (s-0.8, im1);
marr (s+0.8, im2);
for (i=0; i<im1->info->nr; i++)
for (j=0; j<im1->info->nc; j++)
if (im1->data[i][j] > 0 && im2->data[i][j] > 0)
im1->data[i][j] = 0;
else im1->data[i][j] = 255;
display_image (im1);
save_image (im1, “marr.jpg“);
return 0;
}