aboutsummaryrefslogtreecommitdiff
path: root/src/mrc.c
diff options
context:
space:
mode:
authortaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-08-19 23:13:58 +0000
committertaw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1>2007-08-19 23:13:58 +0000
commitb31565d11bcb28ca33b4a51cb363549c46444cd8 (patch)
tree59c573a21eaae8c8e82f5491d7167ff0c854ae95 /src/mrc.c
parentde770d8c43a57b1941e2f6942f75deb8c99475aa (diff)
Preparation for handing precessed data
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@65 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/mrc.c')
-rw-r--r--src/mrc.c54
1 files changed, 4 insertions, 50 deletions
diff --git a/src/mrc.c b/src/mrc.c
index b9b6efc..26a31de 100644
--- a/src/mrc.c
+++ b/src/mrc.c
@@ -15,7 +15,7 @@
#include <stdlib.h>
#include <stdio.h>
-#include <stdint.h>
+#include <inttypes.h>
#include <string.h>
#include "mrc.h"
@@ -33,11 +33,6 @@ int mrc_read(ControlContext *ctx) {
unsigned int i;
unsigned int extsize;
double pixel_size;
- int16_t *image_total;
- unsigned int x, y;
- int max_x, max_y;
- int16_t max_val;
- ImageDisplay *sum_id;
fh = fopen(ctx->filename, "rb");
@@ -68,50 +63,16 @@ int mrc_read(ControlContext *ctx) {
pixel_size = ext[0].pixel_size;
printf("pixel_size = %f m^-1\n", pixel_size);
- ctx->reflectionctx = reflection_init();
ctx->fmode = FORMULATION_PIXELSIZE;
ctx->first_image = 1;
ctx->width = mrc.nx;
ctx->height = mrc.ny;
- printf("Judging centre...");
- image_total = malloc(mrc.ny * mrc.nx * sizeof(int16_t));
- for ( y=0; y<mrc.ny; y++ ) {
- for ( x=0; x<mrc.nx; x++ ) {
- image_total[x + mrc.nx*y] = 0;
- }
- }
- for ( i=0; i<mrc.nz; i++ ) {
- int16_t *image = malloc(mrc.ny * mrc.nx * sizeof(int16_t));
- fseek(fh, mrc.next + sizeof(MRCHeader) + mrc.nx*mrc.ny*2*i, SEEK_SET);
- fread(image, mrc.nx*mrc.ny*2, 1, fh);
- for ( y=0; y<mrc.ny; y++ ) {
- for ( x=0; x<mrc.nx; x++ ) {
- image_total[x + mrc.nx*y] += image[x + mrc.nx*y]/mrc.nz;
- }
- }
- }
- sum_id = imagedisplay_open(image_total, mrc.nx, mrc.ny, "Sum of All Images");
- /* Locate the highest point */
- max_val = 0; max_x = 0; max_y = 0;
- for ( y=0; y<ctx->height; y++ ) {
- for ( x=0; x<ctx->width; x++ ) {
- if ( image_total[x + ctx->width*y] > max_val ) {
- max_val = image_total[x + ctx->width*y];
- max_x = x; max_y = y;
- }
- }
- }
- imagedisplay_mark_point(sum_id, max_x, max_y);
- ctx->x_centre = max_x;
- ctx->y_centre = max_y;
- printf("done\n");
-
for ( i=0; i<mrc.nz; i++ ) {
int16_t *image = malloc(mrc.ny * mrc.nx * sizeof(int16_t));
- printf("Image #%3i: tilt=%f omega=%f L=%f\t", i, ext[i].a_tilt, ext[i].tilt_axis, ext[i].magnification);
+ printf("Image #%3i: tilt=%f omega=%f L=%f\n", i, ext[i].a_tilt, ext[i].tilt_axis, ext[i].magnification);
ctx->camera_length = ext[i].magnification;
if ( ext[i].voltage == 0 ) {
ctx->lambda = lambda(200000);
@@ -123,15 +84,8 @@ int mrc_read(ControlContext *ctx) {
fseek(fh, mrc.next + sizeof(MRCHeader) + mrc.nx*mrc.ny*2*i, SEEK_SET);
fread(image, mrc.nx*mrc.ny*2, 1, fh);
-
- for ( y=0; y<mrc.ny; y++ ) {
- for ( x=0; x<mrc.nx; x++ ) {
- image_total[x + mrc.nx*y] += image[x + mrc.nx*y]/mrc.nz;
- }
- }
-
- itrans_process_image(image, ctx, ext[i].a_tilt);
- free(image);
+
+ control_add_image_ps(ctx, image, mrc.nx, mrc.ny, ext[i].a_tilt, ctx->omega, ctx->pixel_size);
}