Doxygen Source Code Documentation
mri_get_cmass.c File Reference
#include "mrilib.h"Go to the source code of this file.
Functions | |
| void | mri_get_cmass_2D (MRI_IMAGE *im, float *xcm, float *ycm) |
| void | mri_get_cmass_3D (MRI_IMAGE *im, float *xcm, float *ycm, float *zcm) |
Function Documentation
|
||||||||||||||||
|
not 7D SAFE * Definition at line 11 of file mri_get_cmass.c. References ENTRY, far, MRI_IMAGE::kind, MRI_FLOAT_PTR, mri_free(), mri_to_float(), MRI_IMAGE::nx, and MRI_IMAGE::ny. Referenced by main().
00012 {
00013 int ii,jj,joff , nx,ny ;
00014 float xx , yy , sum , val , *far ;
00015 MRI_IMAGE *flim ;
00016
00017 ENTRY("mri_get_cmass_2D") ;
00018
00019 if( im == NULL || xcm == NULL || ycm == NULL ) EXRETURN ;
00020
00021 if( im->kind != MRI_float ) flim = mri_to_float( im ) ;
00022 else flim = im ;
00023
00024 far = MRI_FLOAT_PTR(flim) ;
00025 nx = im->nx ; ny = im->ny ;
00026
00027 sum = xx = yy = 0.0 ;
00028 for( jj=0 ; jj < ny ; jj++ ){
00029 joff = jj * nx ;
00030 for( ii=0 ; ii < nx ; ii++ ){
00031 val = fabs(far[ii+joff]) ;
00032 sum += val ;
00033 xx += val * ii ;
00034 yy += val * jj ;
00035 }
00036 }
00037
00038 if( sum > 0.0 ){ xx /= sum ; yy /= sum ; }
00039
00040 if( flim != im ) mri_free(flim) ;
00041
00042 *xcm = xx ; *ycm = yy ; EXRETURN ;
00043 }
|
|
||||||||||||||||||||
|
Definition at line 47 of file mri_get_cmass.c. References ENTRY, far, MRI_IMAGE::kind, MRI_FLOAT_PTR, mri_free(), mri_to_float(), MRI_IMAGE::nx, MRI_IMAGE::ny, nz, and MRI_IMAGE::nz. Referenced by THD_cmass().
00048 {
00049 int ii,jj,kk,koff,joff , nx,ny,nz,nxy ;
00050 float xx,yy,zz , sum , val , *far ;
00051 MRI_IMAGE *flim ;
00052
00053 ENTRY("mri_get_cmass_3D") ;
00054
00055 if( im == NULL || xcm == NULL || ycm == NULL || zcm == NULL ) EXRETURN ;
00056
00057 if( im->kind != MRI_float ) flim = mri_to_float( im ) ;
00058 else flim = im ;
00059
00060 far = MRI_FLOAT_PTR(flim) ;
00061 nx = im->nx ; ny = im->ny ; nz = im->nz ; nxy = nx*ny ;
00062
00063 sum = xx = yy = zz = 0.0 ;
00064 for( kk=0 ; kk < nz ; kk++ ){
00065 koff = kk * nxy ;
00066 for( jj=0 ; jj < ny ; jj++ ){
00067 joff = koff + jj * nx ;
00068 for( ii=0 ; ii < nx ; ii++ ){
00069 val = fabs(far[ii+joff]) ;
00070 sum += val ;
00071 xx += val * ii ;
00072 yy += val * jj ;
00073 zz += val * kk ;
00074 }
00075 }
00076 }
00077
00078 if( sum > 0.0 ){ xx /= sum ; yy /= sum ; zz /= sum ; }
00079 else { xx = 0.5*(nx-1); yy=0.5*(ny-1); zz=0.5*(nz-1); }
00080
00081 if( flim != im ) mri_free(flim) ;
00082
00083 *xcm = xx ; *ycm = yy ; *zcm = zz ; EXRETURN ;
00084 }
|