Point Spread Function

template<IsSpectral TSpectral>
class PSF

Abstract base class for point spread functions (PSF).

Defines the interface and cache management for all PSF types, supporting polyphase kernel generation.

Template Parameters:

TSpectral – The spectral representation type.

Subclassed by huira::AiryDisk< TSpectral >

Public Functions

PSF() = default
virtual ~PSF() = default
virtual TSpectral evaluate(float x, float y) = 0
void build_polyphase_cache(int radius, int banks)

Builds the polyphase kernel cache for the PSF.

Allocates and fills the cache with polyphase kernels for efficient PSF evaluation.

Parameters:
  • radius – The kernel radius in pixels.

  • banks – The number of polyphase banks.

const Image<TSpectral> &get_kernel(float u, float v) const

Retrieves the polyphase kernel for the given normalized coordinates.

Returns the cached kernel corresponding to the specified subpixel position.

Parameters:
  • u – Normalized horizontal coordinate in [0, 1].

  • v – Normalized vertical coordinate in [0, 1].

Returns:

Reference to the corresponding kernel image.

inline std::vector<Image<TSpectral>> get_all_kernels() const
inline int get_radius() const
inline int get_banks() const

Protected Attributes

struct huira::PSF::PolyphaseCache cache_
struct PolyphaseCache

Public Members

int radius = 0
int dim = 0
int banks = 0
std::vector<Image<TSpectral>> kernels