diff options
author | Thomas White <taw27@cam.ac.uk> | 2008-11-05 12:25:48 +0000 |
---|---|---|
committer | Thomas White <taw27@cam.ac.uk> | 2008-11-05 12:25:48 +0000 |
commit | cd6e6ec86756756a5cbe8138c79e7d4c7bd3dc3a (patch) | |
tree | bb7bcea71b0146ff3d551184c9175a4ac73c9cb8 | |
parent | 6eeb3d408255abf9330dd8c59953e5f7a960733c (diff) |
Zaefferer peak search: don't duplicate reflections so much
-rw-r--r-- | src/image.c | 2 | ||||
-rw-r--r-- | src/itrans-zaefferer.c | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/image.c b/src/image.c index d8bba0c..800ea72 100644 --- a/src/image.c +++ b/src/image.c @@ -9,6 +9,7 @@ * */ +#define _GNU_SOURCE 1 #include <stdlib.h> #include <assert.h> #include <math.h> @@ -140,6 +141,7 @@ ImageFeature *image_feature_closest(ImageFeatureList *flist, double x, double y, return &flist->features[closest]; } + *d = +INFINITY; return NULL; } diff --git a/src/itrans-zaefferer.c b/src/itrans-zaefferer.c index f0eec9e..69d2566 100644 --- a/src/itrans-zaefferer.c +++ b/src/itrans-zaefferer.c @@ -92,12 +92,21 @@ ImageFeatureList *itrans_peaksearch_zaefferer(ImageRecord *imagerecord) { if ( !did_something ) { + double d; + int idx; + assert(mask_x<width); assert(mask_y<height); assert(mask_x>=0); assert(mask_y>=0); - image_add_feature(flist, mask_x, mask_y, imagerecord, - image[mask_x + width*mask_y]); + + /* Check for a feature at exactly the same coordinates */ + image_feature_closest(flist, mask_x, mask_y, &d, &idx); + + if ( d > 1.0 ) { + image_add_feature(flist, mask_x, mask_y, imagerecord, + image[mask_x + width*mask_y]); + } } |