Psych221 Camera Design
Imagine that you work for a cell phone company and you have been assigned the task of selecting the components for a camera that will be built into the phone. Because you work for a large vendor, you have parts suppliers calling you every day encouraging you to purchase their devices. Typically, these suppliers offer one component and it is your job to assemble a large variety of components into a working system.
In this project you will be asked to develop a method to make these purchasing decisions. Specifically, you will have to decide on which lens, anti-aliasing and IR filter, sensor, and color filter array you would like to use for your system.
Background
Your choice of optical components, pixel and sensors, and color filters is limited by that annoying thing called reality - not everything can be built. Still, there are many components and many possible combinations, and the choice of one component can have an impact on the selection of other components. For your project, we offer a list that you can choose from to build your camera. These are described here; we also provide some code to make it easy for you to build your model system.
There is a tutorial script that shows you how to set parameters, create different color filter arrays, and evaluate some of the metrics. We hope you will look through this script and use it as a basis for your own experiments.
Relevant script: t_Project_CD.m
List of Components
Optics
Anti-aliasing and IR filter
Pixel and Sensors
Color filters
Relevant scripts:
Test Scenes and Images
The test images should include targets that help you evaluate the quality of your system. There are four general types of targets that you should include. These are:
- Macbeth (Gretag) Color Checker
- Slanted Bar target
- Uniform field
- A high dynamic range multispectral image.
The first three scenes can be generated using the ISET function sceneCreate.
You can download a set of multispectral images
It is also possible for you to create additional scenes or obtain additional images, if you would like to understand the system you are designing better.
In all cases, to simplify the project, you can assume that the illuminant is a D65 spectral power distribution.
Note: A real system would have to account for the fact that images are acquired under different iluminants. If you address this problem, you will get extra credit.
Relevant scripts:
Post-processing
All processing from the sensor to an image will use a single, simple pipeline. There is no denoising or image sharpening in this pipeline. It is a simple bilinear spatial interpolation of the sensor data and a single color transformation that accounts for the spectral characteristics of the sensors under the D65 illuminant.
Evaluation Methods
The way you decide to evaluate the assembled components is crucial. We will ask you to explain your choice. In choosing the methodology, you must include assessments of
- Color accuracy
- Signal-to-noise
- Sensitivity (low-light) quality and dynamic range
- Spatial resolution (blur)
There are examples of ISET scripts that calculate each of these metrics. You may decide to test your system using other metrics as well - and perhaps the biggest challenge you will have is to understand the tradeoffs between these different metrics and to compromise between the different optimizations.
Relevant scripts:
Color Accuracy
- scripts/metrics/s_macbethDeltaE
SNR
- scripts/sensor/s_sensorSNR.m
Spatial Resolution
- scripts/metrics/slantedBarMTF.m
Helpful and Friendly Advise
Joyce Farrell (mailto:joyce_farrell@stanford.edu)
TODO
In general, we need a script that illustrates how to set the optics parameters, pixel, color filter array, anti-aliasing filter from the list we have create. This can be based on s_simulateSensor.
Assemble a zip file of multispectral images
Select the possible optics and tell them how to put them in the path. These will all be diffraction limited, but they will be different f-numbers.
Create different anti-aliasing and IR filter possibilities
Set up pixels/sensors sensors - Keep the sensor dye-size fixed, choose pixel sizes, noises,
Redo the online programmer's index of functions