Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • S S1Tiling
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 37
    • Issues 37
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 4
    • Merge requests 4
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • s1-tiling
  • S1Tiling
  • Issues
  • #8
Closed
Open
Issue created Mar 25, 2020 by Luc Hermitte@lhermitteMaintainer2 of 2 checklist items completed2/2 checklist items

Optimize Cutting step

Enable in-memory processing

The current cutting step is done after the SARCalibration test, and it uses GDAL to check the 100th rows (from the start, and from the end) in the calibrated images. The state of these two rows could be tested done directly on the S1 tiles, and the cutting could be done before the calibration.

This would enable to realize cutting, calibration, and orthorectification in-memory without any pause/break/stop in the pipeline.

Optimize Cutting Application

The exact cutting is actually a kind of ExtractBandROI without trimming the edges. Instead they are set to 0. Using BandMath for this processing is really inefficient. The typical algorithm (in ThreadedGenerateData() for such a clamping application is

auto const thr1 = min(requestedRegion.EndY, threshold);
auto const thr2 = min(requestedRegion.EndY, image.EndY - threshold);

assert(thr1 <= requestedRegion.EndY && "Iterations shall stay within requested region");
assert(thr2 <= requestedRegion.EndY && "Iterations shall stay within requested region");

for ( y = requestedRegion.startY ; y < thr1 ; ++y)
   out.Line(y) = 0;
for ( y = thr1 ; y < thr2 ; ++y)
   out.Line(y) = in.Line(y);
for ( y = thr2 ; y < requestedRegion.EndY ; ++y)
   out.Line(y) = 0;

TL;DR

  • Change step orders: cut before calibration
  • Provide an OTB Band Cutting Application
Edited Jun 19, 2020 by Luc Hermitte
Assignee
Assign to
Time tracking