62 lines
1.2 KiB
C
62 lines
1.2 KiB
C
#include <stdio.h>
|
|
#include "imglib.h"
|
|
|
|
const char *input = "Lenna100.jpg";
|
|
const char *output = "filtered_lenna%d.ppm";
|
|
|
|
double emboss_kernel[3*3] = {
|
|
-2., -1., 0.,
|
|
-1., 1., 1.,
|
|
0., 1., 2.,
|
|
};
|
|
|
|
double sharpen_kernel[3*3] = {
|
|
-1.0, -1.0, -1.0,
|
|
-1.0, 9.0, -1.0,
|
|
-1.0, -1.0, -1.0
|
|
};
|
|
double sobel_emboss_kernel[3*3] = {
|
|
-1., -2., -1.,
|
|
0., 0., 0.,
|
|
1., 2., 1.,
|
|
};
|
|
double box_blur_kernel[3*3] = {
|
|
1.0, 1.0, 1.0,
|
|
1.0, 1.0, 1.0,
|
|
1.0, 1.0, 1.0,
|
|
};
|
|
|
|
double *filters[4] = {
|
|
emboss_kernel, sharpen_kernel, sobel_emboss_kernel, box_blur_kernel
|
|
};
|
|
const double filter_params[2*4] = {
|
|
1.0, 0.0,
|
|
1.0, 0.0,
|
|
1.0, 0.5,
|
|
9.0, 0.0
|
|
};
|
|
|
|
int main()
|
|
{
|
|
image ii, oi;
|
|
int i;
|
|
char lennanames[30];
|
|
|
|
ii = read_image(input);
|
|
if ( ii != NULL ) {
|
|
for(i=0; i<4; i++) {
|
|
sprintf(lennanames, output, i);
|
|
oi = filter(ii, filters[i], 1, filter_params[2*i], filter_params[2*i+1]);
|
|
if ( oi != NULL ) {
|
|
FILE *outfh = fopen(lennanames, "w");
|
|
if ( outfh != NULL ) {
|
|
output_ppm(outfh, oi);
|
|
fclose(outfh);
|
|
} else { fprintf(stderr, "out err %s\n", output); }
|
|
free_img(oi);
|
|
} else { fprintf(stderr, "err creating img filters %d\n", i); }
|
|
}
|
|
free_img(ii);
|
|
} else { fprintf(stderr, "err reading %s\n", input); }
|
|
}
|