CS 6475: Computational Photography

Instructional Team

irfan

Irfan Essa 
Creator, Instructor
Kim Sirichoke

Kim Sirichoke
Head TA

Overview

This class explores how computation impacts the entire workflow of photography, which is traditionally aimed at capturing light from a (3D) scene to form a (2D) image. A detailed study of the perceptual, technical and computational aspects of forming pictures, and more precisely the capture and depiction of reality on a (mostly 2D) medium of images is undertaken over the entire term. The scientific, perceptual, and artistic principles behind image-making will be emphasized, especially as impacted and changed by computation. Topics include the relationship between pictorial techniques and the human visual system; intrinsic limitations of 2D representations and their possible compensations; and technical issues involving capturing light to form images. Technical aspects of image capture and rendering, and exploration of how such a medium can be used to its maximum potential, will be examined. New forms of cameras and imaging paradigms will be introduced. Students will undertake a hands-on approach over the entire term using computation techniques, merged with digital imaging processes to produce photographic artifacts.

This course counts towards the following specialization(s):
Computation Perception and Robotics

Foundational Course          Computational Perception & Robotics Specialization Elective

Course Goals

This class explores how computation impacts the entire workflow of photography, which is traditionally aimed at capturing light from a (3D) scene to form an (2D) image. Over the span of the semester, students will learn:

  • To think about images as multi-dimensional arrays on which mathematical operations can be performed to generate interesting artifacts
  • The technical aspects of image capture and rendering, and exploration of how such a medium can be used to its maximum potential
  • To mathematically model a camera as a device that maps a 3D space onto a 2D plane
  • How the traditional camera pipeline can be transformed by changing the sensor, illumination, lens, etc.

Preview

Sample Syllabus

Fall 2019 syllabus (PDF)
Fall 2019 schedule (PDF)

Note: Sample syllabi are provided for informational purposes only. For the most up-to-date information, consult the official course documentation.

Before Taking This Class...

Suggested Background Knowledge
The course will involve programming assignments and projects that will test the student’s understanding of the concepts taught in class. The following will be particularly helpful to keep up with the pace of the course:
  1. Working knowledge of computer programming (preferably Python)
  2. College-level mathematics (knowledge of matrices, vectors, differentiation, and integration)
  3. Physics (vectors, optics)
  4. Probability (probability density functions)
  5. Basic knowledge about the functioning of a camera (controlling shutter speed, ISO, aperture)
  6. Prior experience with using OpenCV and Numpy is preferable
Technical Requirements and Software
  • Internet connectivity
  • Camera (preferably one with granular control over aperture, shutter speed, and ISO)
  • Operating system:
    • PC: Windows 8 or higher
    • Mac: OS X 10.6 or higher with latest updates installed
    • Linux: any recent distribution will work so long as you can install Python and OpenCV bindings; we provide instructions for recent Ubuntu distros
  • Anaconda

Academic Integrity

All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code. This course may impose additional academic integrity stipulations; consult the official course documentation for more information.