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  

mri_to_float.c File Reference

#include "mrilib.h"

Go to the source code of this file.


Defines

#define FAC(q)   ( (fac[q] != 0.0) ? fac[q] : 1.0 )

Functions

MRI_IMAGEmri_to_float (MRI_IMAGE *oldim)
MRI_IMAGEmri_scale_to_float (float scl, MRI_IMAGE *oldim)
MRI_IMAGEmri_mult_to_float (float *fac, MRI_IMAGE *oldim)

Define Documentation

#define FAC q       ( (fac[q] != 0.0) ? fac[q] : 1.0 )
 

Definition at line 161 of file mri_to_float.c.

Referenced by mri_mult_to_float(), and THD_insert_series().


Function Documentation

MRI_IMAGE* mri_mult_to_float float *    fac,
MRI_IMAGE   oldim
 

Definition at line 163 of file mri_to_float.c.

References MRI_DATA::byte_data, CABS, MRI_DATA::complex_data, MRI_DATA::double_data, ENTRY, FAC, MRI_DATA::float_data, MRI_IMAGE::im, MRI_DATA::int_data, MRI_IMAGE::kind, MRI_COPY_AUX, MRI_FATAL_ERROR, mri_new_conforming, MRI_IMAGE::nvox, RETURN, and MRI_DATA::short_data.

Referenced by FD_brick_to_series(), and THD_extract_many_series().

00164 {
00165    MRI_IMAGE *newim ;
00166    register int ii , npix ;
00167 
00168 ENTRY("mri_mult_to_float") ;
00169 
00170    newim = mri_new_conforming( oldim , MRI_float ) ;
00171    npix  = oldim->nvox ;
00172 
00173    switch( oldim->kind ){
00174 
00175       case MRI_byte:
00176          for( ii=0 ; ii < npix ; ii++ )
00177             newim->im.float_data[ii] = FAC(ii) * oldim->im.byte_data[ii] ;
00178          break ;
00179 
00180       case MRI_short:
00181          for( ii=0 ; ii < npix ; ii++ )
00182             newim->im.float_data[ii] = FAC(ii) * oldim->im.short_data[ii] ;
00183          break ;
00184 
00185       case MRI_int:
00186          for( ii=0 ; ii < npix ; ii++ )
00187             newim->im.float_data[ii] = FAC(ii) * oldim->im.int_data[ii] ;
00188          break ;
00189 
00190       case MRI_float:
00191          for( ii=0 ; ii < npix ; ii++ )
00192             newim->im.float_data[ii] = FAC(ii) * oldim->im.float_data[ii] ;
00193          break ;
00194 
00195       case MRI_double:
00196          for( ii=0 ; ii < npix ; ii++ )
00197             newim->im.float_data[ii] = FAC(ii) * oldim->im.double_data[ii] ;
00198          break ;
00199 
00200       case MRI_complex:
00201          for( ii=0 ; ii < npix ; ii++ )
00202             newim->im.float_data[ii] = FAC(ii) * CABS(oldim->im.complex_data[ii]) ;
00203          break ;
00204 
00205       default:
00206          fprintf( stderr , "mri_to_float:  unrecognized image kind\n" ) ;
00207          MRI_FATAL_ERROR ;
00208    }
00209 
00210    MRI_COPY_AUX(newim,oldim) ;
00211    RETURN( newim );
00212 }

MRI_IMAGE* mri_scale_to_float float    scl,
MRI_IMAGE   oldim
 

Definition at line 84 of file mri_to_float.c.

References MRI_DATA::byte_data, CABS, MRI_DATA::complex_data, MRI_DATA::double_data, ENTRY, far, MRI_DATA::float_data, MRI_IMAGE::im, MRI_DATA::int_data, MRI_IMAGE::kind, MRI_COPY_AUX, MRI_FATAL_ERROR, MRI_FLOAT_PTR, mri_new_conforming, MRI_RGB_PTR, MRI_RGBA_PTR, MRI_IMAGE::nvox, RETURN, and MRI_DATA::short_data.

Referenced by AFNI_dataset_slice(), FD_brick_to_mri(), main(), mri_to_mri_scl(), PH_loadim(), plot_image_surface(), THD_mean_brick(), THD_median_brick(), THD_rms_brick(), and THD_warp3D().

