Preliminary ABET-style Syllabus
EE 599 - Cameras as Computing Systems: 3 Credits
EE 699 - Cameras as Computing Systems: 3 Credits
Cameras as Computing Systems is essentially an embedded computer engineering course about operation, construction, control, and programming of digital cameras.
This course will begin with an introduction to the basic principles of photography and operation of digital cameras. No experience or expertise in photography is required as a prerequisite, although many aspects of the discussion will be motivated by explaining photographic techniques. About one third of the course will be about the basic mechanisms and processes asociated with digital cameras.
The second third of the course will focus on control of image capture. Various techniques and mechanisms will be discussed, including in-camera environments such as Android and CHDK (the Canon Hack Development Kit, which allows users to run arbitrary C code inside PowerShot cameras). Tethered control also will be discussed in detail. Each student will implement at least one program controlling camera capture and will test it using actual camera hardware.
The last third of the course will center on novel types of digital manipulations of captured image data. Emphasis will be placed on techniques that are intimately tied to specific aspects of the capture process -- this is not a course in classical image processing and is intended to have minimal overlap with Matlab-heavy Image Processing, Computer Vision, or Computational Photography courses.
The primary distinction between the graduate and undergraduate versions of the course will be the handling of the projects. Graduate student (EE 699) projects will be significantly more open-ended, involving at least one project for which each student must individually propose, write-up, code, and present their final result to the class.
A good knowledge of C programming is expected, as all the programming will use environments building on C.
None required - Course notes
Although there are camera prototyping kits and industrial
cameras that could be used for this course, we prefer to use
consumer cameras. Many USB and FireWire webcams allow low-level
access. Various Canon PowerShot cameras support the level of
control desired using CHDK -- the Canon Hack Development Kit and some Canon EOS
cameras support similar access using Magic Lantern. The Android camera framework also provides a low-level
programmable interface to many consumer cameras.
Dr. Henry G. Dietz, Professor
The goal of this course is to have students understand operation, construction, control, and programming of digital cameras. There will be hands-on projects involving low-level programming of digital cameras.
For EE599: Undergraduate standing and fluency in C or a similar programming language
For EE699: Graduate standing and fluency in C or a similar programming language
Upon completion of this course the students should demonstrate the ability to:
Students will perform open-ended experiments using and
programming (commodity) camera hardware.
The bulk of the design content is in the form of students
designing and implementing C code controlling, or processing
data captured by, digital cameras. However, students will also
be made aware of and tested on design issues embedded in camera
construction -- the use of commodity camera hardware makes
hands-on design of the camera hardware impractical.
Lecture 3 hours per week.
Engineering Science: 1 Credit (33%)
Engineering Design: 2 Credits (67%)
RELATION OF COURSE TO PROGRAM OBJECTIVES:
These course outcomes fulfill the following program objectives:
PREPARED BY: Henry G. Dietz; last update: August 28, 2014