CSE554: Geometric Computing for Biomedicine (Fall 2013)
Advances in biomedicine have been powered by the continued enhancement of data acquisition techniques. Many of these techniques produce image data in two or three dimensions, such as microscopy, MRI, CT, ultrasound, cryo-EM, to name a few. To visualize these image data, and further to perform quantitative analysis, it is often useful to extract geometric forms, such as curves and surfaces, from the images. Not only do they offer intuitive means for visual presentation, geometric forms also enable efficient and robust computational algorithms for data understanding and processing.
This course covers some of the most commonly used geometric algorithms in image analysis, including morphology analysis,
skeletonization, surface reconstruction, mesh processing, model deformation and registration.
Time and location:
The lectures are offered on Tuesdays 1-2:30pm in Lopata 229, and the labs take place on Thursdays 1-2:30pm in Whitaker 130 (CEC lab).
Instructor and TA:
The course is taught by Dr. Tao Ju (taoju at cse.wustl.edu). Feel free to contact him or schedule an appointment by email. If you are a biomedical researcher and would like to get involved in this course (e.g., looking for students to work on an image analysis problem, or interested in giving a guest lecture about your work), you are more than welcome to contact the instructor. Our TAs are Ming Zou (mingzou.cn at gmail.com) and Derek Burrows (derek.wayne.burrows at gmail.com).
The course is offered in two sessions each week. The first session (on Tuesday) is for lectures, and the second (on Thursday) is for working on or grading the lab modules. The final grade is based on the lab modules (75%), which are graded in Thursday sessions, and the course project (25%), which is turned in and presented at the end of the semester.
The lecture slides are posted here shortly before the lecturing session. There is no required textbooks, although there are numerous books and articles on related topics that you can find online. We encourage you to check them out if you want to dig deeper than the lecture slides.
- Introduction (Slides PPT,
- Basic image processing (Slides PPT,
- Thinning I (Slides PPT,
- Thinning II (Slides PPT,
- Contouring I (Slides PPT,
- Contouring II (Slides PPT,
- Fairing (Slides PPT,
- Simplification (Slides PPT,
- Rigid alignment (Slides PPT,
- Non-rigid alignment (Slides PPT,
- Extrinsic deformation (Slides PPT,
- Biomedical Applications (Slides PPT,
The lab modules are designed for prototyping the algorithms and to be done individually. In many of the modules, you will be asked to start working on a 2D version of the algorithm that is easy to design and debug, before advancing to 3D. Test data (both 2D images and 3D volumes) will be provided that are typically small in size but representative of the characteristics of the actual data. Labs are due and graded in class on the noted dates.
The programming language of the labs is Mathematica, a math package that offers many great
features for prototyping (e.g., easy coding, symbolic evaluation, interactive graphics, automatic formatting, etc.). It is perfectly fine if you have
never used it before; we will teach you how in Module 0. Solutions to the modules will be posted on the resource page on Piazza
- Module 0: Programming in Mathematica (Notebook) (Due: Sept 5 in
- Module 1: Binary pictures (Notebook, Data files)
(Due: Sept 19 in class) (Solution posted on Piazza)
- Module 2: Thinning (Notebook, Data files)
(Due: Oct 3 in class) (Solution posted on Piazza)
- Module 3: Contouring (Notebook, Data files)
(Due: Oct 17 in class) (Solution posted on Piazza)
- Module 4: Fairing and simplification (Notebook, Data files) (Due: Oct 31 in class) (Solution posted on Piazza)
- Module 5: Alignment and deformation (Notebook, Data files) (Due: Nov 14 in class) (Solution posted on Piazza)
How to get Mathematica:
All CEC labs should have Mathematica installed before the semester begins. If you are working outside CEC, here are a couple of ways to access Mathematica:
- If you are on the SEAS network, follow this instruction to download Mathematica on your computer. After download,
open Mathematica and choose Help->Enter activation key. Then click the "Other ways to activate button" and choose "Connect to a network license server".
Enter "sl.mathlm.wustl.edu" in the server name box.
- If you are outside SEAS and would like to install Mathematica on your computer, you can purchase a student license with less than $50 for use up to six months here. You can get a 15% discount following this instruction.
you have got your hands wet in
the lab modules, you are ready to tackle some real-world bio-medical problems. For the course project, you need to identify a current problem of interest in bio-medical image processing, and make a reasonable attempt at solving it using geometric or image processing algorithms (not necessarily limited to those covered in the course). You can use any programming language of your choice (e.g., C++, Java, Matlab, Python, etc.), and either do the project individually or with a partner (provided that there is sufficient workload for each person).
How to identify a problem: Almost any image-centered biomedical research lab would have problems that you can help to solve. The instructor will present several examples in class, but you are strongly encouraged to go out and look for such problems both within and outside the university (e.g., by checking out lab webpages in BME or other medical school departments; another good starting point is WashU's Imaging Science Pathway). Avoid problems that either too simple (e.g., can be solved by a couple of Matlab/Mathematica commands) or too hard (e.g., automatic tumor detection). If you are not sure, bring the problem to the instructor and discuss.
For more details, see the lecture notes (Slides PPT,
- October 8: Instructor presents sample project ideas
- October 24: Project proposals are due
- December 3, 5 and 10: In-class project presentations
- December 12: Project reports are due
Project presentation: You have 7-8 minutes for your presentation. I recommend spending 2-3 minutes on introduction (mostly on what method you used) and 4-5 minutes on results and live demo (if you have one). Prepare your own laptop, unless you do not have a live demo and wish to use instructor's laptop (which runs on Windows 7), in which case you need to send in your slides before class.
About the course
What makes the course unique?
Why would I take this course?
- State-of-the-art: Most of the algorithms covered in the course were developed in the past three decades (some in the past few
years), and are still under active research. Students with get to see what's going on behind today's bio-medical image analysis software
- Hands-on: The course puts heavy emphasis on doing-it-yourself exercises. All of the algorithms are conceptually simple to
implement. Students will prototype these algorithms in the lab modules (using Mathematica), and build a production-level
tool or solve a real-world problem in the course project.
- Real-world challenges: We will deal with real-world biomedical images of a variety of imaging modalities (microscopy, MRI,
CT, EM, etc.), and tackle actual tasks confronting researchers and doctors. For the course project, students will have the chance of
engaging in on-going research efforts involving image analysis.
What are the prerequisites?
- You are a CS major and would like to see cool ways to apply your knowledge and programming skills, or
- You are in a biomedical program and wonder "how can I do xyz to my images", or
- You are a graduate student involving in imaging-based biomedical research, or
- You are interested in graphics and image processing, or
- You want to impress your friends (and future employers) with fancy graphics :)
- Programming: You should be proficient in programming in one of the major languages (e.g., C/C++, Java, Python), which is needed
for your course project. Knowing how to program in Mathematica is NOT required (we will teach you as part of the course). If you are a CS major, CSE 332 or equivalent is required.
- Algorithms and data structure: You need to be familiar with basic data structures (e.g., queues, trees, graphs, etc.) and related algorithms. If you are a CS major, CSE 241 or equivalent is required.
- Math: Linear algebra is required.