Changes
Page history
Update Remove OSSIM with description of the SensorModel architecture
authored
Sep 02, 2020
by
Julien Osman
Hide whitespace changes
Inline
Side-by-side
Remove-OSSIM.md
View page @
e8517207
...
@@ -156,6 +156,68 @@ Here is a new workflow to replace the current function
...
@@ -156,6 +156,68 @@ Here is a new workflow to replace the current function
to store the metadata. If the parsing returns successfully, the
to store the metadata. If the parsing returns successfully, the
generated ImageMetadata is given to the
*ImageCommon*
that
generated ImageMetadata is given to the
*ImageCommon*
that
propagate through the pipeline.
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
## Justifications for the technical choices
...
...
...
...