Doxygen Source Code Documentation
Main Page Alphabetical List Data Structures File List Data Fields Globals Search
imdump.c
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007 #include <stdlib.h>
00008 #include <string.h>
00009 #include "mrilib.h"
00010
00011 int main( int argc , char * argv[] )
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 }