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_edit.c File Reference

#include "mrilib.h"

Go to the source code of this file.


Functions

MRI_IMAGEmri_edit_image (float pthr, float power, MRI_IMAGE *imin)

Function Documentation

MRI_IMAGE* mri_edit_image float    pthr,
float    power,
MRI_IMAGE   imin
 

Definition at line 17 of file mri_edit.c.

References ENTRY, fa, MAX, MRI_COPY_AUX, mri_data_pointer(), mri_max(), mri_min(), mri_to_float(), MRI_IMAGE::nvox, and RETURN.

Referenced by ISQ_process_mri().

00018 {
00019    int ii , npix , nsum ;
00020    float val ;
00021    MRI_IMAGE *imqq ;
00022    float *flin ;
00023 
00024 ENTRY("mri_edit_image") ;
00025 
00026    imqq = mri_to_float( imin ) ;
00027    flin = mri_data_pointer( imqq ) ;
00028    npix = imqq->nvox ;
00029 
00030    if( (power==0.0 || power==1.0) && (pthr==0.0) ) RETURN(imqq) ;
00031 
00032    if( pthr > 0.0 && pthr < 1.0 ){
00033       register float sum , fa , scl,fmax ;
00034       register int nsum ;
00035 
00036       fmax = fabs(mri_max(imqq)) ;
00037       val  = fabs(mri_min(imqq)) ;
00038       fmax = MAX(fmax,val) ;
00039       val  = pthr * fmax ;           /* average pixels > pthr * max */
00040       sum  = 0.0 ;
00041       nsum = 0 ;
00042 
00043       for( ii=0 ; ii < npix ; ii++ ){
00044          fa = flin[ii] = fabs(flin[ii]) ;
00045          if( fa > val ){ sum += fa ; nsum++ ; }
00046       }
00047       val = pthr * sum / nsum ;    /* set threshold based on this */
00048 
00049 #ifdef HARD_THRESH
00050       for( ii=0 ; ii < npix ; ii++ ) if(flin[ii] < val) flin[ii] = 0.0 ;
00051 #else
00052       scl = fmax / (fmax-val) ;
00053       for( ii=0 ; ii < npix ; ii++ ){
00054          fa = flin[ii] ;
00055          flin[ii] = (fa < val) ? (0.0) : (scl*(fa-val)) ;
00056       }
00057 #endif
00058    }  /* end of if(pthr) */
00059 
00060    if( power != 0.0 && power != 1.0 ){
00061      for( ii=0 ; ii < npix ; ii++ ) flin[ii] = pow( fabs(flin[ii]) , power ) ;
00062    }
00063 
00064    MRI_COPY_AUX(imqq,imin) ;
00065    RETURN(imqq) ;
00066 }
 

Powered by Plone

This site conforms to the following standards: