Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
otb
otb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 292
    • Issues 292
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 15
    • Merge Requests 15
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI / CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Main Repositories
  • otbotb
  • Issues
  • #2151

Closed
Open
Opened Feb 22, 2021 by Julien Osman@julienosmanDeveloper0 of 9 tasks completed0/9 tasks

Implement otb::SarTransformBase, otb::SarForwardTransform and otb::SarInverseTransform

This issue is part of the SAR sensor models refactoring story (#2142)

Rationale

The new SAR transform architecture needs to be similar to RPC transform.

classDiagram
  class Transform~TScalarType, NInputDimensions, NOutputDimensions~{
  -TransformPoint(Point)* Point
  }

  class SensorTransformBase~TScalarType, NInputDimensions, NOutputDimensions~{
  -SetMetadata(ImageMetadata&)* bool
  -IsValidSensorModel()* bool
  }

  class SARTransformBase~TScalarType, NInputDimensions, NOutputDimensions~{
  -SetMetadata(ImageMetadata&) bool
  -IsValidSensorModel() bool
  #Projection_SARParam m_SARParam
  #SARSensorModel m_Transformer
  }

  class SARForwardTransform~TScalarType, NInputDimensions, NOutputDimensions~{
  -TransformPoint(Point) Point
  }

  class SARInverseTransform~TScalarType, NInputDimensions, NOutputDimensions~{
  -TransformPoint(Point) Point
  }

  Transform <|-- SensorTransformBase
  SensorTransformBase <|-- SARTransformBase
  SARTransformBase <|-- SARForwardTransform
  SARTransformBase <|-- SARInverseTransform

Analysis

The otb::SARTransformBase class is in charge of the model. Is is composed of a otb::SarSensorModel and is in charge of instantiating this object using the provided otb::ImageMetadata.

The otb::SARForwardTransform and otb::SARInverseTransform classes are in charge of using correctly the otb::SarSensorModel to perform respectively the forward and the inverse transform.

This classes also need to be added to the sensor transforms' factory described in #2150.


classDiagram
  Object <|.. SensorTransformBase : skipping classes in the dependency tree for clarity
  SensorTransformBase <|.. SARTransformBase
  SARTransformBase <|.. SARForwardTransform
  SARTransformBase <|.. SARInverseTransform
  
  ObjectFactoryBase  <|.. SARForwardTransformFactory
  ObjectFactoryBase  <|.. SARInverseTransformFactory

  SARForwardTransformFactory ..> SARForwardTransform : CreateInstance
  SARInverseTransformFactory ..> SARInverseTransform : CreateInstance

  SensorTransformFactory ..>  SARForwardTransformFactory : RegisterFactory
  SensorTransformFactory ..>  SARInverseTransformFactory : RegisterFactory

  GenericRSTransform ..> SensorTransformFactory

  SensorTransformBase : +IsValidSensorModel() = 0
  SensorTransformBase : +TransformPoint() = 0
  SensorTransformBase : -SetMetadata(ImageMetadata&)* bool

  SARTransformBase : -SARSensorModel m_Transformer
  SARTransformBase : +IsValidSensorModel()
  SARTransformBase : -SetMetadata(ImageMetadata&)* bool

  SARForwardTransform : +TransformPoint()
  SARInverseTransform : +TransformPoint()

  SensorTransformFactory : +DirectionType direction {Forward,Inverse}
  SensorTransformFactory : +CreateMachineLearningModel
  SensorTransformFactory : +CleanFactories
  SensorTransformFactory : -RegisterBuiltInFactories()
  SensorTransformFactory : -RegisterFactory()

  ObjectFactoryBase : +CreateObject()

Classes and methods to implement:

  • otb::SARTransformBase
    • otb::SARTransformBase::SetMetadata(ImageMetadata&)
    • otb::SARTransformBase::IsValidSensorModel()
    • otb::SARTransformBase::PrintSelf()
  • otb::SARForwardTransform
    • otb::SARForwardTransform::TransformPoint(Point)
  • otb::SARInverseTransform
    • otb::SARInverseTransform::TransformPoint(Point)
  • otb::SARForwardTransformFactory
  • otb::SARInverseTransformFactory

Acceptance criterions

Risk management

Risk Likelihood Impact Action
Edited Feb 25, 2021 by Julien Osman
Assignee
Assign to
8.0.0
Milestone
8.0.0
Assign milestone
Time tracking
None
Due date
None
Reference: orfeotoolbox/otb#2151