|CS 534||Computational Photography||Fall 2016|
Homework #5: Your Own Project
Team members, tentative Title and Abstract: Thursday, November 17
Progress report: Thursday, December 1
Class Presentations: December 13 and 15
Final Paper and Web Page: Tuesday, December 20 at 5 p.m.
This assignment is to do a project based on
an area of computational photography of your choice. Projects should be done in teams
of 3 people.
The intended effort per person is approximately two times that
of other homework assignments.
You can choose to do any combination of programming,
reading relevant technical papers, and developing new
theory or techniques.
Except in unusual circumstances, a project will involve reading
some papers from the literature, implementing some method(s),
experimentally testing the method(s) on appropriate images, and
writing a report
that describes the problem, the approach implemented,
a summary of experiments, and evaluation of results. The
length will depend a lot on the type of project. Most reports will be
about 10-15 pages long. The style should
be in the form of a conference paper. That is, title, abstract,
introduction, motivation, problem statement, related work, theory,
method, experimental results, concluding remarks, and references.
Some examples of projects and reports are
If your project is based primarily on a published paper, include a brief summary
of the method's major steps and ideas, emphasizing key points that you want to
stress about it. Also, include a clear description of assumptions of the method
and a list of all the parameters that must be specified by the user.
Be sure to clearly state what parts of your code you wrote yourself and which parts
you got from elsewhere, citing sources of the code you did not write
and the form of the code (e.g.,
from a Matlab toobox or from someone else's implementation).
Citing sources for code you've used is as important as citing publications!
Your project should include a significant amount of code written yourself. If most of the code used
was written by others, your project will be penalized.
If you're doing a project that's primarily programming, first develop
a specific set of operations to be performed and tested.
If you're doing little programming, you can first
focus on selecting a set of readings in an area.
Ideally, I would prefer some combination of reading,
original ideas, and implementation that could consist of an
extension or modification of previous work.
What to Hand In
Due Thursday, November 17: A tentative title, team members, and abstract of your project.
One team member should turn in to their HW5 Moodle dropbox a file called username-HW5-Abstract.txt that
contains this information in the following format:
<LI><B>name1</B> and <B>name2</B><BR> and <B>name3</B><BR>
These will be posted on the class web page.
Due Thursday, December 1: Progress report describing the current status of your project including work completed and planned next steps. One team member should turn in this report to their HW5 Moodle dropbox as a pdf file called username-HW5-progress.pdf
Due December 13 and 15: Class presentation summarizing your project.
Include (1) problem statement, (2) motivation, (3) summary of method,
and (4) results so far. Each presentation will be about 5 minutes.
Due Tuesday, December 20 at 5 p.m.: Submission of your final project report electronically to one person's
HW5 Moodle dropbox. This should be a pdf file called username-HW5-Report.pdf . At the end of your report (after the references)
include a description of what code you got from others and what code you wrote yourself, including approximately how many lines of code your team wrote (and in what language). Also include a brief description of what each team member did on the project.
In addition, please
e-mail the instructor a final title and
abstract of your project. Submit your source code electronically to one person's HW5 Moodle dropbox.
Also submit a file called username-HW5.zip with code, images, and any other information that you'd like to include.
If you would like to demo your project, e-mail the instructor to set up a time.
Finally, you can optionally create a web page for your project. If you do, extra credit points will be given that are used as part of the total extra credit points achieved throughout the course, and which will be used if your grade is a borderline case.
Class Presentation Information
December 13 and 15 are the presentations of your
projects (as completed to that point). Part of your grade on this project will be based on
You should organize
your presentation so that you clearly (1) state the problem,
(2) give some motivation by showing an example and describing the
context of the work in terms of the application areas or other methods
for solving this problem, (3) describe the method you are implementing
at a level that focuses on the most interesting aspects of the approach,
(4) show and describe some preliminary results, if possible, and
(5) summarize some of the main advantages and disadvantages of your
method, and how it might be improved or extended in the future.
You may use
powerpoint (you can either bring in your own laptop, bring a USB flash drive, or e-mail a ppt file
to me and I'll put it on my laptop), or html pages that
you access and display from the computer that is in the classroom. I
will not bring my laptop to class unless someone requests it. Finally,
be sure to proofread your presentation for spelling, grammar, and clarity.
See the instructor if you'd like help with your presentation preparation.
Assignments of who will present on each day will be made about 1 week before the first presentation date.
Some Project Topic Suggestions
The following are some sample ideas for topic areas.
These could be used to stimulate your own thinking about
areas of interest and lead to a narrower, more specific
project. I much prefer in-depth treatment of a narrow topic
over shallow treatment of a broader problem.
I encourage you to talk to me about ideas that
you are thinking about early on in order to help you
focus your efforts. Finally, there are digital still and video
if you need to digitize some images for your project.
- Time-Lapse or Hyper-Lapse Photography
There is a lot of recent interest in creating time-lapse or hyper-lapse videos, including
First-person hyperlapse videos
Time-lapse mining from internet photos.
- Automatic Colorization
Given a single grayscale image, automatically convert it to a color image. There are several papers that have
developed methods for doing this including a deep learning method at
Learning representations for automatic colorization.
- Sky Enhancement
Many photos contain sky regions that are overexposed and aesthetically uninteresting. Develop code for segmenting out sky regions and then enhancing them to produce more dramatic photos. May be possible to use already existing code for sky segmentation if necessary.
- Motion Debluring
Given a single image that is blurry due to camera shake, remove the blur. A few papers on this topic include
(1) R. Fergus, B. Singh, A. Hertzmann, S. Roweis, and W. Freeman, "Removing camera shake from a single photograph," Proc. SIGGRAPH, 2006,
(2) Q. Shan, J. Jia, and A. Agarwala, "High-quality motion debluring from a single image," Proc. SIGGRAPH, 2008,
(3) A. Levin, Y. Weiss, F. Durand, and W. Freeman, "Understanding and evaluating blind deconvolution algorithms," Proc. CVPR, 2009.
- Denoising and Cartooning
(1) C. Tomasi and R. Manduchi, "Bilateral filtering for gray and color images," Proc. ICCV, 1998,
(2) A. Buades, B. Coll, and J. Morel, "A non local algorithm for image denoising," Proc. CVPR, 2005.
- Social Photography
With so many photos taken using smartphones and shared between a group of friends, develop a tool
for enhancing the social experience of a set of photographs taken by a group of friends. That is,
go beyond the posting of photos on Facebook for friends to view so as to make the experience more social,
more dynamic, and more collaborative. For data, see, for example, Twitter's API
- What Makes Paris Look Like Paris
C. Doersch, "What makes Paris look like Paris?," Proc. SIGGRAPH, 2012.
See web page paper and related materials.
- Creating Arcimboldo-style Images
Extend the idea developed by Lorenzo de Carli for creating images in the style
of the Ialian painter Giuseppe Arcimboldo. See
his project page for ideas.
- Create a Cartoon or Caricature Image from a Portrait Photo
- Creating David Hockney-style Joiners
The artist David Hockney has created images, known as "joiners," that consist of a collection of
photos of a scene, taken from a wide range of viewpoints, arranged in a collage to give a
photo-collage yielding a non-realistic but compelling representation of the 3D scene.
Creating these currently involves a lot of manual alignment and artistic skill. This project
would involve creating a tool that would let a user create these images much more quickly,
using an automatic or semi-automatic method given a set of source images.
See L. Zelnik-Manor and P. Perona,
Automating Joiners, Proc. 5th Int. Symp. Non-Photorealistic Animation and Rendering, 2007, for one method.
- Enhancing Time-Lapse Video
Given a time-lapse video of a dynamic event such as plant growth or animal activity, synthesize a new video that removes short-term motion jitter and shows or summarizes the real motion.
- Image Abstraction
Implement and extend methods for image abstraction such as those by H. Kang and S. Lee given
- Image Analogies
Implement and extend the Image Analogies
paper by A. Hertzmann.
- Automatic Creation of OOB-style Images
Implement a method for creating OOB style images. Build on ideas in the paper
3D-aware Image Editing for Out of Bounds Photography by A. Shesh et al.
- Mobile Vision
Vision on smart phones is an area of great potential because phones now have cameras, web connection,
and GPS. Applications such as SnapTell and ViPR are early examples. Devise an interesting
application for use on this type of device and prototype it.
- Image Synthesis of Noun Phrases
Given a simple noun phrase such as "Five big red balloons" synthesize an image that
depicts that phrase.
- Visualizing Proper Nouns
Given a proper noun, use an existing search engine to collect a set of images and then select/compose/modify
one or more of them automatically to create an output image.
- Haze Removal
Remove haze from a single input image using the method by K. He et al. in
Single Image Haze Removal using Dark Channel Prior.
Implement a method for defocusing for improving photo quality that simulates decreasing the depth of field,
such as the one by
Bae and Durand
- Tone Adjustment
Implement and extend a method for tone adjustment such as described in the paper by
Lischinski et al. or the paper by
Bae et al.
- Anonymizing Images
Implement a method for anonymizing a particular class of images such as those containing faces or text.
- Add/Subtract Aerial Perspective in Images
The fact that distant mountains look bluish and the further away they are, the bluer
and brighter they appear is called "airlight," which is a type of "aerial perspective"
that painters such as Leonardo da Vinci have known about since the Renaissance.
Implement a method for adding airlight effects to images or subtracting airlight effects from images
of outdoor scenes.
This and other interesting effects are described in the wonderful books
(1) M.G.J. Minnaert, Light and Color in the Outdoors, and
(2) D.K. Lynch and W. Livingston, Color and Light in Nature.
- Photo Tourism
Implement a version of the
Photo Tourism project at the University of Washington and Microsoft.
- Content Based Image Synthesis
Implement a version of the paper "Content Based Image Synthesis" by N. Diakopoulos et al.
and on their project web page.
- Automatically find good prototypical images for words
Given a word, image search engines return a ranked list of images that have that word in a caption or
as part of the file name, but the top images are frequently not very typical of the word.
Devise a way to rerank these image results so that the top 1-3 images are good prototypes.
See, for example, Y. Jing and S. Baluja,
VisualRank: Applying PageRank to Large-Scale Image Search,
IEEE Trans. Pattern Analysis and Machine Intelligence, 2008.
Another recent project is
Harvesting Image Databases from the Web by F. Schroff et al.
- Using Web Community Image Collections
Very large public image collections are now available on the web, some tagged and some not.
Applications are being developed
that exploit this growing collection for tasks such as image completion (Hays et al., 2007),
Photo Tourism (Snavely et al., 2006), internet stereo (Goesele et al., 2007),
photo clipart (Lalonde et al., 2007), object recognition (Torralba et al., 2008),
and finding paths through a set of photos (Snavely et al., 2008).
Choose one of these to re-implement a part of, or develop your own task and method.
- Use manually-labeled datasets of images for a novel task
Recently a number of online games have been created that ask users to manually label images or segment
images in order to collect a lot of training data for use by vision algorithms. Devise an
interesting task that can make use of one of these sources of data. Some of the games and their
- Video epitomes
Implement a version of video epitomes and use it for a task such as those suggested at
the author's web site
- Where am I?
Develop a method for solving a "where am I" type problem such as:
Given a set of images taken at known GPS locations, find the approximate GPS location of a test image taken
at an unknown location but roughly in the same area (view overlap).
- Video Textures
Implement and extend the
video textures method.