CSCI 1290: Computational Photography and Image Manipulation

Fall 2020, TTh 14:30 to 16:00, Synchronous Online + Recorded

Class Zoom (needs login)

Instructor: James Tompkin
TAs: Trevor Houchens (HTA), Megan Gessner, Numair Khan, Isa Milefchik, Meredith Young-Ng

Computational Photography Montage
Image by James Hays


Course Calendar

Course Description

Computational Photography is concerned with overcoming the limitations of traditional photography with computation: in optics, sensors, and geometry; and even in composition, style, and human interfaces. Image manipulation uses computational techniques to improve the way we process, manipulate, and interact with visual media. We will study algorithms and implement systems to consider these topics:

This course has its foundation in James Hays' computational photography course, previously taught at Brown as CS129. Significant thanks to him and his staff, across the years, for all their hard work.

Learning Objectives

Through this course, students will:

  1. Describe the foundation of image formation, measurement, and analysis;
  2. Understand the geometric relationships between 2D images and the 3D world;
  3. Consider the relationship between optical and computational processing;
  4. Experiment with how compute can overcome spatiotemporal undersampling and noise;
  5. Be familiar with both the theoretical and practical aspects of computing with images;
  6. Developed the practical skills necessary to build novel imaging systems.


No prior experience with computational photography is assumed, although previous knowledge of visual computing or signal processing will be helpful (e.g., CSCI 1230). The following skills are necessary for this class:

Knowledge of cameras will be helpful; likewise, knowledge of digital image formation will be helpful, e.g.:

Time Commitment

Task Hours
In class lectures 20
In class labs 20
Lab take home 10
Projects: 20 ×6
Office Hours/CampusWire:    10
Total: 180


This class can be taken as a capstone. You will need to complete 10 points of extra credit in each of the projects, plus put in commensurate extra effort to the final project.

Learning Material

There is no requirement to buy a textbook. The goal of the course is to be self contained, but sections from textbooks will be suggested for more formalization and information. These books are freely available online or through Brown's library. If you find a word or concept that you do not understand, then please also consider the Dictionary of Computer Vision and Image Processing, by Fisher et al.

  1. Concise Computer Vision by Reinhard Klette
  2. Computer Vision: Algorithms and Applications by Richard Szeliski.

Further learning material:


Camera Hardware

