centroid_sources#

photutils.centroids.centroid_sources(data, xpos, ypos, box_size=11, footprint=None, mask=None, centroid_func=<function centroid_com>, **kwargs)[source]#

Calculate the centroid of sources at the defined positions.

A cutout image centered on each input position will be used to calculate the centroid position. The cutout image is defined either using the box_size or footprint keyword. The footprint keyword can be used to create a non-rectangular cutout image.

Parameters:
data2D ndarray

The 2D image data. The image should be background-subtracted.

xpos, yposfloat or array_like of float

The initial x and y pixel position(s) of the center position. A cutout image centered on this position be used to calculate the centroid.

box_sizeint or array_like of int, optional

The size of the cutout image along each axis. If box_size is a number, then a square cutout of box_size will be created. If box_size has two elements, they must be in (ny, nx) order. box_size must have odd values for both axes. Either box_size or footprint must be defined. If they are both defined, then footprint overrides box_size.

footprintbool ndarray, optional

A 2D boolean array where True values describe the local footprint region to cutout. footprint can be used to create a non-rectangular cutout image, in which case the input xpos and ypos represent the center of the minimal bounding box for the input footprint. box_size=(n, m) is equivalent to footprint=np.ones((n, m)). Either box_size or footprint must be defined. If they are both defined, then footprint overrides box_size. The same footprint is used for all sources.

mask2D bool ndarray, optional

A 2D boolean array with the same shape as data, where a True value indicates the corresponding element of data is masked.

centroid_funccallable, optional

A callable object (e.g., function or class) that is used to calculate the centroid of a 2D array. The centroid_func must accept a 2D ndarray, have a mask keyword and optionally an error keyword. The callable object must return a tuple of two 1D ndarray, representing the x and y centroids. The default is centroid_com.

**kwargsdict, optional

Any additional keyword arguments accepted by the centroid_func.

Returns:
xcentroid, ycentroidndarray

The x and y pixel position(s) of the centroids. NaNs will be returned where the centroid failed. This is usually due a box_size that is too small when using a fitting-based centroid function (e.g., centroid_1dg, centroid_2dg, or centroid_quadratic).

Examples

>>> import numpy as np
>>> from photutils.centroids import centroid_2dg, centroid_sources
>>> from photutils.datasets import make_4gaussians_image
>>> data = make_4gaussians_image()
>>> data -= np.median(data[0:30, 0:125])
>>> x_init = (25, 91, 151, 160)
>>> y_init = (40, 61, 24, 71)
>>> x, y = centroid_sources(data, x_init, y_init, box_size=25,
...                         centroid_func=centroid_2dg)
>>> print(x)  
[ 24.96807828  89.98684636 149.96545721 160.18810915]
>>> print(y)  
[40.03657613 60.01836631 24.96777946 69.80208702]

(Source code, png, hires.png, pdf, svg)

../_images/photutils-centroids-centroid_sources-1.png