lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
afw
detection
Footprint.h
Go to the documentation of this file.
1
/*
2
* LSST Data Management System
3
* Copyright 2008-2016 AURA/LSST.
4
*
5
* This product includes software developed by the
6
* LSST Project (http://www.lsst.org/).
7
*
8
* This program is free software: you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation, either version 3 of the License, or
11
* (at your option) any later version.
12
*
13
* This program is distributed in the hope that it will be useful,
14
* but WITHOUT ANY WARRANTY; without even the implied warranty of
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the LSST License Statement and
19
* the GNU General Public License along with this program. If not,
20
* see <https://www.lsstcorp.org/LegalNotices/>.
21
*/
22
#if !defined(LSST_DETECTION_FOOTPRINT_H)
23
#define LSST_DETECTION_FOOTPRINT_H
24
25
#include <algorithm>
26
#include <list>
27
#include <set>
28
#include <cmath>
29
#include <cstdint>
30
#include <memory>
31
#include "ndarray.h"
32
#include "
lsst/base.h
"
33
#include "
lsst/afw/image/MaskedImage.h
"
34
#include "
lsst/afw/detection/Peak.h
"
35
#include "
lsst/afw/geom/Span.h
"
36
#include "
lsst/afw/geom/SpanSet.h
"
37
#include "
lsst/geom/Box.h
"
38
#include "
lsst/afw/geom/ellipses.h
"
39
#include "
lsst/geom/LinearTransform.h
"
40
#include "
lsst/afw/geom/SkyWcs.h
"
41
#include "
lsst/afw/geom/Transform.h
"
42
#include "
lsst/afw/table/fwd.h
"
43
#include "
lsst/afw/table/Schema.h
"
44
#include "
lsst/afw/table/Key.h
"
45
#include "
lsst/afw/table/io/Persistable.h
"
46
#include "
lsst/afw/table/io/InputArchive.h
"
47
48
namespace
lsst
{
49
namespace
afw
{
50
namespace
detection
{
51
62
class
Footprint
:
public
afw::table::io::PersistableFacade
<lsst::afw::detection::Footprint>,
63
public
afw::table::io::Persistable
{
64
public
:
65
/*
66
* As a note there is no constructor which accepts a unique_ptr to a SpanSet.
67
* If someone did have a unique_ptr to a SpanSet it is possible to wrap the
68
* unique_ptr in a std::move when calling the constructor of a Footprint and
69
* the compiler will implicitly turn the unique_ptr into a shared_ptr and use
70
* that to construct the Footprint.
71
*/
72
80
explicit
Footprint
(
std::shared_ptr<geom::SpanSet>
inputSpans,
81
lsst::geom::Box2I
const
®ion =
lsst::geom::Box2I
());
82
91
explicit
Footprint
(
std::shared_ptr<geom::SpanSet>
inputSpans,
afw::table::Schema
const
&peakSchema,
92
lsst::geom::Box2I
const
®ion =
lsst::geom::Box2I
());
93
96
explicit
Footprint
()
97
: _spans(
std
::make_shared<
geom
::
SpanSet
>()),
98
_peaks(
PeakTable
::makeMinimalSchema()),
99
_region(
lsst
::
geom
::Box2I()) {}
100
101
Footprint
(
Footprint
const
&other) =
default
;
102
Footprint
(
Footprint
&&) =
default
;
103
104
Footprint
&
operator=
(
Footprint
const
&other) =
default
;
105
Footprint
&
operator=
(
Footprint
&&) =
default
;
106
107
~Footprint
()
override
=
default
;
108
111
virtual
bool
isHeavy
()
const
{
return
false
; }
112
115
std::shared_ptr<geom::SpanSet>
getSpans
()
const
{
return
_spans; }
116
121
void
setSpans
(
std::shared_ptr<geom::SpanSet>
otherSpanSet);
122
129
PeakCatalog
&
getPeaks
() {
return
_peaks; }
130
const
PeakCatalog
&
getPeaks
()
const
{
return
_peaks; }
131
138
std::shared_ptr<PeakRecord>
addPeak
(
float
fx,
float
fy,
float
value);
139
148
void
sortPeaks
(
afw::table::Key<float>
const
&key =
afw::table::Key<float>
());
149
156
void
setPeakSchema
(
afw::table::Schema
const
&peakSchema);
157
166
void
setPeakCatalog
(
PeakCatalog
const
&otherPeaks);
167
173
std::size_t
getArea
()
const
{
return
_spans->getArea(); }
174
180
lsst::geom::Point2D
getCentroid
()
const
{
return
_spans->computeCentroid(); }
181
188
geom::ellipses::Quadrupole
getShape
()
const
{
return
_spans->computeShape(); }
189
196
void
shift
(
int
dx,
int
dy);
197
203
void
shift
(
lsst::geom::ExtentI
const
&d) {
shift
(d.getX(), d.getY()); }
204
208
lsst::geom::Box2I
getBBox
()
const
{
return
_spans->getBBox(); }
209
213
lsst::geom::Box2I
getRegion
()
const
{
return
_region; }
214
220
void
setRegion
(
lsst::geom::Box2I
const
®ion) { _region = region; }
221
228
void
clipTo
(
lsst::geom::Box2I
const
&bbox);
229
235
bool
contains
(
lsst::geom::Point2I
const
&pix)
const
;
236
246
std::shared_ptr<Footprint>
transform
(
std::shared_ptr<geom::SkyWcs>
source,
247
std::shared_ptr<geom::SkyWcs>
target,
248
lsst::geom::Box2I
const
®ion,
bool
doClip =
true
)
const
;
249
257
std::shared_ptr<Footprint>
transform
(
lsst::geom::LinearTransform
const
&t,
258
lsst::geom::Box2I
const
®ion,
bool
doClip =
true
)
const
;
259
267
std::shared_ptr<Footprint>
transform
(
lsst::geom::AffineTransform
const
&t,
268
lsst::geom::Box2I
const
®ion,
bool
doClip =
true
)
const
;
269
277
std::shared_ptr<Footprint>
transform
(
geom::TransformPoint2ToPoint2
const
&t,
278
lsst::geom::Box2I
const
®ion,
bool
doClip =
true
)
const
;
279
283
bool
isPersistable
() const noexcept
override
{
return
true
; }
284
294
void
dilate
(
int
r,
geom::Stencil
s =
geom::Stencil::CIRCLE
);
295
304
void
dilate
(
geom::SpanSet
const
&other);
305
315
void
erode
(
int
r,
geom::Stencil
s =
geom::Stencil::CIRCLE
);
316
325
void
erode
(
geom::SpanSet
const
&other);
326
330
void
removeOrphanPeaks
();
331
341
void
updatePeakSignificance
(
double
sigma);
342
353
void
updatePeakSignificance
(
image::Image<float>
const
&variance,
int
polarity);
354
358
bool
isContiguous
()
const
{
return
getSpans
()->isContiguous(); };
359
367
std::vector<std::shared_ptr<Footprint>
>
split
()
const
;
368
374
bool
operator==
(
Footprint
const
&other)
const
;
375
376
protected
:
380
std::string
getPersistenceName
()
const override
;
381
385
inline
std::string
getPythonModule
()
const override
{
return
"lsst.afw.detection"
; }
386
390
void
write
(
OutputArchiveHandle
&handle)
const override
;
391
392
friend
class
FootprintFactory
;
393
397
static
std::unique_ptr<Footprint>
readSpanSet
(
afw::table::BaseCatalog
const
&,
398
afw::table::io::InputArchive
const
&);
402
static
void
readPeaks
(
afw::table::BaseCatalog
const
&,
Footprint
&);
403
404
private
:
405
friend
class
FootprintMerge
;
406
407
std::shared_ptr<geom::SpanSet>
_spans;
408
PeakCatalog
_peaks;
409
lsst::geom::Box2I
_region;
410
};
411
418
std::ostream
&
operator<<
(
std::ostream
&os,
Footprint
const
&rhs);
419
425
std::shared_ptr<Footprint>
mergeFootprints
(
Footprint
const
&footprint1,
Footprint
const
&footprint2);
426
435
std::vector<lsst::geom::Box2I>
footprintToBBoxList
(
Footprint
const
&footprint);
436
}
// namespace detection
437
}
// namespace afw
438
}
// namespace lsst
439
440
#endif
// LSST_DETECTION_FOOTPRINT_H
Box.h
InputArchive.h
LinearTransform.h
MaskedImage.h
Peak.h
Persistable.h
Schema.h
SkyWcs.h
Span.h
SpanSet.h
Transform.h
base.h
std::ostream
std::string
lsst::afw::detection::Footprint
Class to describe the properties of a detected object from an image.
Definition
Footprint.h:63
lsst::afw::detection::Footprint::Footprint
Footprint()
Constructor of a empty Footprint object.
Definition
Footprint.h:96
lsst::afw::detection::Footprint::getRegion
lsst::geom::Box2I getRegion() const
Return the corners of the MaskedImage the footprints live in.
Definition
Footprint.h:213
lsst::afw::detection::Footprint::isPersistable
bool isPersistable() const noexcept override
Report if this object is persistable.
Definition
Footprint.h:283
lsst::afw::detection::Footprint::isHeavy
virtual bool isHeavy() const
Indicates if this object is a HeavyFootprint.
Definition
Footprint.h:111
lsst::afw::detection::Footprint::isContiguous
bool isContiguous() const
Reports if the Footprint is simply connected or has multiple components.
Definition
Footprint.h:358
lsst::afw::detection::Footprint::addPeak
std::shared_ptr< PeakRecord > addPeak(float fx, float fy, float value)
Convenience function to add a peak.
Definition
Footprint.cc:47
lsst::afw::detection::Footprint::readSpanSet
static std::unique_ptr< Footprint > readSpanSet(afw::table::BaseCatalog const &, afw::table::io::InputArchive const &)
Static method used to unpersist the SpanSet member of the Footprint class.
Definition
Footprint.cc:286
lsst::afw::detection::Footprint::shift
void shift(lsst::geom::ExtentI const &d)
Shift a Footprint by a given extent.
Definition
Footprint.h:203
lsst::afw::detection::Footprint::write
void write(OutputArchiveHandle &handle) const override
Write an instance of a Footprint to an output Archive.
Definition
Footprint.cc:271
lsst::afw::detection::Footprint::Footprint
Footprint(Footprint const &other)=default
lsst::afw::detection::Footprint::operator=
Footprint & operator=(Footprint const &other)=default
lsst::afw::detection::Footprint::transform
std::shared_ptr< Footprint > transform(std::shared_ptr< geom::SkyWcs > source, std::shared_ptr< geom::SkyWcs > target, lsst::geom::Box2I const ®ion, bool doClip=true) const
Transform the footprint from one WCS to another.
Definition
Footprint.cc:81
lsst::afw::detection::Footprint::contains
bool contains(lsst::geom::Point2I const &pix) const
Tests if a pixel postion falls inside the Footprint.
Definition
Footprint.cc:79
lsst::afw::detection::Footprint::setRegion
void setRegion(lsst::geom::Box2I const ®ion)
Set the corners of the MaskedImage wherein the footprints dwell.
Definition
Footprint.h:220
lsst::afw::detection::Footprint::split
std::vector< std::shared_ptr< Footprint > > split() const
Split a multi-component Footprint into a vector of contiguous Footprints.
Definition
Footprint.cc:159
lsst::afw::detection::Footprint::dilate
void dilate(int r, geom::Stencil s=geom::Stencil::CIRCLE)
Dilate the Footprint with a defined kernel.
Definition
Footprint.cc:122
lsst::afw::detection::Footprint::getBBox
lsst::geom::Box2I getBBox() const
Return the Footprint's bounding box.
Definition
Footprint.h:208
lsst::afw::detection::Footprint::sortPeaks
void sortPeaks(afw::table::Key< float > const &key=afw::table::Key< float >())
Sort Peaks from most positive value to most negative.
Definition
Footprint.cc:57
lsst::afw::detection::Footprint::getSpans
std::shared_ptr< geom::SpanSet > getSpans() const
Return a shared pointer to the SpanSet.
Definition
Footprint.h:115
lsst::afw::detection::Footprint::removeOrphanPeaks
void removeOrphanPeaks()
Remove peaks from the PeakCatalog that fall outside the area of the Footprint.
Definition
Footprint.cc:136
lsst::afw::detection::Footprint::setPeakSchema
void setPeakSchema(afw::table::Schema const &peakSchema)
Set the Schema used by the PeakCatalog (will throw if PeakCatalog is not empty).
Definition
Footprint.cc:431
lsst::afw::detection::Footprint::getPeaks
PeakCatalog & getPeaks()
Return the Peaks contained in this Footprint.
Definition
Footprint.h:129
lsst::afw::detection::Footprint::~Footprint
~Footprint() override=default
lsst::afw::detection::Footprint::getArea
std::size_t getArea() const
Return the number of pixels in this Footprint.
Definition
Footprint.h:173
lsst::afw::detection::Footprint::operator=
Footprint & operator=(Footprint &&)=default
lsst::afw::detection::Footprint::setSpans
void setSpans(std::shared_ptr< geom::SpanSet > otherSpanSet)
Sets the shared pointer to the SpanSet in the Footprint.
Definition
Footprint.cc:45
lsst::afw::detection::Footprint::FootprintFactory
friend class FootprintFactory
Definition
Footprint.h:392
lsst::afw::detection::Footprint::getPersistenceName
std::string getPersistenceName() const override
Return the name correspoinging ot the persistence type.
Definition
Footprint.cc:269
lsst::afw::detection::Footprint::clipTo
void clipTo(lsst::geom::Box2I const &bbox)
Clip the Footprint such that all values lie inside the supplied Bounding Box.
Definition
Footprint.cc:74
lsst::afw::detection::Footprint::Footprint
Footprint(std::shared_ptr< geom::SpanSet > inputSpans, lsst::geom::Box2I const ®ion=lsst::geom::Box2I())
Constructor for Footprint object.
Definition
Footprint.cc:38
lsst::afw::detection::Footprint::erode
void erode(int r, geom::Stencil s=geom::Stencil::CIRCLE)
Erode the Footprint with a defined kernel.
Definition
Footprint.cc:126
lsst::afw::detection::Footprint::getPythonModule
std::string getPythonModule() const override
Return the python module the object will live in.
Definition
Footprint.h:385
lsst::afw::detection::Footprint::updatePeakSignificance
void updatePeakSignificance(double sigma)
Compute and update the significance of each peak, given a single value for sigma.
Definition
Footprint.cc:145
lsst::afw::detection::Footprint::getCentroid
lsst::geom::Point2D getCentroid() const
Return the Footprint's centroid.
Definition
Footprint.h:180
lsst::afw::detection::Footprint::shift
void shift(int dx, int dy)
Shift a Footprint by (dx, dy).
Definition
Footprint.cc:64
lsst::afw::detection::Footprint::FootprintMerge
friend class FootprintMerge
Definition
Footprint.h:405
lsst::afw::detection::Footprint::operator==
bool operator==(Footprint const &other) const
equality operator
Definition
Footprint.cc:176
lsst::afw::detection::Footprint::readPeaks
static void readPeaks(afw::table::BaseCatalog const &, Footprint &)
Static method used to unpersist the PeakCatalog member of the Footprint class.
Definition
Footprint.cc:310
lsst::afw::detection::Footprint::Footprint
Footprint(Footprint &&)=default
lsst::afw::detection::Footprint::getShape
geom::ellipses::Quadrupole getShape() const
Return the Footprint's shape (interpreted as an ellipse).
Definition
Footprint.h:188
lsst::afw::detection::Footprint::setPeakCatalog
void setPeakCatalog(PeakCatalog const &otherPeaks)
Set the peakCatalog to a copy of the supplied catalog.
Definition
Footprint.cc:435
lsst::afw::detection::Footprint::getPeaks
const PeakCatalog & getPeaks() const
Definition
Footprint.h:130
lsst::afw::detection::PeakTable
Table class for Peaks in Footprints.
Definition
Peak.h:102
lsst::afw::geom::SpanSet
A compact representation of a collection of pixels.
Definition
SpanSet.h:78
lsst::afw::geom::ellipses::Quadrupole
An ellipse core with quadrupole moments as parameters.
Definition
Quadrupole.h:47
lsst::afw::image::Image
A class to represent a 2-dimensional array of pixels.
Definition
Image.h:51
lsst::afw::table::Key
A class used as a handle to a particular field in a table.
Definition
Key.h:53
lsst::afw::table::Schema
Defines the fields and offsets for a table.
Definition
Schema.h:51
lsst::afw::table::io::InputArchive
A multi-catalog archive object used to load table::io::Persistable objects.
Definition
InputArchive.h:31
lsst::afw::table::io::PersistableFacade
A CRTP facade class for subclasses of Persistable.
Definition
Persistable.h:176
lsst::afw::table::io::Persistable
A base class for objects that can be persisted via afw::table::io Archive classes.
Definition
Persistable.h:74
lsst::afw::table::io::Persistable::OutputArchiveHandle
io::OutputArchiveHandle OutputArchiveHandle
Definition
Persistable.h:108
lsst::geom::AffineTransform
lsst::geom::Box2I
lsst::geom::LinearTransform
ellipses.h
fwd.h
lsst::afw::detection
Definition
Footprint.h:50
lsst::afw::detection::operator<<
std::ostream & operator<<(std::ostream &os, Footprint const &rhs)
Print a Footprint to the stream.
Definition
Footprint.cc:443
lsst::afw::detection::footprintToBBoxList
std::vector< lsst::geom::Box2I > footprintToBBoxList(Footprint const &footprint)
Return a list of BBoxs, whose union contains exactly the pixels in the footprint, neither more nor le...
Definition
Footprint.cc:366
lsst::afw::detection::PeakCatalog
afw::table::CatalogT< PeakRecord > PeakCatalog
Definition
Peak.h:244
lsst::afw::detection::mergeFootprints
std::shared_ptr< Footprint > mergeFootprints(Footprint const &footprint1, Footprint const &footprint2)
Merges two Footprints – appends their peaks, and unions their spans, returning a new Footprint.
Definition
Footprint.cc:341
lsst::afw::geom::TransformPoint2ToPoint2
Transform< Point2Endpoint, Point2Endpoint > TransformPoint2ToPoint2
Definition
Transform.h:300
lsst::afw::geom::Stencil
Stencil
An enumeration class which describes the shapes.
Definition
SpanSet.h:66
lsst::afw::geom::Stencil::CIRCLE
@ CIRCLE
Definition
SpanSet.h:66
lsst::afw::table::BaseCatalog
CatalogT< BaseRecord > BaseCatalog
Definition
fwd.h:72
lsst::afw
Definition
imageAlgorithm.dox:1
lsst::geom
lsst::geom::ExtentI
Extent< int, 2 > ExtentI
lsst::geom::Point2D
Point< double, 2 > Point2D
lsst::geom::Point2I
Point< int, 2 > Point2I
lsst
std
STL namespace.
std::shared_ptr
std::size_t
Key.h
std::unique_ptr
std::vector
Generated on
for lsst.afw by
1.17.0