diff options
author | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-08-28 21:39:35 +0000 |
---|---|---|
committer | taw27 <taw27@bf6ca9ba-c028-0410-8290-897cf20841d1> | 2007-08-28 21:39:35 +0000 |
commit | 50a75cc5458ba553f5cdcede6c9699f7a0347377 (patch) | |
tree | 993e70c4dc75885a3f207ba79b71a22c4d3aee66 /src/mrc.c | |
parent | 85b8978beedd0142560573a92442a5ed907b0ed2 (diff) |
Use unsigned types for image storage
git-svn-id: svn://cook.msm.cam.ac.uk:745/diff-tomo/dtr@82 bf6ca9ba-c028-0410-8290-897cf20841d1
Diffstat (limited to 'src/mrc.c')
-rw-r--r-- | src/mrc.c | 16 |
1 files changed, 13 insertions, 3 deletions
@@ -33,6 +33,7 @@ int mrc_read(ControlContext *ctx) { unsigned int i; unsigned int extsize; double pixel_size; + int x, y; fh = fopen(ctx->filename, "rb"); @@ -40,7 +41,7 @@ int mrc_read(ControlContext *ctx) { fread(&mrc, sizeof(MRCHeader), 1, fh); printf("%i images in series\n", mrc.nz); if ( mrc.mode != 1 ) { - fprintf(stderr, "MR: Unknown MRC image mode\n"); + fprintf(stderr, "MR: Unknown MRC image mode (must be 16-bit signed)\n"); fclose(fh); return -1; } @@ -67,7 +68,8 @@ int mrc_read(ControlContext *ctx) { for ( i=0; i<mrc.nz; i++ ) { - int16_t *image = malloc(mrc.ny * mrc.nx * sizeof(int16_t)); + int16_t *image = malloc(mrc.ny * mrc.nx * sizeof(uint16_t)); + uint16_t *uimage = malloc(mrc.ny * mrc.nx * sizeof(uint16_t)); 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; @@ -82,7 +84,15 @@ 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); - control_add_image(ctx, image, mrc.nx, mrc.ny, ext[i].a_tilt); + for ( x=0; x<mrc.nx; x++ ) { + for ( y=0; y<mrc.ny; y++ ) { + uimage[x + mrc.nx*y] = image[x + mrc.nx*y] + 32767; + if ( uimage[x + mrc.nx*y] < 10 ) printf("%i\n", uimage[x + mrc.nx*y]); + } + } + free(image); + + control_add_image(ctx, uimage, mrc.nx, mrc.ny, ext[i].a_tilt); } |