PIPS
convol3x3.c File Reference
#include <stdio.h>
#include "tools.h"
+ Include dependency graph for convol3x3.c:

Go to the source code of this file.

Macros

#define kernel_size   3
 
#define nsteps   10
 

Functions

void convol3x3 ()
 
int main (int argc, char **argv)
 
void convol3x3 (int isi, int isj, float new_image[isi][isj], float image[isi][isj], float kernel[kernel_size][kernel_size])
 

Macro Definition Documentation

◆ kernel_size

#define kernel_size   3

Definition at line 6 of file convol3x3.c.

◆ nsteps

#define nsteps   10

Definition at line 7 of file convol3x3.c.

Function Documentation

◆ convol3x3() [1/2]

void convol3x3 ( )

Referenced by main().

+ Here is the caller graph for this function:

◆ convol3x3() [2/2]

void convol3x3 ( int  isi,
int  isj,
float  new_image[isi][isj],
float  image[isi][isj],
float  kernel[kernel_size][kernel_size] 
)

Definition at line 63 of file convol3x3.c.

65 {
66  // The convolution kernel is not applied on the outer part
67  // of the image
68 
69  int i, j;
70 
71  for(i = 0; i< isi; i++) {
72  for(j = 0; j< isj; j++) {
73  new_image[i][j] = image[i][j];
74  }
75  }
76 
77  for(i = kernel_size/2; i<isi - kernel_size/2; i++) {
78  for(j = kernel_size/2; j<isj - kernel_size/2; j++) {
79  new_image[i][j] = 0.;
80  new_image[i][j] += image[i+0-kernel_size/2][j+0-kernel_size/2]* kernel[0][0];
81  new_image[i][j] += image[i+0-kernel_size/2][j+1-kernel_size/2]* kernel[0][1];
82  new_image[i][j] += image[i+0-kernel_size/2][j+2-kernel_size/2]* kernel[0][2];
83  new_image[i][j] += image[i+1-kernel_size/2][j+0-kernel_size/2]* kernel[1][0];
84  new_image[i][j] += image[i+1-kernel_size/2][j+1-kernel_size/2]* kernel[1][1];
85  new_image[i][j] += image[i+1-kernel_size/2][j+2-kernel_size/2]* kernel[1][2];
86  new_image[i][j] += image[i+2-kernel_size/2][j+0-kernel_size/2]* kernel[2][0];
87  new_image[i][j] += image[i+2-kernel_size/2][j+1-kernel_size/2]* kernel[2][1];
88  new_image[i][j] += image[i+2-kernel_size/2][j+2-kernel_size/2]* kernel[2][2];
89  new_image[i][j] = new_image[i][j]/(kernel_size*kernel_size);
90  //new_image[i][j] = new_image[i][j]*0.111111;
91  }
92  }
93 }
#define kernel_size
Definition: convol3x3.c:6
code taken from http://fast-edge.googlecode.com and adapted to c99
Definition: erode_dilate.c:33

References kernel_size.

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 11 of file convol3x3.c.

12 {
13  int image_size;
14  float (*image)[image_size][image_size];
15  float (*new_image)[image_size][image_size];
16  float kernel[kernel_size][kernel_size];
17  int i, j, n;
18 
19  if (argc < 3)
20  {
21  fprintf(stderr, "Usage: %s image_size data_file\n", argv[0]);
22  return 1;
23  }
24  image_size = atoi(argv[1]);
25  image = malloc(sizeof(float)*image_size*image_size);
26  new_image = malloc(sizeof(float)*image_size*image_size);
27  init_data_file(argv[2]);
28  init_data_float(image, image_size*image_size);
29  init_data_float(new_image, image_size*image_size);
31 
32 
33  for( i = 0; i< kernel_size; i++) {
34  for( j = 0; j< kernel_size; j++) {
35  kernel[i][j] = 1;
36  }
37  }
38 
39  // read *, image
40  for( i = 0; i< image_size; i++) {
41  for( j = 0; j< image_size; j++)
42  (*image)[i][j] = 1.;
43  }
44 
45 
46  for( n = 0; n< nsteps; n++) {
47  convol3x3(image_size, image_size, *new_image, *image,
48  kernel);
49  }
50 
51 // for( i = 0; i< image_size; i++) {
52 // printf("%f ",(*new_image)[i][i]);
53 // }
54  free(image);
55  free(new_image);
56  // print *, new_image
57  // print *, new_image (image_size/2, image_size/2)
58  print_array_float("new_image", new_image, image_size*image_size);
59 
60  return 0;
61 }
#define nsteps
Definition: convol3x3.c:7
void convol3x3()
void * malloc(YYSIZE_T)
void free(void *)
int fprintf()
test sc_min : ce test s'appelle par : programme fichier1.data fichier2.data ...
void close_data_file()
Definition: tools.c:48
void print_array_float(const char *name, const float *arr, const unsigned int n)
Definition: tools.c:54
int init_data_float(float *ptr, const unsigned int n)
Definition: tools.c:125
void init_data_file(const char *data_file)
Definition: tools.c:36

References close_data_file(), convol3x3(), fprintf(), free(), init_data_file(), init_data_float(), kernel_size, malloc(), nsteps, and print_array_float().

+ Here is the call graph for this function: