diff options
author | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-08-29 09:19:19 +0000 |
---|---|---|
committer | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-08-29 09:19:19 +0000 |
commit | 3bd37169d751c7b5f0b36847ea902735d9234e63 (patch) | |
tree | b3ff0e3cb920ef60956f7aab566f15b77cbcae55 /src | |
parent | 145d57b7282ff2f15d73367380a95d890f1fdbbb (diff) |
'Intelligently' choose threshold for simple thresholding
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@85 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src')
-rw-r--r-- | src/itrans-threshold.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/itrans-threshold.c b/src/itrans-threshold.c index 1aee5ca..69acd24 100644 --- a/src/itrans-threshold.c +++ b/src/itrans-threshold.c @@ -26,6 +26,7 @@ unsigned int itrans_peaksearch_threshold(ImageRecord imagerecord, ControlContext unsigned int n_reflections = 0; uint16_t *image = imagerecord.image; double tilt_degrees = imagerecord.tilt; + uint16_t max = 0; width = imagerecord.width; height = imagerecord.height; @@ -33,17 +34,26 @@ unsigned int itrans_peaksearch_threshold(ImageRecord imagerecord, ControlContext /* Simple Thresholding */ for ( y=0; y<height; y++ ) { for ( x=0; x<width; x++ ) { + if ( image[x + width*y] > max ) max = image[x + width*y]; + } + } - if ( image[x + width*y] > 10 ) { + for ( y=0; y<height; y++ ) { + for ( x=0; x<width; x++ ) { + if ( image[x + width*y] > max/3 ) { if ( imagerecord.fmode == FORMULATION_PIXELSIZE ) { - reflection_add_from_reciprocal(ctx, (signed)(x-imagerecord.x_centre)*imagerecord.pixel_size, (signed)(y-imagerecord.y_centre)*imagerecord.pixel_size, - tilt_degrees, image[x + width*y]); + reflection_add_from_reciprocal(ctx, + (signed)(x-imagerecord.x_centre)*imagerecord.pixel_size, + (signed)(y-imagerecord.y_centre)*imagerecord.pixel_size, + tilt_degrees, image[x + width*y]); } else { - reflection_add_from_dp(ctx, (signed)(x-imagerecord.x_centre)/imagerecord.resolution, (signed)(y-imagerecord.y_centre)/imagerecord.resolution, tilt_degrees, image[x + width*y]); + reflection_add_from_dp(ctx, + (signed)(x-imagerecord.x_centre)/imagerecord.resolution, + (signed)(y-imagerecord.y_centre)/imagerecord.resolution, + tilt_degrees, image[x + width*y]); } n_reflections++; } - } } @@ -84,10 +94,14 @@ unsigned int itrans_peaksearch_adaptive_threshold(ImageRecord imagerecord, Contr if ( max_val > 50 ) { if ( imagerecord.fmode == FORMULATION_PIXELSIZE ) { - reflection_add_from_reciprocal(ctx, (signed)(x-imagerecord.x_centre)*imagerecord.pixel_size, (signed)(y-imagerecord.y_centre)*imagerecord.pixel_size, - tilt_degrees, image[x + width*y]); + reflection_add_from_reciprocal(ctx, + (signed)(x-imagerecord.x_centre)*imagerecord.pixel_size, + (signed)(y-imagerecord.y_centre)*imagerecord.pixel_size, + tilt_degrees, image[x + width*y]); } else { - reflection_add_from_dp(ctx, (signed)(x-imagerecord.x_centre)/imagerecord.resolution, (signed)(y-imagerecord.y_centre)/imagerecord.resolution, tilt_degrees, image[x + width*y]); + reflection_add_from_dp(ctx, (signed)(x-imagerecord.x_centre)/imagerecord.resolution, + (signed)(y-imagerecord.y_centre)/imagerecord.resolution, + tilt_degrees, image[x + width*y]); } n_reflections++; |