00085 {
00086    MRI_IMAGE *newim ;
00087    register int ii , npix ;
00088    register float fac ;
00089 
00090 ENTRY("mri_scale_to_float") ;
00091 
00092    if( oldim == NULL ) RETURN( NULL );  /* 09 Feb 1999 */
00093 
00094    fac   = scl ; if( fac == 0.0 ) fac = 1.0 ;
00095    newim = mri_new_conforming( oldim , MRI_float ) ;
00096    npix  = oldim->nvox ;
00097 
00098    switch( oldim->kind ){
00099 
00100       case MRI_byte:
00101          for( ii=0 ; ii < npix ; ii++ )
00102             newim->im.float_data[ii] = fac * oldim->im.byte_data[ii] ;
00103          break ;
00104 
00105       case MRI_short:
00106          for( ii=0 ; ii < npix ; ii++ )
00107             newim->im.float_data[ii] = fac * oldim->im.short_data[ii] ;
00108          break ;
00109 
00110       case MRI_int:
00111          for( ii=0 ; ii < npix ; ii++ )
00112             newim->im.float_data[ii] = fac * oldim->im.int_data[ii] ;
00113          break ;
00114 
00115       case MRI_float:
00116          for( ii=0 ; ii < npix ; ii++ )
00117             newim->im.float_data[ii] = fac * oldim->im.float_data[ii] ;
00118          break ;
00119 
00120       case MRI_double:
00121          for( ii=0 ; ii < npix ; ii++ )
00122             newim->im.float_data[ii] = fac * oldim->im.double_data[ii] ;
00123          break ;
00124 
00125       case MRI_complex:
00126          for( ii=0 ; ii < npix ; ii++ )
00127             newim->im.float_data[ii] = fac * CABS(oldim->im.complex_data[ii]) ;
00128          break ;
00129 
00130       case MRI_rgb:{
00131          byte  * rgb = MRI_RGB_PTR(oldim) ;
00132          float * far = MRI_FLOAT_PTR(newim) ;
00133          for( ii=0 ; ii < npix ; ii++ )
00134             far[ii] =  fac*(  0.299 * rgb[3*ii]
00135                             + 0.587 * rgb[3*ii+1]
00136                             + 0.114 * rgb[3*ii+2] ) ;
00137       }
00138       break ;
00139 
00140       case MRI_rgba:{
00141          byte  * rgb = (byte *) MRI_RGBA_PTR(oldim) ;
00142          float * far = MRI_FLOAT_PTR(newim) ;
00143          for( ii=0 ; ii < npix ; ii++ )
00144             far[ii] = fac *(  0.299 * rgb[4*ii]
00145                             + 0.587 * rgb[4*ii+1]
00146                             + 0.114 * rgb[4*ii+2] ) ;
00147       }
00148       break ;
00149 
00150       default:
00151          fprintf( stderr , "mri_to_float:  unrecognized image kind %d\n",oldim->kind ) ;
00152          MRI_FATAL_ERROR ;
00153    }
00154 
00155    MRI_COPY_AUX(newim,oldim) ;
00156    RETURN( newim );
00157 }

MRI_IMAGE* mri_to_float MRI_IMAGE   oldim
 

Definition at line 11 of file mri_to_float.c.

References MRI_DATA::byte_data, CABS, MRI_DATA::complex_data, MRI_DATA::double_data, ENTRY, far, MRI_DATA::float_data, MRI_IMAGE::im, MRI_DATA::int_data, MRI_IMAGE::kind, MRI_COPY_AUX, MRI_FATAL_ERROR, MRI_FLOAT_PTR, mri_new_conforming, MRI_RGB_PTR, MRI_RGBA_PTR, MRI_IMAGE::nvox, RETURN, and MRI_DATA::short_data.

