opticks.imaging_model.imaging_chain

Top-level imaging pipeline composed of an Imager and an optional Processing.

Classes

ImagingChain(imager[, processing])

Top-level imaging pipeline: an Imager and an optional Processing.

class ImagingChain(imager, processing=None)[source]

Top-level imaging pipeline: an Imager and an optional Processing.

Holds an Imager (the physical imaging hardware: optics, detector, read/write electronics) and an optional Processing component (resampling, sharpening, etc.) that operates on data after the imager produces it.

Parameters:
  • imager (Imager) – Imaging hardware (optics + detector + optional read/write electronics).

  • processing (Processing, optional) – Post-acquisition processing component.

projected_horiz_img_extent(distance, band_id)[source]

Computes the projected horizontal image extent at some distance.

The image extent is computed on a “flat surface” at the distance.

Return type:

Quantity

Parameters:
  • distance (Quantity) – distance to the target or plane

  • band_id (str) – band ID (to select the correct band or channel)

Returns:

Quantity – Projected horizontal image extent

projected_vert_img_extent(distance, band_id)[source]

Computes the projected vertical image extent at some distance.

The image extent is computed on a “flat surface” at the distance.

Return type:

Quantity

Parameters:
  • distance (Quantity) – distance to the target or plane

  • band_id (str) – band ID (to select the correct band or channel)

Returns:

Quantity – Projected vertical image extent

spatial_sample_distance(distance, band_id, with_binning=True, location='centre')[source]

Computes the Spatial Sampling Distance (SSD) at some distance.

The SSD is computed on a “flat surface” at the distance. The location can be centre, centre left, centre right, centre top, centre bottom or corner.

  • centre corresponds to the boresight LoS vector corresponding to the channel pixels.

  • centre left, centre right are equivalent and they correspond to the horizontal centre points or 3 o’clock and 9 o’clock positions of the channel pixels.

  • centre top, centre bottom are equivalent and they correspond to the vertical centre points or 12 o’clock and 6 o’clock positions of the channel pixels

  • corner corresponds to any corner of the channel pixels.

As the ifov is constant, the horizontal and vertical SSD are not necessarily equal. This is particularly evident with large pixel sizes and large FoVs.

The result is a namedtuple and the horizontal and vertical SSD values can be queried with horiz and vert, respectively.

Parameters:
  • distance (Quantity) – distance between the imager and the target

  • band_id (str) – band ID (to select the correct band or channel)

  • with_binning (bool, optional) – Return the value with binning or not

  • location (str, optional) – Location on the detector

Returns:

  • (Quantity, Quantity) – Spatial Sampling Distance with or without binning (horizontal and vertical)

  • rtype: tuple[Quantity, :py:class::py:class:`~astropy.units.quantity.Quantity`]``

Return type:

tuple[Quantity, Quantity]