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 by Julien Osman