1 /*****************************************************************************
2 Major portions of this software are copyrighted by the Medical College
3 of Wisconsin, 1994-2000, and are released under the Gnu General Public
4 License, Version 2. See the file README.Copyright for details.
5 ******************************************************************************/
6
7 #include <stdlib.h>
8 #include <string.h>
9 #include "mrilib.h"
10
main(int argc,char * argv[])11 int main( int argc , char * argv[] )
12 {
13 MRI_IMAGE *imin ;
14 float * maskar ;
15 int nxim , nyim , ii , npix ;
16
17 if( argc < 2 || strncmp(argv[1],"-help",4) == 0 ){
18 printf("Usage: imdump input_image\n"
19 "* Prints out nonzero pixels in an image;\n"
20 "* Results to stdout; redirect (with >) to save to a file;\n"
21 "* Format: x-index y-index value, one pixel per line.\n" ) ;
22 exit(0) ;
23 }
24
25 machdep() ;
26
27 imin = mri_read_just_one( argv[1] ) ;
28 if( imin == NULL ) exit(1) ;
29 if( ! MRI_IS_2D(imin) ){
30 fprintf(stderr,"can only deal with 2D images!\n") ;
31 exit(1) ;
32 }
33
34 nxim = imin->nx ;
35 nyim = imin->ny ;
36 npix = nxim * nyim ;
37
38 switch( imin->kind ){
39
40 default:
41 fprintf(stderr,"Unrecognized input image type!\a\n") ;
42 exit(1) ;
43
44 case MRI_byte:{
45 int ix,jy ;
46 byte * arin , val ;
47 arin = mri_data_pointer(imin) ;
48 for( jy=0 ; jy < nyim ; jy++ ){
49 for( ix=0 ; ix < nxim ; ix++ ){
50 val = arin[ix+jy*nxim] ;
51 if( val != 0 ) printf("%4d %4d %4d\n",ix,jy,val ) ;
52 } }
53 } break ;
54
55 case MRI_short:{
56 int ix,jy ;
57 short * arin , val ;
58 arin = mri_data_pointer(imin) ;
59 for( jy=0 ; jy < nyim ; jy++ ){
60 for( ix=0 ; ix < nxim ; ix++ ){
61 val = arin[ix+jy*nxim] ;
62 if( val != 0 ) printf("%4d %4d %4d\n",ix,jy,val ) ;
63 } }
64 } break ;
65
66 case MRI_float:{
67 int ix,jy ;
68 float * arin , val ;
69 arin = mri_data_pointer(imin) ;
70 for( jy=0 ; jy < nyim ; jy++ ){
71 for( ix=0 ; ix < nxim ; ix++ ){
72 val = arin[ix+jy*nxim] ;
73 if( val != 0 ) printf("%4d %4d %g\n",ix,jy,val ) ;
74 } }
75 } break ;
76
77 case MRI_int:{
78 int ix,jy ;
79 int * arin , val ;
80 arin = mri_data_pointer(imin) ;
81 for( jy=0 ; jy < nyim ; jy++ ){
82 for( ix=0 ; ix < nxim ; ix++ ){
83 val = arin[ix+jy*nxim] ;
84 if( val != 0 ) printf("%4d %4d %4d\n",ix,jy,val ) ;
85 } }
86 } break ;
87
88 case MRI_double:{
89 int ix,jy ;
90 double * arin , val ;
91 arin = mri_data_pointer(imin) ;
92 for( jy=0 ; jy < nyim ; jy++ ){
93 for( ix=0 ; ix < nxim ; ix++ ){
94 val = arin[ix+jy*nxim] ;
95 if( val != 0 ) printf("%4d %4d %g\n",ix,jy,val ) ;
96 } }
97 } break ;
98
99 case MRI_complex:{
100 int ix,jy ;
101 complex * arin , val ;
102 arin = mri_data_pointer(imin) ;
103 for( jy=0 ; jy < nyim ; jy++ ){
104 for( ix=0 ; ix < nxim ; ix++ ){
105 val = arin[ix+jy*nxim] ;
106 if( val.r != 0 || val.i != 0 )
107 printf("%4d %4d %g %g\n",ix,jy,val.r,val.i ) ;
108 } }
109 } break ;
110 }
111
112 exit(0) ;
113 }
114