Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
mri_min.c
Go to the documentation of this file.00001 #include "mrilib.h"
00002
00003
00004
00005 double mri_min( MRI_IMAGE *im )
00006 {
00007 register int ii , npix ;
00008 byte byte_min = 255 ;
00009 short short_min = 32767 ;
00010 int int_min = 2000000000 ;
00011 float float_min = 99999999.0 ;
00012 double double_min = 99999999.0 ;
00013
00014 npix = im->nvox ;
00015
00016 switch( im->kind ){
00017
00018 case MRI_byte:
00019 for( ii=0 ; ii < npix ; ii++ )
00020 byte_min = MIN( byte_min , im->im.byte_data[ii] ) ;
00021 return (double) byte_min ;
00022
00023 case MRI_short:
00024 for( ii=0 ; ii < npix ; ii++ )
00025 short_min = MIN( short_min , im->im.short_data[ii] ) ;
00026 return (double) short_min ;
00027
00028 case MRI_int:
00029 for( ii=0 ; ii < npix ; ii++ )
00030 int_min = MIN( int_min , im->im.int_data[ii] ) ;
00031 return (double) int_min ;
00032
00033 case MRI_float:
00034 for( ii=0 ; ii < npix ; ii++ )
00035 float_min = MIN( float_min , im->im.float_data[ii] ) ;
00036 return (double) float_min ;
00037
00038 case MRI_double:
00039 for( ii=0 ; ii < npix ; ii++ )
00040 double_min = MIN( double_min , im->im.double_data[ii] ) ;
00041 return double_min ;
00042
00043 case MRI_complex:
00044 for( ii=0 ; ii < npix ; ii++ )
00045 float_min = MIN( float_min , CSQR(im->im.complex_data[ii]) ) ;
00046 return sqrt(float_min) ;
00047
00048 case MRI_rgb:{
00049 byte *rgb = im->im.rgb_data ;
00050 double val , bot=255.9 ;
00051 for( ii=0 ; ii < npix ; ii++ ){
00052 val = 0.299 * rgb[3*ii]
00053 + 0.587 * rgb[3*ii+1]
00054 + 0.114 * rgb[3*ii+2] ;
00055 if( val < bot ) bot = val ;
00056 }
00057 return bot ;
00058 }
00059
00060 default:
00061 fprintf( stderr , "mri_min: unknown image kind\n" ) ;
00062 break ;
00063 }
00064 return 0 ;
00065 }