aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw27@cam.ac.uk>2008-11-05 12:25:48 +0000
committerThomas White <taw27@cam.ac.uk>2008-11-05 12:25:48 +0000
commitcd6e6ec86756756a5cbe8138c79e7d4c7bd3dc3a (patch)
treebb7bcea71b0146ff3d551184c9175a4ac73c9cb8
parent6eeb3d408255abf9330dd8c59953e5f7a960733c (diff)
Zaefferer peak search: don't duplicate reflections so much
-rw-r--r--src/image.c2
-rw-r--r--src/itrans-zaefferer.c13
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]);
+ }
}