Doxygen Source Code Documentation
imdump.c File Reference
#include <stdlib.h>
#include <string.h>
#include "mrilib.h"
Go to the source code of this file.
Functions | |
int | main (int argc, char *argv[]) |
Function Documentation
|
\** File : SUMA.c
Input paramters :
Definition at line 11 of file imdump.c. References argc, complex::i, MRI_IMAGE::kind, machdep(), mri_data_pointer(), MRI_IS_2D, mri_read_just_one(), MRI_IMAGE::nx, nxim, MRI_IMAGE::ny, nyim, and complex::r.
00012 { 00013 MRI_IMAGE *imin ; 00014 float * maskar ; 00015 int nxim , nyim , ii , npix ; 00016 00017 if( argc < 2 || strncmp(argv[1],"-help",4) == 0 ){ 00018 printf("Usage: imdump input_image\n" 00019 "* Prints out nonzero pixels in an image;\n" 00020 "* Results to stdout; redirect (with >) to save to a file;\n" 00021 "* Format: x-index y-index value, one pixel per line.\n" ) ; 00022 exit(0) ; 00023 } 00024 00025 machdep() ; 00026 00027 imin = mri_read_just_one( argv[1] ) ; 00028 if( imin == NULL ) exit(1) ; 00029 if( ! MRI_IS_2D(imin) ){ 00030 fprintf(stderr,"can only deal with 2D images!\n") ; 00031 exit(1) ; 00032 } 00033 00034 nxim = imin->nx ; 00035 nyim = imin->ny ; 00036 npix = nxim * nyim ; 00037 00038 switch( imin->kind ){ 00039 00040 default: 00041 fprintf(stderr,"Unrecognized input image type!\a\n") ; 00042 exit(1) ; 00043 00044 case MRI_byte:{ 00045 int ix,jy ; 00046 byte * arin , val ; 00047 arin = mri_data_pointer(imin) ; 00048 for( jy=0 ; jy < nyim ; jy++ ){ 00049 for( ix=0 ; ix < nxim ; ix++ ){ 00050 val = arin[ix+jy*nxim] ; 00051 if( val != 0 ) printf("%4d %4d %4d\n",ix,jy,val ) ; 00052 } } 00053 } break ; 00054 00055 case MRI_short:{ 00056 int ix,jy ; 00057 short * arin , val ; 00058 arin = mri_data_pointer(imin) ; 00059 for( jy=0 ; jy < nyim ; jy++ ){ 00060 for( ix=0 ; ix < nxim ; ix++ ){ 00061 val = arin[ix+jy*nxim] ; 00062 if( val != 0 ) printf("%4d %4d %4d\n",ix,jy,val ) ; 00063 } } 00064 } break ; 00065 00066 case MRI_float:{ 00067 int ix,jy ; 00068 float * arin , val ; 00069 arin = mri_data_pointer(imin) ; 00070 for( jy=0 ; jy < nyim ; jy++ ){ 00071 for( ix=0 ; ix < nxim ; ix++ ){ 00072 val = arin[ix+jy*nxim] ; 00073 if( val != 0 ) printf("%4d %4d %g\n",ix,jy,val ) ; 00074 } } 00075 } break ; 00076 00077 case MRI_int:{ 00078 int ix,jy ; 00079 int * arin , val ; 00080 arin = mri_data_pointer(imin) ; 00081 for( jy=0 ; jy < nyim ; jy++ ){ 00082 for( ix=0 ; ix < nxim ; ix++ ){ 00083 val = arin[ix+jy*nxim] ; 00084 if( val != 0 ) printf("%4d %4d %4d\n",ix,jy,val ) ; 00085 } } 00086 } break ; 00087 00088 case MRI_double:{ 00089 int ix,jy ; 00090 double * arin , val ; 00091 arin = mri_data_pointer(imin) ; 00092 for( jy=0 ; jy < nyim ; jy++ ){ 00093 for( ix=0 ; ix < nxim ; ix++ ){ 00094 val = arin[ix+jy*nxim] ; 00095 if( val != 0 ) printf("%4d %4d %g\n",ix,jy,val ) ; 00096 } } 00097 } break ; 00098 00099 case MRI_complex:{ 00100 int ix,jy ; 00101 complex * arin , val ; 00102 arin = mri_data_pointer(imin) ; 00103 for( jy=0 ; jy < nyim ; jy++ ){ 00104 for( ix=0 ; ix < nxim ; ix++ ){ 00105 val = arin[ix+jy*nxim] ; 00106 if( val.r != 0 || val.i != 0 ) 00107 printf("%4d %4d %g %g\n",ix,jy,val.r,val.i ) ; 00108 } } 00109 } break ; 00110 } 00111 00112 exit(0) ; 00113 } |