CSE554: Geometric Computing for Biomedicine (Fall 2012)
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 TA is 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.
News: We are excited to announce that there will be two guest lectures (Nov. 13th and 20th) given by two distinguished researchers in engineering and biomedicine: Dr. Philip Bayly, Chair of the Department of Mechanical Engineering & Materials Science, and Dr. David van Essen, Chair of the Department of Anatomy and Neurobiology.
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,
- Binary Pictures (Slides PPT,
- Thinning on binary images (Slides PPT,
- Thinning on cell complexes (Slides PPT,
- Contouring I (Slides PPT,
- Contouring II (Slides PPT,
- Fairing and 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 as part of the course (i.e., Module 0).
How to get Mathematica:
All CEC labs should have Mathematica (either version 7 or 8) 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 install Mathematica on your computer (for free).
- 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
(version 8). 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,
PDF), and talk slides by our guest speakers Dr. Ram Dixit (PDF) and Dr. Dequan Zou (PDF).
- October 9: Instructor presents candidate project ideas
- October 9-25: Students work on project proposals and discuss with instructor during labs.
- October 25: Project proposals are due
- October 25-December 4: Students work on the projects.
- December 4/6: Project demos are presented in class
- December 11: Project reports and hand-ins are due
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.