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  

thd_dsetto3D.c File Reference

#include "mrilib.h"
#include "thd.h"

Go to the source code of this file.


Functions

MRI_IMAGETHD_extract_float_brick (int iv, THD_3dim_dataset *dset)

Function Documentation

MRI_IMAGE* THD_extract_float_brick int    iv,
THD_3dim_dataset   dset
 

Definition at line 9 of file thd_dsetto3D.c.

References CABS, DSET_ARRAY, DSET_BRICK, DSET_BRICK_FACTOR, DSET_BRICK_TYPE, DSET_NVALS, DSET_NVOX, ENTRY, MRI_FLOAT_PTR, mri_free(), mri_new_conforming, RETURN, and var.

Referenced by main().

00010 {
00011    MRI_IMAGE * im ;
00012    float * var ;
00013    register int ii , nvox ;
00014 
00015 ENTRY("THD_extract_float_brick") ;
00016 
00017    if( iv < 0 || !ISVALID_DSET(dset) || iv >= DSET_NVALS(dset) ) RETURN(NULL);
00018 
00019    im = mri_new_conforming( DSET_BRICK(dset,iv) , MRI_float ) ;
00020    var = MRI_FLOAT_PTR(im) ;
00021    nvox = DSET_NVOX(dset) ;
00022 
00023    /*-- extract/scale brick into var --*/
00024 
00025    switch( DSET_BRICK_TYPE(dset,iv) ){
00026 
00027       default:
00028          fprintf(stderr,"Can't handle sub-bricks of type %s\n",
00029                  MRI_TYPE_name[DSET_BRICK_TYPE(dset,iv)]) ;
00030          mri_free(im) ;
00031       RETURN(NULL) ;
00032 
00033       case MRI_short:{
00034          register short *dar = DSET_ARRAY(dset,iv) ;
00035          register float fac  = DSET_BRICK_FACTOR(dset,iv) ;
00036          if( fac == 0.0 ) fac = 1.0 ;
00037          for( ii=0 ; ii < nvox ; ii++ ) var[ii] = fac*dar[ii] ;
00038       }
00039       break ;
00040 
00041       case MRI_byte:{
00042          register byte  *dar = DSET_ARRAY(dset,iv) ;
00043          register float fac  = DSET_BRICK_FACTOR(dset,iv) ;
00044          if( fac == 0.0 ) fac = 1.0 ;
00045          for( ii=0 ; ii < nvox ; ii++ ) var[ii] = fac*dar[ii] ;
00046       }
00047       break ;
00048 
00049       case MRI_float:{
00050          register float *dar = DSET_ARRAY(dset,iv) ;
00051          register float fac  = DSET_BRICK_FACTOR(dset,iv) ;
00052          if( fac == 0.0 ) fac = 1.0 ;
00053          for( ii=0 ; ii < nvox ; ii++ ) var[ii] = fac*dar[ii] ;
00054       }
00055       break ;
00056 
00057       case MRI_complex:{
00058          register complex *dar = DSET_ARRAY(dset,iv) ;
00059          register float fac    = DSET_BRICK_FACTOR(dset,iv) ;
00060          if( fac == 0.0 ) fac = 1.0 ;
00061          for( ii=0 ; ii < nvox ; ii++ ) var[ii] = fac*CABS(dar[ii]) ;
00062       }
00063       break ;
00064 
00065       case MRI_int:{
00066          register int   *dar = DSET_ARRAY(dset,iv) ;
00067          register float fac  = DSET_BRICK_FACTOR(dset,iv) ;
00068          if( fac == 0.0 ) fac = 1.0 ;
00069          for( ii=0 ; ii < nvox ; ii++ ) var[ii] = fac*dar[ii] ;
00070       }
00071       break ;
00072 
00073       case MRI_double:{
00074          register double *dar = DSET_ARRAY(dset,iv) ;
00075          register float fac   = DSET_BRICK_FACTOR(dset,iv) ;
00076          if( fac == 0.0 ) fac = 1.0 ;
00077          for( ii=0 ; ii < nvox ; ii++ ) var[ii] = fac*dar[ii] ;
00078       }
00079       break ;
00080 
00081       case MRI_rgb:{
00082          register byte *dar = DSET_ARRAY(dset,iv) ;
00083          for( ii=0 ; ii < nvox ; ii++ )
00084             var[ii] = 0.299*dar[3*ii] + 0.587*dar[3*ii+1] + 0.114*dar[3*ii+2] ;
00085       }
00086    }
00087 
00088    RETURN(im) ;
00089 }
 

Powered by Plone

This site conforms to the following standards: