... | ... | @@ -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
|
|
|
|
... | ... | |