computing the absolute orthophoto and DEM#

Once you have successfully run spymicmac.register.register_relative(), you will have an absolute orientation folder, Ori-TerrainFinal. This is the folder to pass to Malt:

mm3d Malt Ortho "OIS.*tif" TerrainFinal DirMEC=MEC-Malt NbVI=2 ZoomF=1 DefCor=0 CostTrans=4 EZA=1 SzW=3 Regul=0.1

or, using spymicmac.micmac.malt():

from spymicmac import micmac
micmac.malt('OIS.*tif', 'TerrainFinal',
    zoomf=1,
    dirmec='MEC-Malt',
    cost_trans=4,
    szw=3,
    regul=0.1
)

Just like with the computing the relative dem and orthophoto step, once this command finishes, you will have two new directories: MEC-Malt and Ortho-MEC-Malt. The DEM and associated correlation masks are found in MEC-Malt, while the orthophotos are found in Ortho-MEC-Malt.

Also like with the relative step, the other parameters used here are:

  • NbVI (number of visible images): Malt defaults to only running where 3 or more images are visible (NbVI=3), but it is usually fine to go with 2 images.

  • ZoomF (final zoom level): here, we want to process the DEM at full resolution (ZoomF=1).

  • DefCor (default correlation value): the default correlation value to use in pixels that are uncorrelated.

  • CostTrans (transition cost): the cost to transition from correlation to decorrelation. Higher values means that more areas are included (because it is ‘harder’ to transition to decorrelation), though it may also increase the noise in the final result.

  • EZA (export Z absolute): EZA=1 argument ensures that the values in the DEM are absolute (in the units of the coordinate system), rather than scaled.

  • SzW (correlation window size): the half-size of the window of the correlation window. SzW=3 means using a 7x7 correlation window; larger window sizes increase the likelihood of finding matches in areas with poor contrast (i.e., over glaciers), but also tend to smooth out the elevation.

  • Regul (regularization factor): the regularization factor (penalty) to use for the transition term. Higher values tend to smooth out the terrain.

Depending on your images and application, you may want to experiment with parameters such as SzW and Regul.

creating the orthomosaic using Tawny#

Just like with the computing the relative dem and orthophoto step, the orthoimages are not mosaicked - they are just the individual images orthorectified using the extracted DEM - you’ll need to run Tawny again to mosaic the images:

mm3d Tawny Ortho-MEC-Malt Out=Orthophotomosaic.tif RadiomEgal=0

Again, we are using RadiomEgal=0 to use the images as-is, rather than attempting to balance the radiometry (as this can lead to undesirable results).

Finally, you might need to re-combine the image tiles, depending on how large they are:

mosaic_micmac_tiles Orthophotomosaic -imgdir Ortho-MEC-Malt

At this point, you should have a finished DEM and orthomosaic. You may want to check the accuracy of your DEM by co-registering it to a DEM of known quality. You may also wish to remove residual doming effects using mm3d PostProc Banana, or spymicmac.micmac.banana().

post-processing#

After Malt is finished, the DEM will look something like this:

a hillshade of a DEM


The areas outside of the images are interpolated to fill the space, as are areas covered by the images that did not correlate (due to clouds, shadow, water, or snow, for example). While the images are in .tif format, they are not geotiffs (meaning that the georeferencing is not encoded in the image).

To mask areas outside of the images and add the georeferencing information to the image files, you can run spymicmac.mimcac.post_process():

from spymicmac import micmac
micmac.post_process('epsg:32719', 'KH9MC_19780516', 'MEC-Malt')

This will apply the AutoMask files to the DEM and georeference the DEM, correlation image, and create a hillshade. The DEM should now look something like this:

a hillshade of a DEM


If you have used Tawny to create an orthomosaic, you can use do_ortho=True to georeference and mask the orthomosaic. If you also want to mask the individual orthophotos, you can use ind_ortho=True.

running malt on blocks of images (TODO)#

If you have divided your study area into smaller sub-blocks of images, you will probably want to run Malt on each of those sub-blocks individually, rather than trying to run it on all of the images at once.