StereoFramework error: MultiDisparityMapTo3DFilter : Reference keywordlist is missing


I am trying to extract a DEM from Stereo Pairs. These images are scans of 1950 aerial photos. All I know is the lens (152.4mm) and the altitude (20000 feet). None of this is currently coded in the .tif tags but the images are georeferenced. No GPS info is currently added either.

Currently the StereoFrameWork process stops with the following error: 2022-02-02 22:22:37 (FATAL) StereoFramework: itk::ERROR: MultiDisparityMapTo3DFilter(000002B76FC6CD80): Reference keywordlist is missing

What is the cause for this error?

According to issue #1822 (closed), it indicates that OTB is looking for sensor information? What specific information is it looking for? Can I simulate this information and add it to the .tif tags?

If this should be posted in the user group, please direct me to it. The OTB google user group seems offline. Thanks for your help Nicolas

Full log from Monteverdi:

2022-02-02 21:33:06 (INFO) StereoFramework: Default RAM limit for OTB is 256 MB
2022-02-02 21:33:06 (INFO) StereoFramework: GDAL maximum cache size is 6548 MB
2022-02-02 21:33:06 (INFO) StereoFramework: OTB will use at most 12 threads
2022-02-02 21:33:06 (INFO) StereoFramework: Elevation management: setting default height above ellipsoid to 0 meters
2022-02-02 21:33:06 (WARNING) StereoFramework: DEM directory : X:/Monteverdi/DEM is not a valid DEM directory
2022-02-02 21:33:06 (INFO) StereoFramework: 1 Stereo couples will be processed
2022-02-02 21:33:07 (INFO) StereoFramework: Processing stereo couple 0 (images index 0 and 1)
2022-02-02 21:33:07 (INFO) StereoFramework: Minimum disparity : -0
2022-02-02 21:33:07 (INFO) StereoFramework: Maximum disparity : 0
2022-02-02 22:22:37 (INFO) StereoFramework: Using robust SSD Metric for BlockMatching.
2022-02-02 22:22:37 (INFO) StereoFramework: Using reverse block-matching to filter incoherent disparity values.
2022-02-02 22:22:37 (FATAL) StereoFramework: itk::ERROR: MultiDisparityMapTo3DFilter(000002B76FC6CD80): Reference keywordlist is missing

Using OTB 7.4.0 on Windows 10. Same error if I use it in QGIS or the Monteverdi Application.

Do I need to add more information on this? Seems nobody can help. Is it because it’s not clear on my part?

Dear @njacadieux,

Sorry for taking so long to answer…

This application needs the geometric model included in the metadata of the product (usually RPC model). By default, OTB can read the geometric model for a limited number of sensors (see OrthoRectification — Orfeo ToolBox 7.4.0 documentation).

So, you will need to provide the geometric model directly with the image through a “GEOM” file. You can either have a file next to your image called “name_of_the_image.geom”, or use the extended filename ‘geom’: &geom=<path/filename.geom>.

The geom file needs to contain the geometric model that will be used by the algorithm. You have an example here.

For more details on the RPC model, you may want to see GDAL’s documentation. To generate a RPC model, you may consider using the GenerateRPCSensorModel application. But note that it is a deprecated application, because the algorithm it uses is not very stable.


Thanks for the information. Perhaps a more specific error message would help. You could also add the the need for the RPC model in this page Stereoscopic reconstruction — Orfeo ToolBox 7.4.0 documentation. and here StereoFramework — Orfeo ToolBox 7.4.0 documentation.

A brief reading of your documents indicates I need 20 to 40 control points to create this model. In my case, all I have is the lens focal-length (152.4mm) and 9 fiducial marks on each scene. Is there a way to retrieve a partial RPC Model with only 9 fiducial marks?

Thanks for your help.

Since I am dealing with historical aerial photos, the information I have is the following:
Date 1950
Scale 1:40 000
Lens focal-length: 152.4mm
Altitude 20 000 feet with 60/30% overlap
Film 9 x 9 inch
Scans: 10680 x 10680 pixels, 1200dpi. Pixel posting is around 80cm


OTB doesn’t provide an other way to generate the RPC model than the GenerateRPCSensorModel application. :frowning: Maybe someone else could lead you to another solution…

I will update the documentation. Thank you for the feed back :slight_smile: