-
Notifications
You must be signed in to change notification settings - Fork 1
/
gradient_x.c
67 lines (56 loc) · 1.05 KB
/
gradient_x.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "header.h"
#include "proto.h"
void gradient_x(
int width,
int height,
double *image,
double *gradient
)
{
int i;
int j;
double I;
double I_left;
double I_right;
int ind;
int ind_left;
int ind_right;
int j_left;
int j_right;
for ( i= 0 ; i< height ; i++ ) {
/*
Let's take care of left most pixel
*/
j= 0;
ind= i*width+j;
I= image[ind];
j_right= j+1;
ind_right= i*width+j_right;
I_right= image[ind_right];
gradient[ind]= (I_right-I)/1;
/*
General case
*/
for ( j= 1 ; j< width-1 ; j++ ) {
ind= i*width+j;
I= image[ind];
j_right= j+1;
ind_right= i*width+j_right;
I_right= image[ind_right];
j_left= j-1;
ind_left= i*width+j_left;
I_left= image[ind_left];
gradient[ind]= (I_right-I_left)/2;
}
/*
Let's take care of right most pixel
*/
j= width-1;
ind= i*width+j;
I= image[ind];
j_left= j-1;
ind_left= i*width+j_left;
I_left= image[ind_left];
gradient[ind]= (I-I_left)/1;
}
}