CS 478 - Computational photography (Winter 2011)

"Hello Camera" Assignment

Due February 1, 2012 at 2:00 p.m.

Introduction: This assignment is an exercise intended to introduce you to the Frankencamera API, NVIDIA's Tegra platform, and the Android SDK, and should get your feet wet and your brain rolling for the term project. You will implement an autofocus algorithm on the Tegra tablet, and in doing so, you will gain understanding of the challenges involved in interfacing with a camera on a mobile platform.

Historical Note: A previous iteration of this assignment was offered in Winter 2009, using Nokia N900. Several students came up with autofocus algorithms that performed better than the stock Nokia implementation!

Steps:

  1. Getting Started: How to get set up.
  2. Overview: Quick guide to the code provided.
  3. Tasks: Things to do.

Deliverables:

  1. A zipped archive of your code. A tarball of fcam directory will suffice.
  2. An electronic copy of your write-up. Plaintext e-mail is OK.
  3. Sign up for a 10-minute grading session for you to demonstrate the functionality of the camera application with your autofocus implementation.

Send the above materials to cs478.win12.staff@gmail.com in an email with subject "[CS478] Assignment #1 - John Doe", where you replace John Doe with your full name.

Getting Started

You will be developing for the Tegra tablet, which runs the Android OS. Currently we have tested development on Windows 7 64-bit, Ubuntu 64-bit (Koala and Ocelot), and Mac OSX.

Managing your Tegra tablet [PLEASE READ]: The distribution of the Tegra tablets is made possible by the generosity of NVIDIA. Please take good care of these devices!

Below is the list of steps for getting started with the code skeleton we provide. Don't be alarmed at the sheer number of the steps, as the procedure needs to be performed only once. [SHOW/HIDE]

Overview

There are several major components at work when the code skeleton compiles and runs. If you are not familiar with Android development or JNI, this explanation may help.

Check out the lecture slides on the codebase for a more visual overview of the codebase structure.

If you have never tried Android programming, feel free to try out the Hello World example from Android Developers site. (Scroll down directly to "Create a New Android Project".)

You should have successfully executed the skeleton code by now. It is a functional camera application, equipped with a viewfinder, user interface for changing settings, and it will save pictures into /data/media/DCIM/fcam in the tablet. (Use adb pull to upload the images onto your machine. See ADB documentation for usage.) Play around with the settings to observe what they do. Note that in order for you to appreciate the setting changes, it is best to set everything to manual first, as changing one setting might cause another setting to compensate for it, in case the latter is in automatic mode.

In theory, it is possible to complete the assignment by changng the following files only (though you may freely edit the others or add new files as well. Your task is described in detail in the next section.) These files have sections marked "TODO"---it is hard to miss them.


Tasks

Write-up:


Tips & Bugs:


© 2011-2012 Jongmin Baek