3#define modulo_f(a, b) fmod(fmod(a, b) + (b), (b))
5namespace isce3 {
namespace image {
9 char frequency,
const std::complex<float> invalid_value)
13 _dopplerLUT =
product.metadata().procInfo().dopplerCentroid(frequency);
22 char frequency,
const std::complex<float> invalid_value)
27 _dopplerLUT =
product.metadata().procInfo().dopplerCentroid(frequency);
34 const std::complex<float> invalid_value)
35 : _haveRefData(false), _invalid_value(invalid_value)
38 _setDataFromSwath(swath);
44 const std::complex<float> invalid_value)
45 : _haveRefData(true), _invalid_value(invalid_value)
48 _setDataFromSwath(swath);
50 _setRefDataFromSwath(refSwath);
56 const std::complex<float> invalid_value)
57 : _haveRefData(false), _dopplerLUT(
doppler),
58 _startingRange(rdr_grid.startingRange()),
59 _rangePixelSpacing(rdr_grid.rangePixelSpacing()),
60 _sensingStart(rdr_grid.sensingStart()), _prf(rdr_grid.prf()),
61 _wavelength(rdr_grid.wavelength()), _invalid_value(invalid_value)
70 const std::complex<float> invalid_value)
71 : _haveRefData(true), _dopplerLUT(
doppler),
72 _startingRange(rdr_grid.startingRange()),
73 _rangePixelSpacing(rdr_grid.rangePixelSpacing()),
74 _sensingStart(rdr_grid.sensingStart()), _prf(rdr_grid.prf()),
75 _wavelength(rdr_grid.wavelength()),
76 _refStartingRange(ref_rdr_grid.startingRange()),
77 _refRangePixelSpacing(ref_rdr_grid.rangePixelSpacing()),
78 _refWavelength(ref_rdr_grid.wavelength()), _invalid_value(invalid_value)
83 double startingRange,
double rangePixelSpacing,
84 double sensingStart,
double prf,
double wvl,
85 const std::complex<float> invalid_value)
86 : _haveRefData(false), _dopplerLUT(
doppler), _startingRange(startingRange),
87 _rangePixelSpacing(rangePixelSpacing), _sensingStart(sensingStart),
88 _prf(prf), _wavelength(wvl), _invalid_value(invalid_value)
93 double startingRange,
double rangePixelSpacing,
94 double sensingStart,
double prf,
double wvl,
95 double refStartingRange,
96 double refRangePixelSpacing,
double refWvl,
97 const std::complex<float> invalid_value)
98 : _haveRefData(true), _dopplerLUT(
doppler), _startingRange(startingRange),
99 _rangePixelSpacing(rangePixelSpacing), _sensingStart(sensingStart),
100 _prf(prf), _wavelength(wvl), _refStartingRange(refStartingRange),
101 _refRangePixelSpacing(refRangePixelSpacing), _refWavelength(refWvl),
102 _invalid_value(invalid_value)
127inline void ResampSlc::rgCarrier(
const isce3::core::Poly2d& lut)
133inline isce3::core::Poly2d ResampSlc::azCarrier()
const {
return _azCarrier; }
136inline void ResampSlc::azCarrier(
const isce3::core::Poly2d& lut)
161 _setRefDataFromSwath(refProduct.
swath(frequency));
166inline void ResampSlc::declare(
size_t inLength,
size_t inWidth,
size_t outLength,
167 size_t outWidth)
const
170 pyre::journal::info_t channel(
"isce.core.ResampSlc");
172 channel << pyre::journal::newline
173 <<
"Resample one image to another image coordinates >>"
174 << pyre::journal::newline << pyre::journal::newline;
175 channel <<
"Input Image Dimensions: " << inLength <<
" lines, " << inWidth
176 <<
" pixels" << pyre::journal::newline;
177 channel <<
"Output Image Dimensions: " << outLength <<
" lines, "
178 << outWidth <<
" pixels" << pyre::journal::newline
179 << pyre::journal::newline;
180 channel <<
"Complex data interpolation" << pyre::journal::newline;
184inline size_t ResampSlc::linesPerTile()
const {
return _linesPerTile; }
187inline void ResampSlc::linesPerTile(
size_t value) { _linesPerTile = value; }
190inline size_t ResampSlc::_computeNumberOfTiles(
size_t outLength,
size_t linesPerTile)
193 size_t nTiles = outLength / linesPerTile;
195 size_t extraLines = outLength - nTiles * linesPerTile;
196 if (extraLines > 0) {
203inline void ResampSlc::_prepareInterpMethods(isce3::core::dataInterpMethod,
206 _interp =
new isce3::core::Sinc2dInterpolator<std::complex<float>>(
207 sinc_len, isce3::core::SINC_SUB);
Data structure to store 2D Lookup table.
Definition LUT2d.h:20
Data structure for representing 2D polynomials.
Definition Poly2d.h:20
ResampSlc(const isce3::product::RadarGridProduct &product, char frequency='A', const std::complex< float > invalid_value=std::complex< float >(0.0))
Constructor from an isce3::product::RadarGridProduct (no flattening)
Definition ResampSlc.icc:8
const isce3::core::LUT2d< double > & doppler() const
Get read-only reference to Doppler LUT2d.
Definition ResampSlc.icc:142
Definition RadarGridParameters.h:16
RadarGridProduct class declaration.
Definition RadarGridProduct.h:71
const Swath & swath(char freq) const
Get a read-only reference to a swath.
Definition RadarGridProduct.h:85
double rangePixelSpacing() const
Get the range pixel spacing.
Definition Swath.h:38
const std::valarray< double > & zeroDopplerTime() const
Get zero Doppler time array.
Definition Swath.h:41
double processedWavelength() const
Get processed wavelength.
Definition Swath.h:65
double zeroDopplerTimeSpacing() const
Get time spacing of raster grid.
Definition Swath.h:85
const std::valarray< double > & slantRange() const
Get slant range array.
Definition Swath.h:30
The isce3::product namespace.
Definition forward.h:3
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5