aboutsummaryrefslogtreecommitdiff
path: root/src/prealign.c
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-13 12:26:08 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-11-13 12:26:08 +0000
commit54b76ad76148c5cb6093ecb16ca30e92d3c7af3a (patch)
tree3fc30c4f84b3292d2624403bd4f6e19f58a0ea0b /src/prealign.c
parent047d5a36fa67856873857193daee6e962296e641 (diff)
Nicer pattern centering
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@194 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/prealign.c')
-rw-r--r--src/prealign.c29
1 files changed, 22 insertions, 7 deletions
diff --git a/src/prealign.c b/src/prealign.c
index 955ef4d..09785d2 100644
--- a/src/prealign.c
+++ b/src/prealign.c
@@ -234,7 +234,7 @@ void prealign_fine_centering(ImageList *list) {
assert(mask_x>=0);
assert(mask_y>=0);
- printf("Image %3i: centre offset by %i,%i\n", i, mask_x-list->images[i].x_centre, mask_y-list->images[i].y_centre);
+ printf("AL: Image %3i: centre offset by %i,%i\n", i, mask_x-list->images[i].x_centre, mask_y-list->images[i].y_centre);
list->images[i].x_centre = mask_x;
list->images[i].y_centre = mask_y;
@@ -253,13 +253,28 @@ void prealign_feature_centering(ImageList *list) {
for ( i=0; i<list->n_images; i++ ) {
- double d;
- ImageFeature *feature;
+ double d1, d2;
+ ImageFeature *feature1;
+ ImageFeature *feature2;
+ int idx;
+
+ feature1 = image_feature_closest(list->images[i].features, list->images[i].x_centre, list->images[i].y_centre, &d1, &idx);
+ feature2 = image_feature_second_closest(list->images[i].features, list->images[i].x_centre, list->images[i].y_centre, &d2, &idx);
+
+ printf("AL: Image %i, d1=%f, d2=%f\n", i, d1, d2);
+
+ if ( (fabs(d2-d1) <= 19.0) && feature1 && feature2 ) {
+ list->images[i].x_centre = (feature1->x + feature2->x)/2;
+ list->images[i].y_centre = (feature1->y + feature2->y)/2;
+ } else {
+ if ( feature1 ) {
+ list->images[i].x_centre = feature1->x;
+ list->images[i].y_centre = feature1->y;
+ } else {
+ printf("AL: Couldn't find centre feature for image %i\n", i);
+ }
+ }
- feature = image_feature_closest(list->images[i].features, list->images[i].x_centre, list->images[i].y_centre, &d);
- list->images[i].x_centre = feature->x;
- list->images[i].y_centre = feature->y;
-
}
}