Introduction¶
Overview¶
Electro-optical system design, data analysis and modelling involve a significant amount of calculation and processing. Many of these calculations are of a repetitive and general nature, suitable for including in a generic toolkit. The availability of such a toolkit facilitates and increases productivity during subsequent tool development: ‘develop once and use many times’. The concept of an extendible toolkit lends itself naturally to the open-source philosophy, where the toolkit user-base develops the capability cooperatively, for mutual benefit. This paper covers the underlying philosophy to the toolkit development, brief descriptions and examples of the various tools and an overview of the electro-optical toolkit.
The pyradi toolbox can be applied towards many different applications. An example is included in the pyradi website (see the file exflamesensor.py). This example was first published in a SPIE conference paper [SPIE8543Pyradi].
Toolkit approach¶
The development of this toolkit is following the Unix philosophy for software development, summarised in the words of Doug McIlroy: ‘Write programs that do one thing and do it well. Write programs to work together.’ In broader terms the philosophy was stated by Eric Raymond, but only selected items shown here (http://en.wikipedia.org/wiki/Unix_philosophy):
- Rule of Modularity: Write simple parts connected by clean interfaces.
- Rule of Clarity: Clarity is better than cleverness.
- Rule of Composition: Design programs to be connected to other programs.
- Rule of Simplicity: Design for simplicity; add complexity only where you must.
- Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
- Rule of Transparency: Design for visibility to make inspection and debugging easier.
- Rule of Robustness: Robustness is the child of transparency and simplicity.
- Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
- Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
- Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
- Rule of Optimisation: Prototype before polishing. Get it working before you optimise it.
- Rule of Extensibility: Design for the future, because it will be here sooner than you think.
Example application¶
A typical radiometry toolkit requirement (very much simplified) is the calculation of the detector current of an electro-optical sensor viewing a target object. The system can be conceptually modelled as shown in the figure below, comprising a radiating source with spectral radiance, an intervening medium (e.g. the atmosphere), a spectral filter, optics, a detector and an amplifier.
The amplifier output signal can be calculated in the following equation, by integrating over all wavelengths, over the full source area and over the optical aperture area ,
where is the output signal voltage, is the distance between elemental areas and , is the source spectral emissivity, is the Planck Law radiation at temperature at location , is the atmospheric spectral transmittance, is the sensor spectral transmittance at location , is the spectral detector responsivity in [A/W], is the amplifier transimpedance gain in [V/A]. The spectral integral accounts for the total flux for all wavelengths, the spatial integral accounts for flux over the total area of the source, and the spatial integral accounts for the total area of the receiving area.
The top graphic in the following figure illustrates the reasoning behind the spectral integral as a product, followed by an integral (summation),
where the spectral variability of the source, medium and sensor parameters are multiplied as spectral variables and afterwards integrated over all wavelengths to yield the total in-band signal. The domain of spectral quantities can be stated in terms of a wavelength, wavenumber, or less often, temporal frequency.
Likewise, the source radiance is integrated over the two respective areas of the target , and the sensor aperture . Note that if the sensor field of view footprint at the source is smaller than the physical source area, only the flux emanating from the footprint area is integrated.
This example is a relatively complete worked example. The objective is to calculate the signal of a simple sensor, detecting the presence or absence of a flame in the sensor field of view. The sensor is pointed to an area just outside a furnace smokestack, against a clear sky background. The sensor must detect a change in signal, to indicate the presence or absence of a flame.
The sensor has an aperture area of and a field of view of sr. The sensor filter spectral transmittance is shown below. The InSb detector has a peak responsivity of 2.5 A/W and normalised spectral response shown below. The preamplifier transimpedance is 10000 V/A.
The flame area is 1 , the flame temperature is C, and the emissivity is shown below. The emissivity is 0.1 over most of the spectral band, due to carbon particles in the flame. At 4.3 there is a strong emissivity rise due to the hot carbon dioxide in the flame.
The distance between the flame and the sensor is 1000~m. The atmospheric properties are calculated with the Modtran Tropical climatic model. The path is oriented such that the sensor stares out to space, at a zenith angle of . The spectral transmittance and path radiance along this path is shown in below.
The peak in the flame emissivity and the dip in atmospheric transmittance are both centered around the band. The calculation of flux radiative transfer through the atmosphere must account for the strong spectral variation, by using a spectral integral.
The signal caused by the flame is given by the equation above, where the integrals over the surfaces of the flame and sensor are just their respective areas. The signal caused by the atmospheric path radiance is given by
where is the sensor field of view, is the optical aperture area, is the spectral path radiance and the rest of the symbols are as defined above.
The pyradi code to model this sensor is available as exflamesensor.py. The output from this script is as follows:
Optics : area=0.0078 m^2 FOV=0.0001 [sr]
Amplifier: gain=10000.0 [V/A]
Detector : peak responsivity=2.5 [A/W]
Flame : temperature=1273.16 [K] area=1 [m^2] distance=1000 [m] fill=0.01 [-]
Flame : irradiance= 3.29e-04 [W/m^2] signal= 0.0641 [V]
Path : irradiance= 5.45e-05 [W/m^2] signal= 0.0106 [V]
It is clear that the flame signal is six times larger than the path radiance signal, even though the flame fills only 0.01 of the sensor field of view.
[SPIE8543Pyradi] | Pyradi: an open-source toolkit for infrared calculation and data processing, SPIE Proceedings Vol 8543, Security+Defence 2011, Technologies for Optical Countermeasures, Edinburgh, 24-27 September, C.J. Willers, M. S. Willers, R.A.T. Santos, P.J. van der Merwe, J.J. Calitz, A de Waal and A.E. Mudau. |