Changes
Page history
Update Remove OSSIM with description of the SensorModel architecture
authored
Sep 02, 2020
by
Julien Osman
Show whitespace changes
Inline
Side-by-side
Remove-OSSIM.md
View page @
e8517207
...
...
@@ -157,6 +157,68 @@ Here is a new workflow to replace the current function
generated ImageMetadata is given to the
*ImageCommon*
that
propagate through the pipeline.
### The new Sensor Model mechanism
```
mermaid
classDiagram
class Transform~TScalarType, NInputDimensions, NOutputDimensions~{
-TransformPoint(Point)* Point
}
class SensorModelBase~TScalarType, NInputDimensions, NOutputDimensions~{
-SetMetadataModel(boost_any)* bool
-IsValidSensorModel()* bool
}
class RPCTransformBase~TScalarType, NInputDimensions, NOutputDimensions~{
-SetMetadataModel(boost_any) bool
-IsValidSensorModel() bool
#Projection_RPCParam m_RPCParam
#GDALRPCTransformer m_Transformer
}
class RPCForwardTransform~TScalarType, NInputDimensions, NOutputDimensions~{
-TransformPoint(Point) Point
}
class RPCInverseTransform~TScalarType, NInputDimensions, NOutputDimensions~{
-TransformPoint(Point) Point
}
Transform <|-- SensorModelBase
SensorModelBase <|-- RPCTransformBase
RPCTransformBase <|-- RPCForwardTransform
RPCTransformBase <|-- RPCInverseTransform
```
The class
```SensorModelBase```
is the new base class for sensor
models. It inherits from
```otb::Transform```
, which inherits from
```
itk::Transform```. It is templated over the data type, and input
and output dimentions. All sensor model classes should inherit from
it, and implement the methods:
- ```SetMetadataModel``` that takes a boost::any object representing
the model;
- ```IsValidSensorModel``` that returns ```true``` if the model is
correctly set;
- ```TransformPoint``` that process the transformation.
#### RPC sensor model
The RPC model is stored in the ```ImageMetadata``` object, using the
key ```MDGeom::RPC```. The classes ```RPCTransformBase```,
```
RPCForwardTransform
``` and ```
RPCInverseTransform
``` are used to
perform forward and inverse transformation using this model.
The abstract class ```
RPCTransformBase
``` contains the implementation
of the ```
SetMetadataModel
``` method, which receives the RPC
description from the ```
ImageMetadata
``` and instantiates a
```
GDALRPCTransformer
```.
The classes ```
RPCForwardTransform
``` and ```
RPCInverseTransform
```
each implement there version of the ```
TransformPoint
``` method which
uses the ```
GDALRPCTransformer
```.
## Justifications for the technical choices
### Refactor OTB Metadata
...
...
...
...