Camera Systems - ISET/isetcam GitHub Wiki


The combined camera object

Every Core Pipeline example so far builds the optical image, sensor, and image processor as three separate structures. ISETCam also provides a camera object that bundles all three so a complete system can be created, computed, and queried with one set of calls — useful when you want to sweep a lens or sensor parameter and see the effect on the final rendered image without managing each stage by hand.

scene  = sceneCreate;
camera = cameraCreate;                      % Default oi + sensor + ip
camera = cameraCompute(camera,scene);       % Runs oi -> sensor -> ip

cameraWindow(camera,'ip');                  % View any stage: 'oi'|'sensor'|'ip'
sRGB   = cameraGet(camera,'ip data srgb');  % Pull out the rendered image

% Change a parameter and recompute
camera = cameraSet(camera,'optics fnumber',16);
camera = cameraCompute(camera,scene);

cameraCreate also accepts 'current' (use the currently selected oi, sensor, and ip), 'ideal' (a diffraction-limited, noise-free sensor with XYZ filters, useful as a reference), and 'monochrome'. cameraCompute can restart the calculation partway through — cameraCompute(camera,'oi') or cameraCompute(camera,'sensor') — so you can, for example, hold the optical image fixed while sweeping sensor or image-processing parameters without recomputing the optics each time.

Recommended tutorials and examples

  • First camera simulationt_cameraIntroduction walks through the camera object directly, including the parameter-sweep pattern above; t_SystemSimulate and t_introduction2ISET build the same pipeline from the individual objects for comparison.
  • Sensors and camera systemst_cameraNoise, t_cameraAntiAliasing, and t_cameraCompute use the camera object to study specific system-level effects.

Related FISE concepts

The online Foundations of Image Systems Engineering (FISE) develops full-system camera design trade-offs as conceptual background.

Experimental and historical camera-system tools

A few other camera-system surfaces exist in the repository but are not part of the current recommended workflow:

  • cp-toolbox — a computational-photography class hierarchy (cpCamera, cpBurstCamera, cpIP, ...) for burst and bracketed capture. Its own page has said since at least 2024 that it would move to a separate repository "this summer"; the cp/ directory is still part of ISETCam with no commits since August 2024, so treat it as experimental and unmaintained rather than a supported starting point.
  • Camera Design Window — describes an experimental ieCameraDesigner.mlapp GUI. That file could not be found in the current source tree; verify it still exists before relying on this page.

Both are left in place as historical reference rather than removed, per this wiki's convention of preserving context instead of silently deleting pages — but neither should be presented to a new user as a current recommended path. If you want full-pipeline simulation today, use the camera object above.