Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • otb otb
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 211
    • Issues 211
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 13
    • Merge requests 13
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • 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
  • Main Repositories
  • otbotb
  • Issues
  • #2151
Closed
Open
Issue created Feb 22, 2021 by Julien Osman@julienosmanDeveloper

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

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

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 (closed).


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

  • The new classes are correctly tested with there respective unitary tests.
  • The documentation is up to date.

Risk management

Risk Likelihood Impact Action
Edited Jul 22, 2021 by Julien Osman
Assignee
Assign to
Time tracking