The course aims to give you hands-on experience with cameras, and to allow you to experiment with their hardware and software. Cameras can be expensive, but you do not have to buy one to participate in this course. If you have a reasonably modern smartphone, then you can use that for the course with an application that allows you to use manual controls and save RAW images (e.g., Adobe Lightroom CC, as part of Brown's Adobe CC licence for students). If you have a point and shoot with manual controls and RAW output, or a DSLR, then these are good too, and we encourage you to use your own equipment. We can also provide you with images to process, but we'd rather you experimented and took your own.

On top of that, the course has a small pool of DSLRs, lenses, lights, and related equipment for you to use, plus some lab space for you to experiment. The funds for this were generously provided to the University by the Zern Endowment, which supports curricular innovation in the life and physical sciences.

Equipment Pool List—email James to request to borrow.

Finally, if none of these options are suitable, then Brown University undergraduates with concerns about equipment costs may apply to the Dean of the College Academic Emergency Fund to determine options for course-related costs, while ensuring their privacy. This application form can be found in the Emergency Funds, Curricular & Co-curricular Gap (E-Gap) Funds section of UFunds. Information and procedures are available here.


We will use Python 3 for the course, and we will support editing and debugging Python through Visual Studio Code (vscode). Project 0 includes a tutorial for how to set up a Python environment on your personal computer, or use the CS department machines.

Versions:Our Python virtual environment uses Python 3.7.3. Our autograder uses the same virtual environment. Python 2.7 is not supported by the class.


Projects are released every two weeks, with deliverables due each week on Wednesday at 9pm. Each project has two parts: written, and code. You have one week to complete the written part, and two weeks to complete the code part.

Hand-in for both parts is electronic via Gradescope.

Project 6 is a final project, with potential for group projects that scale in complexity commensurate with the number of team members.

Projects Gradescope due deadline
0. Python Primer Weds 16th Sept. 9pm
GitHub Guide | GitHub Assignment Link
1. Image Alignment with Pyramids Questions: Weds 30th Sept 9pm. Code: Weds 30th Sept 9pm
2. High Dynamic Range Questions: Weds 7th Oct 9pm. Code: Weds 14th Oct. 9pm
3. Poisson Image Editing Code: Weds 28th Oct. 9pm
4. Texture and Seams Code: Weds 11th Nov. 9pm
5. Panorama Code: Thurs 19th Nov. 9pm
6. Final Project Presentation: Thurs 10th Dec. Report: Fri 11th Dec.


Your final grade will be 100% from coursework, with no exams. All projects are graded, and all labs are ungraded but compulsory. We leave ourselves a little flexibility to make minor adjustments. Say, if one project ends up being a little more difficult, then we can tweak that project to be less significant in your final grade.

Project Percent
0 2%
1–5 ~13%
6 ~25%
Labs (combined) ~8%

Late Submissions and Late Days

Our projects are split into two parts: questions and code. You will lose 10% from the total possible marks of each project part for each day (24 hours) that it is late. Over the course, we give you six free late days: three question late days and three code late days. You can use these for any project.

These late days will not be reflected in the initial grade reports for your assignment, but they will be factored into your final grade at the end of the semester.

Late days cover unexpected clustering of due dates, travel commitments, interviews, hackathons, etc. Please do not ask for extensions to due dates—we give you a pool of late days to manage yourself.

For sickness and other issues of wellbeing, please obtain a note from health services and we will accommodate.

Video Lecture Capture

Please look here for lecture capture of the class sessions via video (Brown ID required).

Tentative Schedule and Materials

Date Topic Slides More info
Thurs 09 Sep Introduction PPTX Szeliski 1
Tues 15 Sep Imaging Basics PPTX Szeliski 2
Thurs 17 Sep Exposure Lab Szeliski 2
Tues 22 Sep Filtering Basics (async video only) PPTX Szeliski 2
Camera Basics PPTX Szeliski 2
Thurs 24 Sep RAW Images Lab Szeliski 10.1
Tues 29 Sep High Dynamic Range Images PPTX Szeliski 10.2
Thurs 01 Oct Bilateral Filter Lab Szeliski 3.3
Tues 06 Oct Edges PPTX Klette 2.3, 2.4, Szeliski 3.1, 4.2
Thurs 08 Oct Color PPTX | Lab Klette 6.1, Klette 1.3, Szeliski 2.1, esp. 2.1.5, 2.2, 2.3
Tues 13 Oct Compositing and Matting PPTX
Thurs 15 Oct Compositing and Morphology Lab
Tues 20 Oct Frequency Domain PPTX
Thurs 22 Oct Frequency Domain Applications PPTX
Tues 27 Oct Patches and Boundary Minimization PPTX
Thurs 29 Oct Transforms, Homographies, and Panoramas PPTX
Tues 03 Nov No class—election day. Vote!
Thurs 05 Nov Night Lab Lab
Tues 10 Nov Light Fields PPTX
Thurs 12 Nov Light Field Lab Lab
Tues 17 Nov Illumination and Reflectance PPTX
Thurs 19 Nov Illumination and Reflectance PPTX
Tues 24 Nov Motion and Optical Flow PPTX
Thurs 26 Nov No class—Thanksgiving break
Tues 01 Dec Reading period---research papers!
Thurs 03 Dec Project development lab
Tues 08 Dec Reading period---research papers!
Thurs 10 Dec Final project presentations

General Policy


Our intent is that this course provide a welcoming environment for all students who satisfy the prerequisites. Our TAs have undergone training in diversity and inclusion, and all members of the CS community, including faculty and staff, are expected to treat one another in a professional manner. If you feel you have not been treated in a professional manner by any of the course staff, please contact any of James (the instructor), Ugur Cetintemel (Dept. Chair), Tom Doeppner (Vice Chair) or Laura Dobler (diversity and inclusion staff member). We will take all complaints about unprofessional behavior seriously. Your suggestions are encouraged and appreciated. Please let James know of ways to improve the effectiveness of the course for you personally, or for other students or student groups. To access student support services and resources, and to learn more about diversity and inclusion in CS, please visit

Prof. Krishnamurthi has good notes on this area.

Quiet Hours

This course runs quiet hours from 9pm to 9am every day. Please do not expect a response from us via any channel. Likewise, we won't ask you to do anything between these times, either, like hand in projects.

Academic Integrity, Collaboration, and Citation

Feel free to talk to your friends about the concepts in the projects, and work through the ideas behind problems together, but be sure to always write your own code and perform your own write up. You are expected to implement the core components of each project on your own, but the extra credit opportunties often build on third party data sets or code. Feel free to include results built on other software, as long as you credit correctly in your handin and clearly demark your own work. In general, if you use an idea, text, or code from elsewhere, then cite it.

Brown-wide, academic dishonesty is not tolerated. This includes cheating, lying about course matters, plagiarism, or helping others commit a violation. Plagiarism includes reproducing the words of others without both the use of quotation marks and citation. Students are reminded of the obligations and expectations associated with the Brown Academic and Student Conduct Codes.


Brown University is committed to full inclusion of all students. Please inform me if you have a disability or other condition that might require accommodations or modification of any of these course procedures. You may email me, come to office hours, or speak with me after class, and your confidentiality is respected. We will do whatever we can to support accommodations recommended by SEAS. For more information contact Student and Employee Accessibility Services (SEAS) at 401-863-9588 or . Students in need of short-term academic advice or support can contact one of the deans in the Dean of the College office.

Mental Health

Being a student can be very stressful. If you feel you are under too much pressure or there are psychological issues that are keeping you from performing well at Brown, we encourage you to contact Brown's Counseling and Psychological Services. They provide confidential counseling and can provide notes supporting extensions on assignments for health reasons.

Incomplete Policy

We expect everyone to complete the course on time. However, we certainly understand that there may be factors beyond your control, such as health problems and family crises, that prevent you from finishing the course on time. If you feel you cannot complete the course on time, please discuss with James Tompkin the possibility of being given a grade of Incomplete for the course and setting a schedule for completing the course in the upcoming year.

Electronic Etiquette

Laptops are discouraged, please, except for class-relevant activities, e.g., to help answer questions and show items relevant to discussion. No social media, email, etc., because it distracts not just you but other students as well. Read Shirky on this issue ("Why I Just Asked My Students to Put Their Laptops Away"), or Rockmore ("The Case for Banning Laptops in the Classroom"), or our very own Shriram Krishnamurthi (CSCI 0019 Laptop Policy).

We will release course lecture material online. In considering laptop use for note taking, please be aware that research has shown note taking on paper to be more efficient than on a laptop keyboard (Mueller and Oppenheimer), as it pushes you to summarize the content instead of transcribe it.


We would appreciate any feedback on how to improve the course. We have created an anonymous form to collect feedback, which is accessible through your Brown Google account (but we do not collect your identity). We will read the feedback every two weeks at grading. If there is something more urgent (and not anonymous), please email James or the course staff. If there is something urgent and anonymous, please consider contacting one of the parties listed in the general policy.


The materials from this class rely heavily on slides prepared by other instructors. In particular, many materials are modified from those of Alexei A. Efros, who in turn uses materials from Steve Seitz, Rick Szeliski, Paul Debevec, Stephen Palmer, Paul Heckbert, David Forsyth, Steve Marschner and others, as noted in the slides. Feel free to use these slides for academic or research purposes, but please maintain all acknowledgements.

Thanks to Tom Doeppner and Laura Dobler for the text on accommodation, mental health, and incomplete policy.

Thank you to the TAs who helped to teach and improve this class. Previous course runs:

Similar Courses at Other Universities