diff options
author | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-08-28 16:07:32 +0000 |
---|---|---|
committer | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-08-28 16:07:32 +0000 |
commit | 85b8978beedd0142560573a92442a5ed907b0ed2 (patch) | |
tree | a5fb149aa94b540a568ac6c7b2831a8065e53959 /src/itrans-zaefferer.c | |
parent | 49ad910255546917c22a1d0ef01b4109c7772b16 (diff) |
Be a lot more clear about which things are properties of images and which
belong to the control context.
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@81 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/itrans-zaefferer.c')
-rw-r--r-- | src/itrans-zaefferer.c | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/src/itrans-zaefferer.c b/src/itrans-zaefferer.c index aaa8110..a096e74 100644 --- a/src/itrans-zaefferer.c +++ b/src/itrans-zaefferer.c @@ -22,24 +22,32 @@ #define PEAK_WINDOW_SIZE 20 -unsigned int itrans_peaksearch_zaefferer(int16_t *image, ControlContext *ctx, double tilt_degrees, ImageDisplay *imagedisplay) { +unsigned int itrans_peaksearch_zaefferer(ImageRecord imagerecord, ControlContext *ctx) { int x, y; unsigned int n_reflections; + int width, height; + int16_t *image; + double tilt_degrees; + + tilt_degrees = imagerecord.tilt; + image = imagerecord.image; + width = imagerecord.width; + height = imagerecord.height; n_reflections = 0; - for ( x=1; x<ctx->width-1; x++ ) { - for ( y=1; y<ctx->height-1; y++ ) { + for ( x=1; x<width-1; x++ ) { + for ( y=1; y<height-1; y++ ) { double dx1, dx2, dy1, dy2; double dxs, dys; double grad; /* Get gradients */ - dx1 = image[x+ctx->width*y] - image[(x+1)+ctx->width*y]; - dx2 = image[(x-1)+ctx->width*y] - image[x+ctx->width*y]; - dy1 = image[x+ctx->width*y] - image[(x+1)+ctx->width*(y+1)]; - dy2 = image[x+ctx->width*(y-1)] - image[x+ctx->width*y]; + dx1 = image[x+width*y] - image[(x+1)+width*y]; + dx2 = image[(x-1)+width*y] - image[x+width*y]; + dy1 = image[x+width*y] - image[(x+1)+width*(y+1)]; + dy2 = image[x+width*(y-1)] - image[x+width*y]; /* Average gradient measurements from both sides */ dxs = ((dx1*dx1) + (dx2*dx2)) / 2; @@ -59,12 +67,12 @@ unsigned int itrans_peaksearch_zaefferer(int16_t *image, ControlContext *ctx, do mask_y = y; while ( (did_something) && (distance(mask_x, mask_y, x, y)<50) ) { - max = image[mask_x+ctx->width*mask_y]; + max = image[mask_x+width*mask_y]; did_something = 0; - for ( sy=biggest(mask_y-PEAK_WINDOW_SIZE/2, 0); sy<smallest(mask_y+PEAK_WINDOW_SIZE/2, ctx->height); sy++ ) { - for ( sx=biggest(mask_x-PEAK_WINDOW_SIZE/2, 0); sx<smallest(mask_x+PEAK_WINDOW_SIZE/2, ctx->width); sx++ ) { - if ( image[sx+ctx->width*sy] > max ) { - max = image[sx+ctx->width*sy]; + for ( sy=biggest(mask_y-PEAK_WINDOW_SIZE/2, 0); sy<smallest(mask_y+PEAK_WINDOW_SIZE/2, height); sy++ ) { + for ( sx=biggest(mask_x-PEAK_WINDOW_SIZE/2, 0); sx<smallest(mask_x+PEAK_WINDOW_SIZE/2, width); sx++ ) { + if ( image[sx+width*sy] > max ) { + max = image[sx+width*sy]; mask_x = sx; mask_y = sy; did_something = 1; @@ -74,16 +82,13 @@ unsigned int itrans_peaksearch_zaefferer(int16_t *image, ControlContext *ctx, do } if ( !did_something ) { - if ( ctx->fmode == FORMULATION_PIXELSIZE ) { - reflection_add_from_reciprocal(ctx, (signed)(mask_x-ctx->x_centre)*ctx->pixel_size, - (signed)(mask_y-ctx->y_centre)*ctx->pixel_size, - tilt_degrees, image[mask_x + ctx->width*mask_y]); + if ( imagerecord.fmode == FORMULATION_PIXELSIZE ) { + reflection_add_from_reciprocal(ctx, (signed)(mask_x-imagerecord.x_centre)*imagerecord.pixel_size, + (signed)(mask_y-imagerecord.y_centre)*imagerecord.pixel_size, + tilt_degrees, image[mask_x + width*mask_y]); } else { - reflection_add_from_dp(ctx, (signed)(mask_x-ctx->x_centre), (signed)(mask_y-ctx->y_centre), - tilt_degrees, image[mask_x + ctx->width*mask_y]); - } - if ( ctx->first_image ) { - imagedisplay_mark_point(imagedisplay, mask_x, mask_y); + reflection_add_from_dp(ctx, (signed)(mask_x-imagerecord.x_centre)/imagerecord.resolution, (signed)(mask_y-imagerecord.y_centre)/imagerecord.resolution, + tilt_degrees, image[mask_x + width*mask_y]); } n_reflections++; } @@ -95,3 +100,4 @@ unsigned int itrans_peaksearch_zaefferer(int16_t *image, ControlContext *ctx, do return n_reflections; } + |