patches 70* and 80*
| Newsgroups | gmane.comp.gnu.gift.general |
|---|---|
| Message-ID | <[email protected]> |
I send this mail just to show the list what was just commited. functionally, these patches should be identical to the 70* and 80* patches i submitted almost a month ago. Julia Longtin <[email protected]> _______________________________________________ help-GIFT mailing list [email protected] http://lists.gnu.org/mailman/listinfo/help-gift
70-ChangeLog
(text/plain, 380 B)
--- ../../dev2/gift/ChangeLog 2006-09-19 20:03:22.000000000 +0000 +++ ChangeLog 2006-09-19 20:10:30.000000000 +0000 @@ -1,3 +1,8 @@ +2006-09-19 <[email protected]> + + * FeatureExtraction/gabor.c + remove int32_t t_x, replace with uint32_t k. uint32_t is slightly faster, and simplifies the inner loops. + 2006-09-15 <[email protected]> * FeatureExtraction/gabor.c
70-FeatureExtraction_gabor_c_remove_t_x_add_k.patch
(text/plain, 2.9 KB)
--- ../../dev2/gift/FeatureExtraction/gabor.c 2006-09-19 20:03:22.000000000 +0000
+++ FeatureExtraction/gabor.c 2006-09-19 21:07:28.000000000 +0000
@@ -86,30 +86,33 @@
void gabor_filter(double *image, int width, int height, int filter_scale, int orientation, double **kernelsxy, double *output) {
uint32_t x, y;
- int32_t t_x, t_y;
+ int32_t t_y;
uint32_t i;
+ uint32_t k;
double * target_kernal;
double conv[MAX_WIDTH*MAX_HEIGHT]; /* take advantage of our fixed image size. */
+ double * target_conv;
+ double * target_image;
memset(&conv, 0, MAX_WIDTH*MAX_HEIGHT*sizeof(double));
-
- target_kernal=kernelsxy[filter_scale*num_gabors_per_scale+orientation];
+ memset(output, 0, MAX_WIDTH*MAX_HEIGHT*sizeof(double));
/* first convolution */
+ target_kernal=kernelsxy[filter_scale*num_gabors_per_scale+orientation];
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
- output[y*width + x] = 0; /* might as well be here */
- for (t_x = -kernal_size[filter_scale]/2; t_x <= kernal_size[filter_scale]/2; t_x++) {
- if (((x - t_x) >= 0) && ((x - t_x) < width)) {
+ target_image=&image[(width*height)-(y*width+x+kernal_size[filter_scale]/2)];
+ for (k=0; k < kernal_size[filter_scale]; k++) {
+ if ((x+kernal_size[filter_scale]/2 >= k) && (x+kernal_size[filter_scale]/2 < width+k)) {
conv[y*width + x] +=
- target_kernal[t_x + kernal_size[filter_scale]/2]*image[65536-(y*width+ (x - t_x))];
+ target_kernal[k]*target_image[k];
}
}
}
}
- target_kernal=&target_kernal[kernal_size[filter_scale]];
/* second convolution */
+ target_kernal=&target_kernal[kernal_size[filter_scale]];
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
for (t_y = -kernal_size[filter_scale]/2; t_y <= kernal_size[filter_scale]/2; t_y++) {
@@ -123,21 +126,22 @@
for (i = 0; i < width*height; i++)
conv[i] = 0;
- target_kernal=&target_kernal[kernal_size[filter_scale]];
/* third convolution */
+ target_kernal=&target_kernal[kernal_size[filter_scale]];
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
- for (t_x = -kernal_size[filter_scale]/2; t_x <= kernal_size[filter_scale]/2; t_x++) {
- if (((x - t_x) >= 0) && ((x - t_x) < width)) {
+ target_image=&image[(width*height)-(y*width+x+kernal_size[filter_scale]/2)];
+ for (k=0; k < kernal_size[filter_scale]; k++) {
+ if ((x+kernal_size[filter_scale]/2 >= k) && (x+kernal_size[filter_scale]/2 < width+k)) {
conv[y*width + x] +=
- target_kernal[t_x + kernal_size[filter_scale]/2]*image[65536-(y*width + (x - t_x))];
+ target_kernal[k]*target_image[k];
}
}
}
}
- target_kernal=&target_kernal[kernal_size[filter_scale]];
/* fourth convolution */
+ target_kernal=&target_kernal[kernal_size[filter_scale]];
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
for (t_y = -kernal_size[filter_scale]/2; t_y <= kernal_size[filter_scale]/2; t_y++) {
80-ChangeLog
(text/plain, 344 B)
--- ../../dev2/gift/ChangeLog 2006-09-19 21:18:19.000000000 +0000 +++ ChangeLog 2006-09-19 21:26:28.000000000 +0000 @@ -1,3 +1,8 @@ +2006-09-19 <[email protected]> + + * FeatureExtraction/gabor.c + move a conditional outside of the inner loops, for iteration 1 and 3. + 2006-09-19 <[email protected]> * FeatureExtraction/gabor.c
80-FeatureExtraction_gabor_c_move_conditional_and_parallelize.patch
(text/plain, 1.9 KB)
--- ../../dev2/gift/FeatureExtraction/gabor.c 2006-09-19 21:18:23.000000000 +0000
+++ FeatureExtraction/gabor.c 2006-09-19 21:21:39.000000000 +0000
@@ -93,6 +93,7 @@
double conv[MAX_WIDTH*MAX_HEIGHT]; /* take advantage of our fixed image size. */
double * target_conv;
double * target_image;
+ double temparray[kernal_size[2]];
memset(&conv, 0, MAX_WIDTH*MAX_HEIGHT*sizeof(double));
memset(output, 0, MAX_WIDTH*MAX_HEIGHT*sizeof(double));
@@ -102,12 +103,22 @@
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
target_image=&image[(width*height)-(y*width+x+kernal_size[filter_scale]/2)];
+ if ((x>=kernal_size[filter_scale]/2) && ((x+kernal_size[filter_scale]/2)<width))
+ {
+ for (k = 0; k < kernal_size[filter_scale]; k++)
+ temparray[k]= target_kernal[k]*target_image[k];
+ for (k = 0; k < kernal_size[filter_scale]; k++)
+ conv[y*width+x] += temparray[k];
+ }
+ else
+ {
for (k=0; k < kernal_size[filter_scale]; k++) {
if ((x+kernal_size[filter_scale]/2 >= k) && (x+kernal_size[filter_scale]/2 < width+k)) {
conv[y*width + x] +=
target_kernal[k]*target_image[k];
}
}
+ }
}
}
@@ -131,12 +142,22 @@
for (x = 0; x < width; x++) {
for (y = 0; y < height; y++) {
target_image=&image[(width*height)-(y*width+x+kernal_size[filter_scale]/2)];
+ if ((x>=kernal_size[filter_scale]/2) && ((x+kernal_size[filter_scale]/2)<width))
+ {
+ for (k = 0; k < kernal_size[filter_scale]; k++)
+ temparray[k]= target_kernal[k]*target_image[k];
+ for (k = 0; k < kernal_size[filter_scale]; k++)
+ conv[y*width+x] += temparray[k];
+ }
+ else
+ {
for (k=0; k < kernal_size[filter_scale]; k++) {
if ((x+kernal_size[filter_scale]/2 >= k) && (x+kernal_size[filter_scale]/2 < width+k)) {
conv[y*width + x] +=
target_kernal[k]*target_image[k];
}
}
+ }
}
}