1 / 72

Twas the Lecture Before Holiday Break

Twas the Lecture Before Holiday Break. Readings Present Makefiles Image Array Manipulation and I/O Simple Widget Programs. Holiday Reading. The Cuckoo’s Egg (Gift Quiz Material) References for doing homework and final project Gumley Chapters 2, 3.1-3.2,4.1-4.4 (programming)

meris
Download Presentation

Twas the Lecture Before Holiday Break

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Twas the Lecture Before Holiday Break Readings Present Makefiles Image Array Manipulation and I/O Simple Widget Programs

  2. Holiday Reading • The Cuckoo’s Egg (Gift Quiz Material) References for doing homework and final project • Gumley Chapters • 2, 3.1-3.2,4.1-4.4 (programming) • 7.1-7.5 (displaying images) • 9.1-9.3 (GUI programming) • UNIX Power Tools Chapters • 48-51

  3. netpbm.tgz netpbm.tgz This is the package that contains the entire PBMPLUS (also known as netpbm) and is distributed in a format known as Compressed TAR File or gzipped TAR file

  4. present.tgz • To illustrate how to process these types of files, there is a file called simpler file (present.tgz) which can be accessed via anonymous ftp from % ftp ftp.cis.rit.edu

  5. Anonymous ftp session login % ftp ftp.cis.rit.edu Name (ftp.cis.rit.edu:rvrpci): anonymous 331 Guest login ok, send your complete e-mail address as password. Password:

  6. Most important ftp command ftp> ?

  7. ftp session change directory ftp> cd people/rolo/simg726 250 "/people/rolo/simg726" is new cwd. ftp> ls 200 PORT command successful. 150 Opening ASCII mode data connection for /bin/ls. Makefile_example.tgz fortran_stats.tgz present.tgz 226 Listing completed. 54 bytes received in 0.015 seconds (3.50 Kbytes/s)

  8. ftp file transfer type ftp> ascii 200 Type okay. ftp> binary 200 Type okay.

  9. ftp getting a single file ftp> get present.tgz 200 PORT command successful. 150 Opening ASCII mode data connection for present.tgz (1211 bytes). 226 Transfer completed. local: present.tgz remote: present.tgz 1219 bytes received in 0.015 seconds (80.45 Kbytes/s)

  10. Getting multiple files ftp> prompt Interactive mode off. ftp> hash Hash mark printing on (8192 bytes/hash mark). ftp> mget *.tgz 200 PORT command successful. 150 Opening ASCII mode data connection for Makefile_example.tgz (31544 bytes). ##

  11. Getting out of ftp ftp> quit 221 Goodbye.

  12. Most common ftp mistake • Sending a binary file under ASCII mode • Result • Characters not conforming to the ASCII character set are removed • ALWAYS • Check the size of the source file and the transferred file

  13. Uncompressing and UnTAR • To uncompress the file % gunzip present.tgz • To extract the contents of the tar file % tar xvf present.tar • Challenge - look at the file xmas.c and figure out what it does % cd present % more xmas.c

  14. Compiling the Package • To compile or build the package, a Makefile is typically present which is an automatic mechanism to compile all the files and place them in the proper locations % make • To run the program % xmas

  15. What is a Makefile • A makefile is a description of how to build “things” in UNIX • Automates the creation of “stuff” • It is different from a script or batch file • Describes the relationship of components to the resulting object • Keeps track of intermediate results and their age

  16. Other Makefile examples • Makefile_example.tgz • Fortran_stats.tgz

  17. Makefile_example • Take a raw file -> convert to pgm image • Take pgm image -> rotate image • Take rotated image -> label image • Makefiles work on file dependencies

  18. [Mm]akefile % more Makefile MyCat_labeled.pgm : MyCat_rotated.pgm label.dat ppmlabel -x 0 -y 200 -file label.dat MyCat_rotated.pgm > MyCat_labeled.pgm MyCat_rotated.pgm : MyCat.pgm pnmrotate 45 MyCat.pgm > MyCat_rotated.pgm MyCat.pgm : MyCat.raw rawtopgm 256 256 MyCat.raw > MyCat.pgm clean: rm MyCat_labeled.pgm MyCat_rotated.pgm MyCat.pgm

  19. If a file is out of date… • If you edit a file and update it, the makefile will know • Example • Edit label.dat to some other new text • Type make again • Look at the image

  20. Fortran_stats example • Compile a fortran program that computes the mean of 1,2,3,4,5 • To compile the program % make • To run the program % stats

  21. Fortran_stats % more Makefile stats : main.o sum.o mean.o g77 -o stats main.o sum.o mean.o main.o : main.f g77 -c main.f sum.o : sum.f g77 -c sum.f mean.o : mean.f g77 -c mean.f clean: rm *.o

  22. Fortran_stats % more Makefile FORTRAN = g77 stats : main.o sum.o mean.o $(FORTRAN) -o stats main.o sum.o mean.o main.o : main.f $(FORTRAN) -c main.f sum.o : sum.f $(FORTRAN) -c sum.f mean.o : mean.f $(FORTRAN) -c mean.f clean: rm *.o

  23. Typical unreadable makefile % more makefile FORTRAN = g77 OBJS = main.o mean.o sum.o .f.o: $(FORTRAN) -c $*.f stats: $(OBJS) $(FORTRAN) -o stats $(OBJS) clean: rm *.o

  24. Array Manipulation and I/O

  25. Array Manipulation in IDL • Let’s create an array representing a multiband image IDL> image=bindgen(2,3,4) IDL> print,image 0 1 2 3 4 5

  26. Array Manipulation in IDL • image continued 6 7 8 9 10 11 12 13 14 15 16 17

  27. Array Manipulation in IDL • image continued 18 19 20 21 22 23

  28. Array Manipulation in IDL • Extract the first and last band of the image IDL> print,image(*,*,0) 0 1 2 3 4 5 IDL> print,image(*,*,3) 18 19 20 21 22 23

  29. Array Manipulation in IDL • Extract the first and last band of the image simultaneously IDL> print,image(*,*, [0,3] ) 0 1 2 3 4 5 18 19 20 21 22 23

  30. Array Manipulation in IDL • Extracting the “color” or “spectral vector” of the first pixel IDL> print,image(0,0,*) 0 6 12 18

  31. Array Manipulation in IDL • Assign band 1 to band 4 IDL> band1=image(*,*,0) IDL> image(*,*,3) = band1 • Shortcut IDL> image(*,*,3)=image(*,*,0)

  32. Array Manipulation in IDL • Subsectioning parts of an image IDL> print,image(0:1,0:1,*) 0 1 2 3 6 7 8 9 12 13 14 15 0 1 2 3

  33. Array Manipulation • where function to find indices of elements that meet certain criteria IDL> print, where( image gt 5 and image lt 12) • Use of other arrays to index other arrays IDL> indices=where(image gt 5 and image lt 12) IDL> image(indices)=-1

  34. Reading & Writing Data Files in IDL

  35. Reading & Writing Data Files • IDL can read many types of file formats • Files can be categorized into two general types • Formatted ( Readable Text & Numbers, ASCII) • Unformatted( Images)

  36. Reading & Writing Data Files • The three IDL commands we can use for opening files are as follows openr(open a file for reading) openw(open a file for writing) openu(open a file for reading/writing)

  37. sample_data_1.dat 0 1 2 3 4 5 6 7 8 9 10 11

  38. Syntax for Opening Data Files • Example command for opening a file for input IDL> openr, 1, ‘sample_data_1.dat’ • The argument 1 is referred to as the logical unit number (also known as a file handle) ‘sample_data_1.dat’ is the input file name

  39. Reading the Data • Need to allocate the array to read in the data IDL> a=fltarr( 12) OR IDL> a=fltarr( 2, 6) • Read in the data using the readf statement IDL> readf, 1, a

  40. Closing the Data File • To close the data file you can give the following command IDL> close, 1 • A common mistake is to try to open a file(s) that is already open causing the error % OPENR: File unit is already open: 1. % Execution halted at $MAIN$ (OPENR) • Solution IDL> close, /all

  41. Putting it all together IDL> openr, 1, ‘sample_data_1.dat’ IDL> a = fltarr( 2,12) IDL> readf, 1, a IDL> close, 1 IDL> print, a

  42. Another Way of Reading in a File IDL> openr, lun, ‘sample_data_1.dat’, $ /get_lun IDL> a = fltarr( 2, 6 ) IDL> readf, lun, a IDL> free_lun, lun IDL> print, a

  43. Yet Another Way IDL> file_name = ‘sample_data_1.dat’ IDL> a = fltarr( 2, 6 ) IDL> openr, lun, file_name, /get_lun IDL> readf, lun, a IDL> free_lun, lun IDL> print, a

  44. To Output a Formatted File IDL> b = bindgen( 3, 2)*10+42 IDL> openw, lun, ‘test_output.dat’, $ /get_lun IDL> printf, lun, b IDL> free_lun, lun

  45. test_output.dat 42 52 62 72 82 92

  46. To Output an Unformatted File IDL> b = bindgen( 3, 2)*10+42 IDL> openw, lun, ‘test_output.dat’,$ /get_lun IDL> writeu, lun, b IDL> free_lun, lun

  47. test_output.dat *4>HR\ • Why? Because ... *- has an ASCII value of 42 decimal 4- has an ASCII value of 52 decimal >- has an ASCII value of 62 decimal H- has an ASCII value of 72 decimal R- has an ASCII value of 82 decimal \- has an ASCII value of 92 decimal

  48. test_P2_image.pgm P2 3 2 255 42 52 62 72 82 92

  49. test_P5_image.pgm P5 3 2 255 *4>HR\

  50. Testing Out Your or Somebody Else’s Image I/O Routines • Read in a small test image IDL> a=Read_P2_Image(“test_input.pgm”) • Write out the small test image IDL> Write_P2_Image,“test_output.pgm”,a • Read in the small test image you just wrote IDL> b=Read_P2_Image(“test_output.pgm”) • Statistics (sum, mean, etc.) must be equal • Finally, sum_squares( a - b ) must be 0.0

More Related