Update Remove OSSIM authored by Julien Osman's avatar Julien Osman
......@@ -207,6 +207,21 @@ With this file attached, GDAL will be able to read the `egm96.grd` file as a ENV
### The new Sensor Model mechanism
The class ```otb::SensorTransformBase``` 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
```mermaid
classDiagram
class Transform~TScalarType, NInputDimensions, NOutputDimensions~{
......@@ -233,6 +248,39 @@ classDiagram
-TransformPoint(Point) Point
}
Transform <|-- SensorTransformBase
SensorTransformBase <|-- RPCTransformBase
RPCTransformBase <|-- RPCForwardTransform
RPCTransformBase <|-- RPCInverseTransform
```
The RPC model is stored in the ```otb::ImageMetadata``` object, using the
key ```MDGeom::RPC```. The classes ```otb::RPCTransformBase```,
```otb::RPCForwardTransform``` and ```otb::RPCInverseTransform``` are used to
perform forward and inverse transformation using this model.
The abstract class ```otb::RPCTransformBase``` contains the implementation
of the ```SetMetadataModel``` method, which receives the RPC
description from the ```otb::ImageMetadata``` and instantiates an
```otb::GDALRPCTransformer```.
The classes ```otb::RPCForwardTransform``` and ```otb::RPCInverseTransform```
each implement there version of the ```TransformPoint``` method which
uses the ```otb::GDALRPCTransformer```.
### SAR sensor model
```mermaid
classDiagram
class Transform~TScalarType, NInputDimensions, NOutputDimensions~{
-TransformPoint(Point)* Point
}
class SensorTransformBase~TScalarType, NInputDimensions, NOutputDimensions~{
-SetMetadataModel(boost_any)* bool
-IsValidSensorModel()* bool
}
class SarTransformBase~TScalarType, NInputDimensions, NOutputDimensions~{
-SetMetadataModel(boost_any) bool
-IsValidSensorModel() bool
......@@ -249,41 +297,12 @@ classDiagram
}
Transform <|-- SensorTransformBase
SensorTransformBase <|-- RPCTransformBase
RPCTransformBase <|-- RPCForwardTransform
RPCTransformBase <|-- RPCInverseTransform
SensorTransformBase <|-- SarTransformBase
SarTransformBase <|-- SarForwardTransform
SarTransformBase <|-- SarInverseTransform
```
The class ```otb::SensorTransformBase``` 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 ```otb::ImageMetadata``` object, using the
key ```MDGeom::RPC```. The classes ```otb::RPCTransformBase```,
```otb::RPCForwardTransform``` and ```otb::RPCInverseTransform``` are used to
perform forward and inverse transformation using this model.
The abstract class ```otb::RPCTransformBase``` contains the implementation
of the ```SetMetadataModel``` method, which receives the RPC
description from the ```otb::ImageMetadata``` and instantiates an
```otb::GDALRPCTransformer```.
The classes ```otb::RPCForwardTransform``` and ```otb::RPCInverseTransform```
each implement there version of the ```TransformPoint``` method which
uses the ```otb::GDALRPCTransformer```.
The SAR model works on the same pattern than the RPC model.
## Justifications for the technical choices
......
......