Skip to content

AFNI/NIfTI Server

Sections
Personal tools
You are here: Home » AFNI » Documentation

Doxygen Source Code Documentation


Main Page   Alphabetical List   Data Structures   File List   Data Fields   Globals   Search  

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

int main int    argc,
char *    argv[]
 

\** File : SUMA.c

Author:
: Ziad Saad Date : Thu Dec 27 16:21:01 EST 2001
Purpose :

Input paramters :

Parameters:
param  Usage : SUMA ( )
Returns :
Returns:
Support :
See also:
OpenGL prog. Guide 3rd edition , varray.c from book's sample code
Side effects :

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 }
 

Powered by Plone

This site conforms to the following standards: