Doxygen Source Code Documentation
makewt.c File Reference
#include "mrilib.h"
#include <string.h>
Go to the source code of this file.
Functions | |
int | main (int argc, char *argv[]) |
Function Documentation
|
\** File : SUMA.c
Input paramters :
Definition at line 4 of file makewt.c. References argc, MRI_IMAGE::kind, MRI_FLOAT_PTR, mri_free(), mri_maxabs(), mri_new(), mri_read_just_one(), mri_to_float(), mri_write(), MRI_IMAGE::nvox, MRI_IMAGE::nx, MRI_IMAGE::ny, and SQR.
00005 { 00006 MRI_IMAGE * imbar , * imsdev , * imwt ; 00007 int ii , nvox , nsum ; 00008 float * bar , * sdev , * wt ; 00009 float bmax , smax , bcut , scl , bsum ; 00010 float hist[11] ; 00011 00012 if( argc < 4 ){ 00013 printf("Usage: %s mean_image sdev_image wt_image\n",argv[0]) ; 00014 exit(0) ; 00015 } 00016 00017 imbar = mri_read_just_one( argv[1] ) ; if( imbar == NULL ) exit(1) ; 00018 imsdev = mri_read_just_one( argv[2] ) ; if( imsdev== NULL ) exit(1) ; 00019 00020 if( imbar->kind != MRI_float ){ 00021 imwt = mri_to_float(imbar) ; mri_free(imbar) ; imbar = imwt ; 00022 } 00023 00024 if( imsdev->kind != MRI_float ){ 00025 imwt = mri_to_float(imsdev) ; mri_free(imsdev) ; imsdev = imwt ; 00026 } 00027 00028 nvox = imbar->nvox ; 00029 imwt = mri_new( imbar->nx , imbar->ny , MRI_float ) ; 00030 00031 bar = MRI_FLOAT_PTR(imbar) ; 00032 sdev = MRI_FLOAT_PTR(imsdev) ; 00033 wt = MRI_FLOAT_PTR(imwt) ; 00034 00035 bcut = 0.05 * mri_maxabs(imbar) ; bsum = 0.0 ; nsum = 0 ; 00036 for( ii=0 ; ii < nvox ; ii++ ){ 00037 if( bar[ii] > bcut ){ bsum += bar[ii] ; nsum++ ; } 00038 } 00039 bcut = 0.25 * bsum / nsum ; 00040 00041 smax = mri_maxabs(imsdev) ; scl = 0.25 * bcut*bcut ; 00042 00043 printf("cutoff value = %f\n",bcut) ; 00044 00045 for( ii=0 ; ii < nvox ; ii++ ){ 00046 if( bar[ii] < bcut || sdev[ii] <= 0.0 ) wt[ii] = 0.0 ; 00047 else wt[ii] = scl / SQR(sdev[ii]) ; 00048 } 00049 00050 mri_write( argv[3] , imwt ) ; 00051 exit(0) ; 00052 } |