cp toolbox - ISET/isetcam GitHub Wiki
This will move to a separate ISET repository, probably isetcomputationalphotography (or something shorter), this summer
Computational Photography toolbox for ISETCam
Increasingly, advances in consumer imaging are being driven by the composition of a photograph from multiple captures. Loosely, this is called computational photography (which we'll abbreviate CP). While it has always been possible to research CP techniques in ISETCam, it has always required a lot of hand-crafted, usually one-off, code. The CP classes are designed to provide a coherent framework for exploration in this area.
CP Toolbox Classes
The top-level class for simulated cameras is "cpCamera." It supports a fairly generic set of features, and is primarily used as a base class for more specialized sub-classes. cpBurstCamera is an important one of those. It adds support for bracketing and burst photography, either done "in sensor" (by combining voltages from multiple frames) or in an ISP (using image registration and tone mapping if needed). That portion of the imaging pipeline is handled by a cpIP class, which in turn is sub-classed to cpBurstIP to handle ISP-based processing. cpCameras can have one or more camera modules, mimicking modern smartphone design. Currently, only one module of class cpCModule is supported, which in turn contains a single sensor and lens.
The camera, just like in the rest of ISETCam, can capture images from scenes. However, to support multi-frame scenes (either from pbrt, from ISET scene files, or from existing images) the cpScene class adds additional functionality to the standard ISETCam scene struct.
Most of the cp* classes wrap their peer classes from ISETCam. So cpIP wraps ip, the lens and sensor properties of cpIP objects are optics and ip structs, and the cpScene class is a wrapper on the ISETCam scene struct, with additional functionality.