7 #include <isce3/core/forward.h>
8 #include <isce3/io/forward.h>
9 #include <isce3/product/forward.h>
11 #include <isce3/core/Constants.h>
12 #include <pyre/journal.h>
14 namespace isce3 {
namespace geometry {
21 SIGMA_NAUGHT_ELLIPSOID = 1,
28 RTC_BLOCKS_GEOGRID = 2,
36 enum rtcAlgorithm { RTC_DAVID_SMALL = 0, RTC_AREA_PROJECTION = 1 };
72 int exponent = 0,
rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
73 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
74 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
75 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
76 double abs_cal_factor = 1,
float radar_grid_nlooks = 1,
105 bool native_doppler =
false,
107 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
108 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
109 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
110 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
111 size_t nlooks_az = 1,
size_t nlooks_rg = 1,
144 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
145 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
146 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
147 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
148 float radar_grid_nlooks = 1,
152 isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
153 double threshold = 1e-4,
int num_iter = 100,
double delta_range = 1e-4);
197 const double y0,
const double dy,
const double x0,
const double dx,
198 const int geogrid_length,
const int geogrid_width,
201 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
202 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
203 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
204 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
205 float radar_grid_nlooks = 1,
211 isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
212 double threshold = 1e-4,
int num_iter = 100,
double delta_range = 1e-4);
239 const double y0,
const double dy,
const double x0,
const double dx,
240 const int geogrid_length,
const int geogrid_width,
243 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
244 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN());
291 const double y0,
const double dy,
const double x0,
const double dx,
292 const int geogrid_length,
const int geogrid_width,
295 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
296 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
297 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
298 float radar_grid_nlooks = 1,
304 isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
305 double threshold = 1e-4,
int num_iter = 100,
double delta_range = 1e-4);
307 void areaProjIntegrateSegment(
double y1,
double y2,
double x1,
double x2,
308 int length,
int width,
310 double& w_total,
int plane_orientation);
312 int areaProjGetNBlocks(
int array_length,
313 pyre::journal::info_t* channel =
nullptr,
315 int* block_length_with_upsampling =
nullptr,
316 int* block_length =
nullptr,
317 int min_block_length = std::pow(2, 8),
318 int max_block_length = std::pow(2, 10));
321 computeUpsamplingFactor(
const DEMInterpolator& dem_interp,
327 double p1,
double& p3,
double divisor,
328 bool clockwise_direction);
334 void print_parameters(
335 pyre::journal::info_t& channel,
337 const double dy,
const double x0,
const double dx,
338 const int geogrid_length,
const int geogrid_width,
340 double geogrid_upsampling,
341 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN());
dataInterpMethod
Enumeration type to indicate interpolation method.
Definition: Constants.h:23
Data structure to store Ellipsoid information.
Definition: Ellipsoid.h:20
void facetRTC(isce3::product::Product &product, isce3::io::Raster &dem_raster, isce3::io::Raster &output_raster, char frequency, bool native_doppler, rtcInputRadiometry input_radiometry, rtcAreaMode rtc_area_mode, rtcAlgorithm rtc_algorithm, double geogrid_upsampling, float rtc_min_value_db, size_t nlooks_az, size_t nlooks_rg, isce3::io::Raster *out_nlooks, rtcMemoryMode rtc_memory_mode)
Generate radiometric terrain correction (RTC) area or area factor.
Definition: RTC.cpp:339
std::string get_rtc_area_mode_str(rtcAreaMode rtc_area_mode)
Convert enum output_mode to string.
Definition: RTC.cpp:1401
Definition: RadarGridParameters.h:15
void applyRTC(const isce3::product::RadarGridParameters &radar_grid, const isce3::core::Orbit &orbit, const isce3::core::LUT2d< double > &input_dop, isce3::io::Raster &input_raster, isce3::io::Raster &dem_raster, isce3::io::Raster &output_raster, rtcInputRadiometry input_radiometry, int exponent, rtcAreaMode rtc_area_mode, rtcAlgorithm rtc_algorithm, double geogrid_upsampling, float rtc_min_value_db, double abs_cal_factor, float radar_grid_nlooks, isce3::io::Raster *out_nlooks, isce3::io::Raster *input_rtc, isce3::io::Raster *output_rtc, rtcMemoryMode rtc_memory_mode)
Apply radiometric terrain correction (RTC) over an input raster.
Definition: RTC.cpp:165
rtcMemoryMode
Enumeration type to indicate memory management.
Definition: RTC.h:25
rtcAlgorithm
Enumeration type to select RTC algorithm (RTC_DAVID_SMALL or RTC_AREA_PROJECTION) ...
Definition: RTC.h:36
rtcAreaMode
Enumeration type to indicate RTC area mode (AREA or AREA_FACTOR)
Definition: RTC.h:32
void facetRTCAreaProj(isce3::io::Raster &dem_raster, isce3::io::Raster &output_raster, const isce3::product::RadarGridParameters &radar_grid, const isce3::core::Orbit &orbit, const isce3::core::LUT2d< double > &input_dop, const double y0, const double dy, const double x0, const double dx, const int geogrid_length, const int geogrid_width, const int epsg, rtcInputRadiometry input_radiometry, rtcAreaMode rtc_area_mode, double geogrid_upsampling, float rtc_min_value_db, float radar_grid_nlooks, isce3::io::Raster *out_geo_vertices, isce3::io::Raster *out_geo_grid, isce3::io::Raster *out_nlooks, rtcMemoryMode rtc_memory_mode, isce3::core::dataInterpMethod interp_method, double threshold, int num_iter, double delta_range)
Generate radiometric terrain correction (RTC) area or area factor using the area projection algorithm...
Definition: RTC.cpp:1249
std::string get_rtc_algorithm_str(rtcAlgorithm rtc_algorithm)
Convert enum output_mode to string.
Definition: RTC.cpp:1415
std::string get_input_radiometry_str(rtcInputRadiometry input_radiometry)
Convert enum input_radiometry to string.
Definition: RTC.cpp:1383
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing, supporting efficient lookup and interpolation.
Definition: Orbit.h:43
rtcInputRadiometry
Enumeration type to indicate input terrain radiometry (for RTC)
Definition: RTC.h:19
Data structure meant to handle Raster I/O operations.
Definition: Raster.h:34
void facetRTCDavidSmall(isce3::io::Raster &dem_raster, isce3::io::Raster &output_raster, const isce3::product::RadarGridParameters &radar_grid, const isce3::core::Orbit &orbit, const isce3::core::LUT2d< double > &input_dop, const double y0, const double dy, const double x0, const double dx, const int geogrid_length, const int geogrid_width, const int epsg, rtcInputRadiometry input_radiometry, rtcAreaMode rtc_area_mode, double upsample_factor)
Generate radiometric terrain correction (RTC) area or area factor using the David Small algorithm...
Definition: RTC.cpp:582