scarlet.detect¶
- class scarlet.detect.QuadTreeRegion(bbox, capacity=5, sub_regions=None, boxes=None, depth=0, detect=None)[source]¶
Bases:
object
An implementation of a QuadTree that inserts boxes as opposed to points
Methods
add
(other_box)Add a box to the region.
add_footprints
(footprints)Add bounding boxes for a list of scarlet footprints.
query
(other_box)Return all of the boxes that overlap with a given box
split
()Sub-divide this region into 4 sub-regions.
- add(other_box)[source]¶
Add a box to the region.
- Parameters
- other_box: `scarlet.bbox.Box`
The box to add to the region.
- add_footprints(footprints)[source]¶
Add bounding boxes for a list of scarlet footprints.
- Parameters
- footprints: `list` of `scarlet.detect_pybind11.Footprint`
A list of footprints detected by scarlet.
- query(other_box)[source]¶
Return all of the boxes that overlap with a given box
- Parameters
- other_box: `scarlet.bbox.Box`
The box to use for the search. All boxes in this region or one of its sub-regions that overlap with other_box will be returned.
- Returns
- result: set of scarlet.bbox.BoundingBox
The set of all boxes that overlap with other_box. We use a set instead of a list because some boxes may be in multiple sub-regions and we only want to have one copy of each.
- class scarlet.detect.SingleScaleStructure(scale, footprint)[source]¶
Bases:
object
A structure at a single scale with quadtrees to lookup child boxes at different scales.
Using the terminology from Starck et al. 2011 we refere to a connected set of pixels with a common set of peaks at a single scale as a structure.
- Attributes
- scale: `int`
The wavelet scale of this structure.
- footprint: `scarlet.detect_pybind11.Footprint`
The footprint of this structure at its given scale.
- bbox: `scarlet.bbox.Box`
The bounding box of this region.
- peaks: `dict`: {`int`, `list` of `scarlet.detect_pybind11.Peak`}
The dictionary with each wavelet scale as a key with lists of `Peak`s as values.
Methods
add_footprint
(scale, footprint)Add a footprint to the strcuture
add_scale_tree
(scale, tree)Add all of the footprints from a region at a different scale that overlap with this structure.
- add_footprint(scale, footprint)[source]¶
Add a footprint to the strcuture
- Parameters
- scale: `int`
The scale of the footprint that is added.
- `footprint`: `scarlet.detect_pybind11.Footprint`
The footprint to be added to the structure.
- add_scale_tree(scale, tree)[source]¶
Add all of the footprints from a region at a different scale that overlap with this structure.
- Parameters
- scale: `int`
The scale of the tree that is added.
- tree: `QuadTreeRegion`
The quad tree that is added at scale scale.
- property all_peaks¶
All of the peaks contained in this Structure
- Returns
- all_peaks: set
The set of all peaks in the structure, including those at different scales.
- scarlet.detect.bounds_to_bbox(bounds)[source]¶
Convert the bounds of a Footprint into a Box
- Parameters
- bounds: `tuple` of `(bottom, top, left, right)`
The bounds of the Footprint
- scarlet.detect.box_intersect(box1, box2)[source]¶
Check if two boxes overlap
- Parameters
- box1, box2: `scarlet.bbox.Box`
The boxes to check for overlap
- Returns
- overlap: bool
True when the two boxes overlap
- scarlet.detect.draw_box(box, ax, color)[source]¶
Draw a box on an axis
- Parameters
- box: `scarlet.bbox.Box`
The box to draw
- ax: `matplotlib.Axis`
The axis on which to draw the box
- color: `str`
The name of the color to use for the box
- scarlet.detect.draw_footprint_box(footprint, ax)[source]¶
Draw a scarlet Footprint in a plot
- Parameters
- footprint: `scarlet.detect_pybind11.Footprint`
The footprint to draw
- ax: `matplotlib.Axis`
The axis on which to draw the box
- scarlet.detect.draw_region(region, ax)[source]¶
Draw a QuadTreeRegion in a plot
- Parameters
- region: `QuadTreeRegion`
The region to draw
- ax: `matplotlib.Axis`
The axis on which to draw the box
- scarlet.detect.footprint_intersect(footprint1, box1, footprint2, box2)[source]¶
Check if two footprints overlap
- Parameters
- box1, box2: `scarlet.bbox.Box`
The boxes of the footprints to check for overlap.
- footprint1, footprint2: `scarlet.detect_pybind11.Footprint`
The boolean mask for the two footprints.
- Returns
- overlap: bool
True when the two footprints overlap.
- scarlet.detect.get_blend_structures(detect)[source]¶
Generate a set of structures for the 3rd wavelet scale
This is a convenience function to generate a hierarchy connecting all of the footprints at lower scales to the higher scale structures that overlap with them.
- scarlet.detect.get_detect_wavelets(images, variance, scales=3)[source]¶
Get an array of wavelet coefficents to use for detection
Parameters images: array-like
The array of images with shape (bands, Ny, Nx) for which to calculate wavelet coefficients.
- variance: array-like
An array of variances with the same shape as images.
- scales: int
The maximum number of wavelet scales to use. Note that the result will have scales+1 total arrays, where the last set of coefficients is the image of all flux with frequency greater than the last wavelet scale.
- scarlet.detect.get_wavelets(images, variance, scales=3)[source]¶
Calculate wavelet coefficents given a set of images and their variances
- Parameters
- images: array-like
The array of images with shape (bands, Ny, Nx) for which to calculate wavelet coefficients.
- variance: array-like
An array of variances with the same shape as images.
- scales: `int`
The maximum number of wavelet scales to use. Note that the result will have scales+1 total arrays, where the last set of coefficients is the image of all flux with frequency greater than the last wavelet scale.
- Returns
- coeffs: numpy.ndarray
The array of coefficents with shape (scales+1, bands, Ny, Nx).