Computing for Imaging Science (SIMG-726) Introduction • • • • • • Course Information Course Objective Prerequisites/Expectations Course Grading Course Text Computing Resources Winter Quarter 2004 Rolando V. Raqueño 2 Course Information • Course Title – Computing for Imaging Science • Course Number – SIMG 726 or 10-51-726-01 • Meeting Times – Tuesdays and Thursdays 2:00-3:50 PM • Meeting Locations – 76-2155 Winter Quarter 2004 Rolando V. Raqueño 3 Contact Information • Instructor – Rolando Raqueño • E-mail (rolo@cis.rit.edu) • Phone (475-6907) • Office (76-3108) • Office Hours – Tuesdays and Thursdays • 4:00-5:30 PM • Other times by appointment Winter Quarter 2004 Rolando V. Raqueño 4 Course Objective • Basic proficiency in UNIX operating system for problem solving in imaging • Learning elementary programming constructs in IDL and refinement of programming skills • Useful data manipulation techniques • Establish software development, validation, and documentation practices Winter Quarter 2004 Rolando V. Raqueño 5 UNIX Proficiency • Basic UNIX Environment Proficiency – Understanding Basic Computing Data Type & Hardware Issues • Image “Formats” – Networked Environment • VNC • X-windows – Editors • “vi” – Navigation and File Manipulation – Documentation Tools • Wiki.cis.rit.edu • (LaTeX) – Security • SSH • PGP Winter Quarter 2004 Rolando V. Raqueño 6 Why UNIX? • Why the UNIX Environment? – – – – – – – – Very mature technology Maintains a large base of freely available tools LINUX is “free” and can run on minimal hardware Remote computing is a natural part of UNIX Very close control of the computer Minimalist approach to computing Successful implementation in MAC OS X GNU Cygwin options Winter Quarter 2004 Rolando V. Raqueño 7 Shortcuts and Timesavers • Learn shortcuts and time savers – when solving programming related problems (when not to do traditional program) – a.k.a “Stupid UNIX Tricks” – Shell Scripts – AWK & SED – Makefiles • Computing applications in an imaging context Winter Quarter 2004 Rolando V. Raqueño 8 Compiling Traditional Programs in UNIX • Legacy FORTRAN and C code – how to compile these programs • Tools to aid in compiling (makefiles) • Common pitfalls • Setup tips for input and output data files Winter Quarter 2004 Rolando V. Raqueño 9 Imaging Concepts • Application in an imaging context – Bi-level – Monochrome – Color – Multispectral – Hyperspectral Winter Quarter 2004 Rolando V. Raqueño 10 IDL Environment • IDL Basics,Syntax, and Semantics – Your responsibility to get started • IDL Graphical User Interface (GUI) development – Enable batch processing • How IDL interacts with the UNIX environment. Winter Quarter 2004 Rolando V. Raqueño 11 This Course is/(is not) • This course is not... – an algorithm course in image processing – computational theory course – a programming course in C/C++ • This course will... – teach methods to prototype and test image algorithms – Teach you to organize a package translatable to traditional programming languages – Be an opportunity and avenue to explore different tools for your research • You can learn all these tools on your own – But I’ve already made all the mistakes for you Winter Quarter 2004 Rolando V. Raqueño 12 This course is not… • This course is not... – Designed to make you a software engineer • This course will... – Give you the skills to communicate with software engineers about your algorithm, expected inputs, and expected output – Provide give them necessary concepts, specifications and test cases, i.e., The working prototype and documentation Winter Quarter 2004 Rolando V. Raqueño 13 Documentation • Use of wiki as a medium for – Archiving your research – Collaborating with others – Knowledge repository • wiki.cis.rit.edu Winter Quarter 2004 Rolando V. Raqueño 14 Publishing your thesis LaTeX • Course will introduce fundamental LaTeX concepts • Help with documentation • Help with your thesis/dissertation Winter Quarter 2004 Rolando V. Raqueño 15 Documentation, Documentation • This course will... – Teach you about documentation in the form of source code control. RCS • Revision Control System Winter Quarter 2004 Rolando V. Raqueño 16 Prerequisites/Expectations • Experience in a high level programming language (e.g. C, FORTRAN, BASIC, PASCAL, ADA, etc.) in the last 20+ years. • Ability to make lots of mistakes (and remember them) • Ability to deal with frustration, and know when to quit • Good Typing Skills a plus • Good Technical Writing Skills • Be able to generate a User’s Guide with step-by-step detail Winter Quarter 2004 Rolando V. Raqueño 17 Milestones in the Progression of Programming Experience • Programming in traditional languages – Beginning (Monolithic programs) • single letter variables • Loops and maybe an occasional GOTO – Intermediate ( Use of subroutines and functions) • Favor Local variables rather than Global Variables • Understand parameter passing schemes – Advanced (Structures and abstract data types) • More meaningful variable names Winter Quarter 2004 Rolando V. Raqueño 18 Milestones in the Progression of Programming Experience • Programming in traditional languages – Learning that hand-optimizing code at the development is simply not worth the time – Learning to separate the algorithm from the bells and whistles (i.e., input and output code) – Creating a library of “tools” – Use of revision control utilities along with README’s and formal documentation. Winter Quarter 2004 Rolando V. Raqueño 19 Milestones in the Progression of Programming Experience • Programming in non-traditional languages – Thinking about the problems in terms of matrix and vector operations – Avoiding loops and conditionals – Thinking about the “Non-expert” by designing the Graphical User Interface (GUI) – *Realizing that there is no single software tool that solves everything. Winter Quarter 2004 Rolando V. Raqueño 20 Course Grading • Final IDL GUI Project 40% – Presentation and Report • Mid-term Exam • Programming Assignment(s) 30% 20% – Will ultimately be questions in Mid-term • Quizzes (every week) Winter Quarter 2004 Rolando V. Raqueño 10% 21 Course Text • Liam Gumley’s Practical IDL Programming – Required • Unix Power Tools – Required • Cliff Stoll’s The Cuckoo’s Egg – Holiday Required Reading • Learning LaTeX – Optional • Research Systems Incorporated (RSI) – Online Manuals Winter Quarter 2004 Rolando V. Raqueño 22 Other References • Text – Learning the UNIX Operating System – UNIX Power Tools • On-line – News groups • comp.lang.idl-pvwave – Web sites • www.rsinc.com • www.ctan.org (LaTeX references) Winter Quarter 2004 Rolando V. Raqueño 23 Other References • Notes – These Powerpoint slides will be available on-line for your reference. – Wiki.cis.rit.edu • Keyword: SyllabusSimg7262004 Winter Quarter 2004 Rolando V. Raqueño 24 Computing Resources • RIT’s ISC – Provides general computing resources to the RIT community • CIS computing facilities – Imaging specific capabilities • (IDL, ENVI, etc.) – Undergraduate and Graduate DIP Lab Winter Quarter 2004 Rolando V. Raqueño 25 Syllabus until Holiday Break • Class #0 - Today – This Lecture – VNC • Assignment #1 – Get your account setup (CIS) – Register yourself to wiki.cis.rit.edu – Send e-mail to rolo@cis.rit.edu with personal info (Name, Address, Phone Number, Undergraduate/Graduate Majors, Computer Experience) – Go over the on-line tutorial vitutor (CIS) % ~rvrpci/pub/vitutor/vitutor – Get VNC installed on your home computer Winter Quarter 2004 Rolando V. Raqueño 26 Syllabus • Class #1 – Tour of UNIX, X-Windows – Introduction vi – Getting started and Tour of IDL • Working with Data • Plotting • Hardcopy output from IDL • Project Assignment #1 – (Due a week after we return) – Implementing Statistics Functions in IDL – Documentation in LaTeX Winter Quarter 2004 Rolando V. Raqueño 27 Syllabus • Class #2 – Number Systems in Computers – Fundamentals of IDL Programming – Final Project Topics – Intro to LaTeX • QUIZ #1 – Topics • man, ls, cp, mv, pwd Winter Quarter 2004 Rolando V. Raqueño 28 Syllabus • Class #3 – The PBMPLUS Utilities – IDL and PBMPLUS – Basic IDL Image Manipulations – Intro to BibTex Winter Quarter 2004 Rolando V. Raqueño 29 Syllabus • Class #4 – Reading/Writing Data in IDL – Image Formats – Final Project Examples • Quiz #2 – Topics • finger, grep, jobs, mkdir, ci, co Winter Quarter 2004 Rolando V. Raqueño 30 Syllabus • Class #5 – IDL debugging & GUI Introduction • Break Assignments – Read the Cuckoo’s Egg (Quiz Material) – Mockup Drawing of GUI Final Project Winter Quarter 2004 Rolando V. Raqueño 31 Summary • Course Information and Objectives • Prerequisites/Expectations and Experience • Course Grading • Course Text and Resources • Syllabus until Break Winter Quarter 2004 Rolando V. Raqueño 32 Things to do before next class • Send rolo@cis.rit.edu e-mail about yourself • Visit wiki.cis.rit.edu for general CIS computer system information • Register yourself into the CIS wiki – http://wiki.cis.rit.edu/bin/view/TWiki/TWikiR egistration Winter Quarter 2004 Rolando V. Raqueño 33 More things to do before next class • Experiment with VNC • Go over the on-line tutorial vitutor (CIS) % ~rvrpci/pub/vitutor/vitutor • Print out the following documents for your reference – http://www.cis.rit.edu/~rvrpci/teaching/LaTe X/lshort.pdf – http://www.rpi.edu/campus/doc/acs.memos/rpi1 09.pdf Winter Quarter 2004 Rolando V. Raqueño 34