topostats.filters#
Module for filtering 2D Numpy arrays.
Attributes#
Classes#
Class for filtering scans. |
Module Contents#
- topostats.filters.LOGGER#
- class topostats.filters.Filters(image: numpy.ndarray, filename: str, pixel_to_nm_scaling: float, row_alignment_quantile: float = 0.5, threshold_method: str = 'otsu', otsu_threshold_multiplier: float = 1.7, threshold_std_dev: dict = None, threshold_absolute: dict = None, gaussian_size: float = None, gaussian_mode: str = 'nearest', remove_scars: dict = None)[source]#
Class for filtering scans.
- filename#
- pixel_to_nm_scaling#
- gaussian_size = None#
- gaussian_mode = 'nearest'#
- row_alignment_quantile = 0.5#
- threshold_method = 'otsu'#
- otsu_threshold_multiplier = 1.7#
- threshold_std_dev = None#
- threshold_absolute = None#
- remove_scars_config = None#
- images#
- thresholds = None#
- medians#
- results#
- median_flatten(image: numpy.ndarray, mask: numpy.ndarray = None, row_alignment_quantile: float = 0.5) numpy.ndarray [source]#
Flatten images using median differences.
Flatten the rows of an image, aligning the rows and centering the median around zero. When used with a mask, this has the effect of centering the background data on zero.
Note this function does not handle scars.
- Parameters:
image (np.ndarray) – 2-D image of the data to align the rows of.
mask (np.ndarray) – Boolean array of points to mask out (ignore).
row_alignment_quantile (float) – Quantile (0.0 to 1.0) used for defining the average background.
- Returns:
Returns a copy of the input image with rows aligned
- Return type:
np.ndarray
- remove_tilt(image: numpy.ndarray, mask: numpy.ndarray = None)[source]#
Remove planar tilt from an image (linear in 2D space).
Uses a linear fit of the medians of the rows and columns to determine the linear slants in x and y directions and then subtracts the fit from the columns.
- Parameters:
image (np.ndarray) – 2-D image of the data to remove the planar tilt from.
mask (np.ndarray) – Boolean array of points to mask out (ignore).
img_name (str) – Name of the image (to be able to print information in the console).
- Returns:
Returns a copy of the input image with the planar tilt removed
- Return type:
np.ndarray
- remove_nonlinear_polynomial(image: numpy.ndarray, mask: numpy.ndarray | None = None) numpy.ndarray [source]#
Fit and remove a “saddle” shaped nonlinear polynomial from the image.
“Saddles” with the form a + b * x * y - c * x - d * y from the supplied image. AFM images sometimes contain a “saddle” shape trend to their background, and so to remove them we fit a nonlinear polynomial of x and y and then subtract the fit from the image.
If these trends are not removed, then the image will not flatten properly and will leave opposite diagonal corners raised or lowered.
- Parameters:
image (np.ndarray) – 2D numpy heightmap array of floats with a polynomial trend to remmove.
mask (np.ndarray) – 2D numpy boolean array used to mask out any points in the image that are deemed not to be part of the heightmap’s background data. This argument is optional.
- Returns:
Copy of the supplied image with the polynomial trend subtracted.
- Return type:
np.ndarray
- remove_quadratic(image: numpy.ndarray, mask: numpy.ndarray = None) numpy.ndarray [source]#
Remove the quadratic bowing that can be seen in some large-scale AFM images.
Use a simple quadratic fit on the medians of the columns of the image and then subtracts the calculated quadratic from the columns.
- Parameters:
image (np.ndarray) – 2-D image of the data to remove the quadratic from.
mask (np.ndarray) – Boolean array of points to mask out (ignore).
- Returns:
Returns a copy of the input image with the quadratic bowing removed
- Return type:
np.ndarray
- static calc_diff(array: numpy.ndarray) numpy.ndarray [source]#
Calculate the difference of an array.
- calc_gradient(array: numpy.ndarray, shape: int) numpy.ndarray [source]#
Calculate the gradient of an array.
- average_background(image: numpy.ndarray, mask: numpy.ndarray = None) numpy.ndarray [source]#
Zero the background by subtracting the non-masked mean from all pixels.
- Parameters:
image (np.array) – Numpy array representing image.
mask (np.array) – Mask of the array, should have the same dimensions as image.
- Returns:
Numpy array of image zero averaged.
- Return type:
np.ndarray
- gaussian_filter(image: numpy.ndarray, **kwargs) numpy.array [source]#
Apply Gaussian filter to an image.
- Parameters:
image (np.array) – Numpy array representing image.
- Returns:
Numpy array of gaussian blurred image.
- Return type:
np.array
- filter_image() None [source]#
Process a single image, filtering, finding grains and calculating their statistics.
Example
from topostats.io import LoadScan from topostats.topotracing import Filter, process_scan
filter = Filter(image=load_scan.image, … pixel_to_nm_scaling=load_scan.pixel_to_nm_scaling, … filename=load_scan.filename, … threshold_method=’otsu’) filter.filter_image()