Doxygen Source Code Documentation
mri_entropy16.c File Reference
#include "mrilib.h"Go to the source code of this file.
| Defines | |
| #define | SNUM 65536 | 
| #define | BNUM 256 | 
| Functions | |
| double | mri_entropy16 (MRI_IMAGE *im) | 
| double | mri_entropy8 (MRI_IMAGE *im) | 
Define Documentation
| 
 | 
| 
 Definition at line 39 of file mri_entropy16.c. Referenced by mri_entropy8(). | 
| 
 | 
| 
 Definition at line 6 of file mri_entropy16.c. Referenced by mri_entropy16(). | 
Function Documentation
| 
 | 
| 
 Definition at line 8 of file mri_entropy16.c. References calloc, ENTRY, free, l, mri_data_pointer(), MRI_IMAGE::nvox, MRI_IMAGE::pixel_size, RETURN, and SNUM. Referenced by ISQ_statify_one(). 
 00009 {
00010    register int *scount , snum , ii ;
00011    register unsigned short *sar ;
00012    register double sum ;
00013 
00014 ENTRY("mri_entropy16") ;
00015 
00016    if( im == NULL ) RETURN(0.0l) ;
00017 
00018    sar = (unsigned short *) mri_data_pointer( im ) ;
00019    if( sar == NULL ) RETURN(0.0l) ;
00020 
00021    snum   = (im->nvox * im->pixel_size) / 2 ; if( snum < 2 ) RETURN(0.0l) ;
00022    scount = (int *) calloc( sizeof(int),SNUM ) ;
00023 
00024    for( ii=0 ; ii < snum ; ii++ ) scount[sar[ii]]++ ;
00025 
00026    sum = 0.0 ;
00027    for( ii=0 ; ii < SNUM ; ii++ )
00028      if( scount[ii] > 0 ) sum += scount[ii] * log((double)scount[ii]) ;
00029 
00030    free( (void *)scount ) ;
00031 
00032    sum = -(sum - snum*log((double)snum)) / ( log(2.0l) * snum ) ;
00033    RETURN(sum) ;
00034 }
 | 
| 
 | 
| 
 Definition at line 41 of file mri_entropy16.c. References bnum, BNUM, calloc, ENTRY, free, l, mri_data_pointer(), MRI_IMAGE::nvox, MRI_IMAGE::pixel_size, and RETURN. Referenced by ISQ_statify_one(). 
 00042 {
00043    register int *bcount , bnum , ii ;
00044    register byte *bar ;
00045    register double sum ;
00046 
00047 ENTRY("mri_entropy8") ;
00048 
00049    if( im == NULL ) RETURN(0.0l) ;
00050 
00051    bar = (byte *) mri_data_pointer( im ) ;
00052    if( bar == NULL ) RETURN(0.0l) ;
00053 
00054    bnum   = (im->nvox * im->pixel_size) ; if( bnum < 2 ) RETURN(0.0l) ;
00055    bcount = (int *) calloc( sizeof(int),BNUM ) ;
00056 
00057    for( ii=0 ; ii < bnum ; ii++ ) bcount[bar[ii]]++ ;
00058 
00059    sum = 0.0 ;
00060    for( ii=0 ; ii < BNUM ; ii++ )
00061      if( bcount[ii] > 0 ) sum += bcount[ii] * log((double)bcount[ii]) ;
00062 
00063    free( (void *)bcount ) ;
00064 
00065    sum = -(sum - bnum*log((double)bnum)) / ( log(2.0l) * bnum ) ;
00066    RETURN(sum) ;
00067 }
 | 
 
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
 
 
 
 
       
	   
	   
	   
	  