2023–24 Projects:

Suppose your grandmother wants a tour of campus, but she won't be able to visit in person, busy as she is running her shadowy multi-national corporation. You walk around taking pictures of all the buildings from various angles. When you show them to her, she makes lots of observations, like "this building with the pillars seems to be roughly rectangular" or "I like the L shape of these two dorms with the 40-foot gap between them" or "I'll have to calculate whether those two adjacent hemispherical domes are visible from 50,000 feet" or "you say there are tunnels? can you get the schematics without alerting anyone?" (What does your grandmother's company do exactly?)

Gramma's entirely unnecessary back-story notwithstanding, people in general are very good at automatically constructing geometric mental models from 2D images of the objects being modelled. Some of that skill comes from the elusive "common sense," which includes our vast collection of knowledge about the conventions and materials and behaviors of objects like buildings and trees. But some of our scene reconstruction skill is related to our general geometric and pattern-matching capabilities, which to some extent can be imitated by computers.

For this project, you will study and implement known algorithms for 3D scene reconstruction.

The core of this project will involve:

- Studying the literature on 3D scene reconstruction.
- Implementing a system capable of taking an ordered sequence of photos surrounding a single building and inferring a 3D model of the building. (Initially, you'll assume that the photos come from walking all the way around the building, taking a shot every few feet.)

Once your basic system works, there are many enhancements to work on. For example:

- Handle photo collections involving multiple buildings and other objects, like cars, trees, etc.
- Texture-map the photos onto the reconstructed scene, enabling users to do a 3D walk-through of the environment represented by the photo collection.
- Handle photo collections that are not given in any particular order.

It will be important for at least two of this team's members to have taken (and understood!) linear algebra. Even if you haven't taken linear algebra, you'll spend a fair amount of time thinking about mathematical ideas and how to translate them into code, so enjoying math should be considered essential. (In fact, this project can be considered a reminder of how many super-cool things you can do with mathematics.)