Converting Noise Equivalent Temperature Difference to NER/NEI for EOIR

« Go Back

Information

 
Question
Answer

Infrared sensors often specify their radiometric performance in units of Noise Equivalent Temperature Difference (NETD, or sometimes NEDeltaT). This value describes the smallest temperature difference that the sensor can detect before the signal gets lost in electronic noise. Smaller NETDs are better. These values are usually specified at some reference temperature.

In STK EOIR, sensor radiometric properties need to be described in terms of Noise Equivalent Radiance (NER) or Noise Equivalent Irradiance (NEI). The sample Python script below converts NETD to an NER/NEI that can be used within STK. This is done by calculating the inband radiance, L, of a blackbody by integrating Planck's equation over the input sensor bandpass. The partial derivative of this radiance integral with respect to temperature, dL/dT, is computed and evaluated at the NETD reference temperature. This output value describes the change in inband radiance with respect to temperature. This dL/dT value can be multiplied with the NETD specification to produce the NER. Additionally, if the projected solid angle and spectral transmittance of the optical system is available, NER can be multiplied by both values to produce the NEI. These produce useful values that can be populated in EOIR's radiometrics tab for infrared sensor performance analysis.

 

"""
This script converts Noise Equivalent Temperature Difference (NETD) into Noise Equivalent Radiance (NER)
and Noise Equivalent Irradiance (NEI) for EOIR modeling.

Inputs:
refTemp (float): Reference temperature for NETD in Kelvin
netd (float): NETD spec to be converted in Kelvin
lowBand (float): Lower edge of sensor wavelength bandpass in meters
highBand (float): Upper edge for sensor wavelength bandpass in meters
f_number (float): F/# of sensor optics, unitless
opticalTransmittance (float): Spectral transmittance of optics over the sensor bandpass, unitless, bounded from 0.0 to 1.0
"""

from scipy.integrate import quad
from scipy.differentiate import derivative
from scipy import constants
from scipy import special
import numpy as np

def spectralRadiance(wavelength, T):
    # Planck's law of black-body integration
    k = constants.Boltzmann
    h = constants.Planck
    c = constants.c
    return (2*h*c**2/wavelength**5)*special.expm1((h*c)/(wavelength*k*T))**-1

def inbandRadiance_scalar(T, startWavelength, stopWavelength):
    # Integrating spectral radiance function
    integral, _ = quad(spectralRadiance, startWavelength, stopWavelength, args=(T,))
    return integral
inbandRadiance = np.vectorize(inbandRadiance_scalar)

# INPUTS
refTemp = 293.15            # K
netd = 25e-3                # K
lowBand = 1.5e-6            # m
highBand = 5e-6             # m
f_number = 2.0              # unitless
opticalTransmittance = 1.0  # unitless

entranceRadiance = inbandRadiance_scalar(refTemp, lowBand, highBand)                        # W/m^2/sr
dLdT = derivative(inbandRadiance, refTemp, args=(lowBand, highBand), initial_step=0.01).df  # W/m^2/sr/K
ner = dLdT * netd                                                                           # W/m^2/sr
projectedSolidAngle = constants.pi/(4*f_number**2+1)                                        # sr
nei = ner * projectedSolidAngle * opticalTransmittance                                      # W/m^2

print(f'Aperture Entrance Inband Radiance: {entranceRadiance/1e4:.4e} W/cm^2/sr')
print(f'Noise Equivalent Radiance: {ner/1e4:.4e} W/cm^2/sr')
print(f'Noise Equivalent Irradiance: {nei/1e4:.4e} W/cm^2')
TitleConverting Noise Equivalent Temperature Difference to NER/NEI for EOIR
URL NameConverting-Noise-Equivalent-Temperature-Difference-to-NER-NEI
FamilyMissions

Related Files