4#include <isce3/core/forward.h>
5#include <isce3/io/forward.h>
6#include <isce3/product/forward.h>
10#include <pyre/journal.h>
12#include <isce3/core/Constants.h>
13#include <isce3/core/blockProcessing.h>
14#include <isce3/core/LUT2d.h>
15#include <isce3/error/ErrorCode.h>
24 SIGMA_NAUGHT_ELLIPSOID = 1,
40enum rtcAlgorithm { RTC_BILINEAR_DISTRIBUTION = 0, RTC_AREA_PROJECTION = 1 };
101 rtcInputTerrainRadiometry::BETA_NAUGHT,
103 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
104 int exponent = 0,
rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
105 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
107 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
108 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
109 double abs_cal_factor = 1,
110 float clip_min = std::numeric_limits<float>::quiet_NaN(),
111 float clip_max = std::numeric_limits<float>::quiet_NaN(),
115 isce3::io::Raster* input_rtc =
nullptr,
116 isce3::io::Raster* output_rtc =
nullptr,
117 isce3::core::MemoryModeBlocksY rtc_memory_mode =
118 isce3::core::MemoryModeBlocksY::AutoBlocksY);
155void computeRtc(
const isce3::product::RadarGridParameters& radarGrid,
156 const isce3::core::Orbit& orbit,
const isce3::core::LUT2d<double>& dop,
157 isce3::io::Raster& dem, isce3::io::Raster& output_raster,
159 rtcInputTerrainRadiometry::BETA_NAUGHT,
161 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
162 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
163 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
165 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
166 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
167 isce3::io::Raster* out_sigma =
nullptr,
168 const isce3::core::LUT2d<double>& az_time_correction = {},
169 const isce3::core::LUT2d<double>& slant_range_correction = {},
170 isce3::core::MemoryModeBlocksY rtc_memory_mode =
171 isce3::core::MemoryModeBlocksY::AutoBlocksY,
172 isce3::core::dataInterpMethod interp_method =
173 isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
174 double threshold = 1e-8,
int num_iter = 100,
double delta_range = 1e-8,
175 const long long min_block_size = isce3::core::DEFAULT_MIN_BLOCK_SIZE,
176 const long long max_block_size = isce3::core::DEFAULT_MAX_BLOCK_SIZE);
225void computeRtc(isce3::io::Raster& dem_raster, isce3::io::Raster& output_raster,
226 const isce3::product::RadarGridParameters& radarGrid,
227 const isce3::core::Orbit& orbit,
const isce3::core::LUT2d<double>& dop,
228 const double y0,
const double dy,
const double x0,
const double dx,
229 const int geogrid_length,
const int geogrid_width,
const int epsg,
231 rtcInputTerrainRadiometry::BETA_NAUGHT,
233 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
234 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
235 rtcAlgorithm rtc_algorithm = rtcAlgorithm::RTC_AREA_PROJECTION,
237 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
238 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
239 isce3::io::Raster* out_geo_rdr =
nullptr,
240 isce3::io::Raster* out_geo_grid =
nullptr,
241 isce3::io::Raster* out_sigma =
nullptr,
242 const isce3::core::LUT2d<double>& az_time_correction = {},
243 const isce3::core::LUT2d<double>& slant_range_correction = {},
244 isce3::core::MemoryModeBlocksY rtc_memory_mode =
245 isce3::core::MemoryModeBlocksY::AutoBlocksY,
246 isce3::core::dataInterpMethod interp_method =
247 isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
248 double threshold = 1e-8,
int num_iter = 100,
double delta_range = 1e-8,
249 const long long min_block_size = isce3::core::DEFAULT_MIN_BLOCK_SIZE,
250 const long long max_block_size = isce3::core::DEFAULT_MAX_BLOCK_SIZE);
281 isce3::io::Raster& output_raster,
282 const isce3::product::RadarGridParameters& radarGrid,
283 const isce3::core::Orbit& orbit,
const isce3::core::LUT2d<double>& dop,
284 const isce3::product::GeoGridParameters& geogrid,
286 rtcInputTerrainRadiometry::BETA_NAUGHT,
288 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
289 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
290 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
291 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
292 isce3::io::Raster* out_sigma =
nullptr,
293 double threshold = 1e-8,
int num_iter = 100,
double delta_range = 1e-8,
294 const isce3::core::LUT2d<double>& az_time_correction = {},
295 const isce3::core::LUT2d<double>& slant_range_correction = {});
338 isce3::io::Raster& output_raster,
339 const isce3::product::RadarGridParameters& radarGrid,
340 const isce3::core::Orbit& orbit,
const isce3::core::LUT2d<double>& dop,
341 const isce3::product::GeoGridParameters& geogrid,
343 rtcInputTerrainRadiometry::BETA_NAUGHT,
345 rtcOutputTerrainRadiometry::GAMMA_NAUGHT,
346 rtcAreaMode rtc_area_mode = rtcAreaMode::AREA_FACTOR,
348 double geogrid_upsampling = std::numeric_limits<double>::quiet_NaN(),
349 float rtc_min_value_db = std::numeric_limits<float>::quiet_NaN(),
350 isce3::io::Raster* out_geo_rdr =
nullptr,
351 isce3::io::Raster* out_geo_grid =
nullptr,
352 isce3::io::Raster* out_sigma =
nullptr,
353 const isce3::core::LUT2d<double>& az_time_correction = {},
354 const isce3::core::LUT2d<double>& slant_range_correction = {},
355 isce3::core::MemoryModeBlocksY rtc_memory_mode =
356 isce3::core::MemoryModeBlocksY::AutoBlocksY,
357 isce3::core::dataInterpMethod interp_method =
358 isce3::core::dataInterpMethod::BIQUINTIC_METHOD,
359 double threshold = 1e-8,
int num_iter = 100,
double delta_range = 1e-8,
360 const long long min_block_size = isce3::core::DEFAULT_MIN_BLOCK_SIZE,
361 const long long max_block_size = isce3::core::DEFAULT_MAX_BLOCK_SIZE);
363void areaProjIntegrateSegment(
double y1,
double y2,
double x1,
double x2,
364 int length,
int width, isce3::core::Matrix<double>& w_arr,
365 double& w_total,
int plane_orientation);
369 const isce3::product::RadarGridParameters& radar_grid,
370 const isce3::core::Ellipsoid& ellps);
380void print_parameters(pyre::journal::info_t& channel,
381 const isce3::product::RadarGridParameters& radar_grid,
386 double geogrid_upsampling,
387 float rtc_min_value_db);
Data structure to store 2D Lookup table.
Definition LUT2d.h:20
Sequence of platform ephemeris samples (state vectors) with uniform temporal spacing,...
Definition Orbit.h:44
Definition DEMInterpolator.h:25
Data structure meant to handle Raster I/O operations.
Definition Raster.h:32
Definition RadarGridParameters.h:16
The isce3::geometry namespace.
Definition boundingbox.h:15
std::string get_input_terrain_radiometry_str(rtcInputTerrainRadiometry input_terrain_radiometry)
Convert enum input terrain radiometry to string.
Definition RTC.cpp:1787
void computeRtcBilinearDistribution(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 isce3::product::GeoGridParameters &geogrid, rtcInputTerrainRadiometry input_terrain_radiometry, rtcOutputTerrainRadiometry output_terrain_radiometry, rtcAreaMode rtc_area_mode, double upsample_factor, float rtc_min_value_db, isce3::io::Raster *out_sigma, double threshold, int num_iter, double delta_range, const isce3::core::LUT2d< double > &az_time_correction, const isce3::core::LUT2d< double > &slant_range_correction)
Generate radiometric terrain correction (RTC) area or area normalization factor using the Bilinear Di...
Definition RTC.cpp:722
std::string get_rtc_area_mode_str(rtcAreaMode rtc_area_mode)
Convert enum rtc_area_mode to string.
Definition RTC.cpp:1827
std::string get_rtc_algorithm_str(rtcAlgorithm rtc_algorithm)
Convert enum output_mode to string.
Definition RTC.cpp:1864
rtcAreaBetaMode
Enumeration type to indicate RTC area beta mode (option only available for rtcAlgorithm....
Definition RTC.h:45
@ PIXEL_AREA
estimate the beta surface reference area A_beta using the pixel area, which is the product of the ran...
Definition RTC.h:51
@ PROJECTION_ANGLE
estimate the beta surface reference area A_beta using the projection angle method: A_beta = A_sigma *...
Definition RTC.h:55
@ AUTO
auto mode.
Definition RTC.h:46
std::string get_output_terrain_radiometry_str(rtcOutputTerrainRadiometry output_terrain_radiometry)
Convert enum output terrain radiometry to string.
Definition RTC.cpp:1807
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, rtcInputTerrainRadiometry input_terrain_radiometry, rtcOutputTerrainRadiometry output_terrain_radiometry, int exponent, rtcAreaMode rtc_area_mode, rtcAlgorithm rtc_algorithm, rtcAreaBetaMode rtc_area_beta_mode, double geogrid_upsampling, float rtc_min_value_db, double abs_cal_factor, float clip_min, float clip_max, isce3::io::Raster *out_sigma, const isce3::core::LUT2d< double > &az_time_correction, const isce3::core::LUT2d< double > &slant_range_correction, isce3::io::Raster *input_rtc, isce3::io::Raster *output_rtc, isce3::core::MemoryModeBlocksY rtc_memory_mode)
Apply radiometric terrain correction (RTC) over an input raster.
Definition RTC.cpp:294
rtcInputTerrainRadiometry
Enumeration type to indicate input terrain radiometry (for RTC)
Definition RTC.h:22
void computeRtcAreaProj(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 isce3::product::GeoGridParameters &geogrid, rtcInputTerrainRadiometry input_terrain_radiometry, rtcOutputTerrainRadiometry output_terrain_radiometry, rtcAreaMode rtc_area_mode, rtcAreaBetaMode rtc_area_beta_mode, double geogrid_upsampling, float rtc_min_value_db, isce3::io::Raster *out_geo_rdr, isce3::io::Raster *out_geo_grid, isce3::io::Raster *out_sigma, const isce3::core::LUT2d< double > &az_time_correction, const isce3::core::LUT2d< double > &slant_range_correction, isce3::core::MemoryModeBlocksY rtc_memory_mode, isce3::core::dataInterpMethod interp_method, double threshold, int num_iter, double delta_range, const long long min_block_size, const long long max_block_size)
Generate radiometric terrain correction (RTC) area or area normalization factor using the area projec...
Definition RTC.cpp:1601
rtcAlgorithm
Enumeration type to select RTC algorithm (RTC_BILINEAR_DISTRIBUTION or RTC_AREA_PROJECTION)
Definition RTC.h:40
void computeRtc(const isce3::product::RadarGridParameters &radar_grid, const isce3::core::Orbit &orbit, const isce3::core::LUT2d< double > &input_dop, isce3::io::Raster &dem_raster, isce3::io::Raster &output_raster, rtcInputTerrainRadiometry input_terrain_radiometry, rtcOutputTerrainRadiometry output_terrain_radiometry, rtcAreaMode rtc_area_mode, rtcAlgorithm rtc_algorithm, rtcAreaBetaMode rtc_area_beta_mode, double geogrid_upsampling, float rtc_min_value_db, isce3::io::Raster *out_sigma, const isce3::core::LUT2d< double > &az_time_correction, const isce3::core::LUT2d< double > &slant_range_correction, isce3::core::MemoryModeBlocksY rtc_memory_mode, isce3::core::dataInterpMethod interp_method, double threshold, int num_iter, double delta_range, const long long min_block_size, const long long max_block_size)
Generate radiometric terrain correction (RTC) area or area normalization factor.
Definition RTC.cpp:436
rtcAreaMode
Enumeration type to indicate RTC area mode (AREA or AREA_FACTOR)
Definition RTC.h:36
std::string get_rtc_area_beta_mode_str(rtcAreaBetaMode rtc_area_beta_mode)
Convert enum output_mode to string.
Definition RTC.cpp:1844
rtcOutputTerrainRadiometry
Enumeration type to indicate output terrain radiometry (for RTC)
Definition RTC.h:30
base interpolator is an abstract base class
Definition BinarySearchFunc.cpp:5