Skip to main content

The NEWTEC HSTI package contains fundamental functions for the data analysis of hyperspectral thermal images (HSTI).

Project description

This package contains functions used in data processing of hyperspectral images captured using a scanning Fabry-Pérot interferometer (FPI). This includes transmission simulations of the FPI itself.


Image handling

HSTI.import_data_cube(path)

This function imports the hyperspectral thermal datacube from the raw output of the camera. The path that the function uses as input must be the one containing the 'images' directory.

HSTI.import_image_acquisition_settings(path):

This function imports the image acquisition settings during the capturing event. The path that the function uses as input must be the one containing the 'images' directory.

HSTI.export_data_cube(cube, folder_name)

This function takes an HSTI numpy array and exports it as individual .ppm images to a folder given by folder_name.

HSTI.median_filter_cube(cube, kernel_size)

This function runs a median filter across the image plane. The size of the kernel must be defined.


Preprocessing

HSTI.mean_center(cube, axis = 's')

This function subtracts the mean from the data, either the mean of each spectrum (axis = 's') or the mean of each band (axis = 'b').

HSTI.autoscale(cube, axis = 's')

This function subtracts the mean and scales with STD. Setting axis = 's' is the same as doing SNV (standard normal variate).

HSTI.norm_normalization(cube, order, axis = 's')

This function uses the norm of a given order for normalization. If axis = 's', then each spectrum is divided by its norm. If axis = 'b', then every band is divided by the norm of the entire band.

HSTI.normalize(cube, axis = 's')

This function calculates the normalised cube. By setting axis = 's' each spectrum (pixel) will span from 0 to 1 and axis = 'b' normalizes each band individually.

HSTI.remove_stuck_px(cube)

This function removes the dead pixels in the bolometer by replacing them with the average of their non-zero neighbors.

HSTI.remove_outlying_px(cube, cut_off)

This function removes outlying pixel measurements of values higher than the cut off value.

HSTI.msc(cube, ref_spec = None)

__

HSTI.normalize_cube(cube)

__

HSTI.debend(cube, central_mirror_sep)

This function takes a single HSTI as input and returns a new spectral bending corrected cube. This does however require a vector containing the mirror separation corresponding to each band in the cube.

HSTI.baseline(cube)

This function subtracts the mean pixel value from every band in the datacube.

HSTI.normalize_pixel(cube)

This function normalises the entire data cube by dividing all bands by the sum of the bands in each individual pixel.

HSTI.subtract_band(cube, band)

This function subtracts the first band from the remaining bands in the datacube, effectively setting the first band to zero.

HSTI.flatten()

This function flattens the datacube into a two-dimensional array.

HSTI.inflate()

This function inflates the datacube into a three-dimensional array.

HSTI.median_filter_cube(cube, kernel_size)

__

HSTI.targeted_median_filter(array, px_idx, kernel_size)

__

HSTI.conf95lim(x)

__

HSTI.hottelings(X)

__

HSTI.array2rgb(three_layer_cube)

__

HSTI.apply_NUC_cube(cube, sensor_temp, GSK, NUC_directory = 'default')

This function calculates and applies a NUC to the entire datacube. The NUC is dependent on the sensor temperature and the GSK settings of the camera. The NUC is calculated from camera specific calibration files from the accompanying NUC directory.

HSTI.apply_NUC_image(image, sensor_temp, GSK, NUC_directory = 'default')

This function calculates and applies a NUC to a single image. The NUC is dependent on the sensor temperature and the GSK settings of the camera. The NUC is calculated from camera specific calibration files from the accompanying NUC directory.


Common analysis

HSTI.fps(points, n_seeds)

Function which distributes n_seeds (a numper of points) equally within a lists of points to obtain furthest point sampling.

The function takes in a list of points. Every entry in the list contains both the x and y coordinate of a given point. It returns the coordinates of the selected sample points.

HSTI.voronoi(array_2D, n_seeds)

This function accepts a 2-dimensional array (array_2D) and splits it up into N (n_seeds) subdomains. The partitioning is done based on furthest point sampling.

HSTI.mse(lst1, lst2)

This function returns the mean square error (MSE) between two lists of same length.

HSTI.r_sq(y_fit, y_meas)

This function returns the coefficeint of determination (R²) between fit values in list, y_fit, and measured data in list, y_meas.

HSTI.PCA()

__

.calculate_pca(self,matrix)

This function calculates the PCA of a two-dimensional input

.apply_pca(self,matrix)

This function returns the PCA loadings

HSTI.least_squares_methods.GLS()

HSTI.least_squares_methods.ALS()


FPI Simulation

HSTI.fpi_sim(mirror_sep, lam, temp)

This function uses the Transfer Matrix Method (TMM) to simulate the transmittance, reflectance of the FPI at given mirror separation (mirror_sep) and wavelength (lam). temp is the substrate temperature since the refractive index of Germanium is temperature dependent. This function DOES NOT take broadening due to substrate bending into account. The functions returns the transmittance, the reflectance, as well as the numeric loss of the simulation.

HSTI.fpi_sim_matrix(mirror_sep, lam, temperature)

The same as HSTI.fpi_sim(), but instead of single values, this function accepts vectors for mirror separation and wavelength. It then returns a 2D array of transmittance values of the FPIwhere each row represents a specific mirror separation while the each column indicates individual wavelengths. This function does take broadaning into account, but only returns the transmittance matrix. Since no loss is included in the model, the reflectance can be found by subtracting the transmittance matrix from a similar-sized matrix of ones.

HSTI.fpi_sim_matrix_angular(mirror_sep, lam, temperature, angle_in_deg)

This function is similar to HSTI.fpi_sim_matrix(), but also takes the angle between the incoming ray and the FPI as an argument.


Contact

For bug reports or other questions please contact mani@newtec.dk or alj@newtec.dk.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

HSTI-0.0.26.tar.gz (7.8 MB view hashes)

Uploaded Source

Built Distribution

HSTI-0.0.26-py3-none-any.whl (7.8 MB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page