NeoGeographyToolkit / StereoPipeline

The NASA Ames Stereo Pipeline is a suite of automated geodesy & stereogrammetry tools designed for processing planetary imagery captured from orbiting and landed robotic explorers on other planets.
Apache License 2.0
479 stars 169 forks source link

Interpreting generated DEM values #264

Closed daviddemeij closed 2 years ago

daviddemeij commented 5 years ago

This might be a stupid question, but how do I interpret the values from the DEM generated by point2dem, they don't match with a low-resolution DEM that I have.

The relative values seem to be correct (the DEM images look similar), but they just seem to be on a different scale.

What scale is the generated DEM on? And is there an easy way to put this on the same scale as my low-resolution DEM?

daviddemeij commented 5 years ago

Some examples:

World DEM Airbus: min = 5, max = 480 DG DEM: min = 33, max = 533

oleg-alexandrov commented 5 years ago

Our DEM has heights (z) of meters. The x and y coordinates depend on the projection used.

The simplest thing to do would be to do gdalinfo -stats and see if there is a scale difference.

Also, given a grid cell, our DEMs are the height at the center of the cell, rather than at a corner but likely your discrepancy is due not to this.

On Fri, May 31, 2019 at 7:18 AM daviddemeij notifications@github.com wrote:

Some examples:

  • World DEM Airbus: 52, generated DG DEM: 118.78
  • World DEM Airbus: 132.67, generated DG DEM: 191.70
  • Wolrd DEM Airbus: 26.66, generated DG DEM: 92.18

World DEM Airbus: min = 5, max = 480 DG DEM: min = 33, max = 533

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/NeoGeographyToolkit/StereoPipeline/issues/264?email_source=notifications&email_token=AAKDU3DOGKSAK3AIHGHKIY3PYEXUVA5CNFSM4HRX3LF2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODWVK73I#issuecomment-497725421, or mute the thread https://github.com/notifications/unsubscribe-auth/AAKDU3A5JCPUXDDBLDALJK3PYEXUVANCNFSM4HRX3LFQ .

daviddemeij commented 5 years ago

I ran the statistics on the same area for the generated DEM and the World DEM from Airbus. And there is a clear difference:

Stats generated DEM:

max=515.7265625
mean=212.02748823692
min=29.5224609375
stdev=88.318717288669

Stats WorldDEM:

max=480.01666 
mean=141.13611 
min=5.145282 
stdev=72.3031

I guess it is easy to rescale it so that the generated DEM is on the same scale as the World DEM, but I am just wondering what is going wrong in generating this DEM (or the point cloud) that results in such a big difference because solving this issue might result in a better DEM.

daviddemeij commented 5 years ago

This is generated by running the following commands:

mapproject -t rpc --t_srs "+proj=eqc +units=m +datum=WGS84" \
n39_w009_w010_merged.tif \
mosaic_left.tif \
mosaic_left.xml \
mosaic_left_mapped.tif

mapproject -t rpc --t_srs "+proj=eqc +units=m +datum=WGS84" \
n39_w009_w010_merged.tif \
mosaic_right.tif \
mosaic_right.xml \
mosaic_right_mapped.tif

stereo -t dgmaprpc --subpixel-mode 2 --alignment-method none \
mosaic_left_mapped.tif mosaic_right_mapped.tif \
mosaic_left.xml \
mosaic_right.xml \
dg_L1B_mapproject/dg n39_w009_w010_merged.tif

followed by:

point2dem --search-radius-factor 5 --tr 1

to obtain the DEM

daviddemeij commented 5 years ago

Also, when looking at the map-projected mosaic images they are not overlapping for some reason (there is a shift). Could this be related to the difference in scale?

Could it have something to do with the georeferencing?

oleg-alexandrov commented 5 years ago

Your differences are small enough that it is likely not an issue of mixing up km with meters (or heaven forbid, even with yards or miles. :)

Likely something is wrong in the camera metadata. One DEM I often use for comparison is the SRTM 90 m DEM (e.g., http://opentopo.sdsc.edu/raster?opentopoID=OTSRTM.042013.4326.1 but it is avaiable from many places). Though I guess your World DEM is as good.

In short, probably it is camera errors in your input data. You can try maybe another dataset (from same or different vendor in a different location) to double-check yourself. Or you can try our bundle_adjust and our pc_align for adjustment of cameras.