Referenced by AFNI_func_overlay(), AFNI_gra_send_CB(), avg_epochs(), CORREL_main(), FTOSH_getopts(), get_line_opt(), GRA_opt_CB(), GRA_pick_xaxis_CB(), ISQ_getimage(), ISQ_process_mri(), main(), mri_2dalign_one(), mri_2dalign_setup(), mri_3dalign_one(), mri_3dalign_setup(), mri_affine_bicubic(), mri_align_dfspace(), MRI_autobbox(), mri_automask_image(), mri_automask_imarr(), mri_dup2D(), mri_edit_image(), mri_filt_fft(), mri_flatten(), mri_flatten_rgb(), mri_get_cmass_2D(), mri_get_cmass_3D(), mri_histogram(), mri_lsqfit(), mri_medianfilter(), mri_pair_to_complex(), mri_percents(), mri_quantile(), mri_read3D_analyze75(), mri_read_analyze75(), mri_rgb_transform_nD(), mri_rota(), mri_rota_bilinear(), mri_rota_shear(), mri_sharpen(), mri_sharpen_rgb(), mri_shift2D_bilinear(), mri_shift_1D(), mri_sobel(), mri_stat_seq(), mri_to_mri(), mri_warp3d_align_one(), mri_warp3D_align_setup(), mri_warp3D_cubic(), mri_warp3D_linear(), mri_warp3D_NN(), mri_warp3D_quintic(), mri_warp_bicubic(), mri_warp_bilinear(), plot_graphs(), plot_image_surface(), PLUTO_register_timeseries(), process_NIML_MRI_IMAGE(), REG_command_line(), T3D_read_images(), text_graphs(), TFIM_getopts(), THD_cmass(), THD_extract_many_series(), UC_read_opts(), VL_command_line(), and VOLREG_main().

00012 {
00013    MRI_IMAGE *newim ;
00014    register int ii , npix ;
00015 
00016 ENTRY("mri_to_float") ;
00017 
00018    if( oldim == NULL ) RETURN( NULL ) ;  /* 09 Feb 1999 */
00019 
00020    newim = mri_new_conforming( oldim , MRI_float ) ;
00021    npix  = oldim->nvox ;
00022 
00023    switch( oldim->kind ){
00024 
00025       case MRI_byte:
00026          for( ii=0 ; ii < npix ; ii++ )
00027             newim->im.float_data[ii] = oldim->im.byte_data[ii] ;
00028       break ;
00029 
00030       case MRI_short:
00031          for( ii=0 ; ii < npix ; ii++ )
00032             newim->im.float_data[ii] = oldim->im.short_data[ii] ;
00033       break ;
00034 
00035       case MRI_int:
00036          for( ii=0 ; ii < npix ; ii++ )
00037             newim->im.float_data[ii] = oldim->im.int_data[ii] ;
00038       break ;
00039 
00040       case MRI_float:
00041          (void) memcpy( newim->im.float_data ,
00042                         oldim->im.float_data , sizeof(float) * npix ) ;
00043       break ;
00044 
00045       case MRI_double:
00046          for( ii=0 ; ii < npix ; ii++ )
00047             newim->im.float_data[ii] = oldim->im.double_data[ii] ;
00048       break ;
00049 
00050       case MRI_complex:
00051          for( ii=0 ; ii < npix ; ii++ )
00052             newim->im.float_data[ii] = CABS(oldim->im.complex_data[ii]) ;
00053       break ;
00054 
00055       case MRI_rgb:{                          /* 11 Feb 1999 */
00056          byte  * rgb = MRI_RGB_PTR(oldim) ;
00057          float * far = MRI_FLOAT_PTR(newim) ;
00058          for( ii=0 ; ii < npix ; ii++ )       /* scale to brightness */
00059             far[ii] =  0.299 * rgb[3*ii]      /* between 0 and 255     */
00060                      + 0.587 * rgb[3*ii+1]
00061                      + 0.114 * rgb[3*ii+2] ;
00062       }
00063       break ;
00064 
00065       case MRI_rgba:{                         /* 15 Apr 2002 */
00066          byte  * rgb = (byte *) MRI_RGBA_PTR(oldim) ;
00067          float * far = MRI_FLOAT_PTR(newim) ;
00068          for( ii=0 ; ii < npix ; ii++ )       /* scale to brightness */
00069             far[ii] =  0.299 * rgb[4*ii]      /* between 0 and 255     */
00070                      + 0.587 * rgb[4*ii+1]
00071                      + 0.114 * rgb[4*ii+2] ;
00072       }
00073       break ;
00074 
00075       default:
00076          fprintf( stderr , "mri_to_float:  unrecognized image kind %d\n",oldim->kind ) ;
00077          MRI_FATAL_ERROR ;
00078    }
00079 
00080    MRI_COPY_AUX(newim,oldim) ;
00081    RETURN( newim );
00082 }
 

Powered by Plone

This site conforms to the following standards: