Releases: NeoGeographyToolkit/StereoPipeline
2024-12-20-daily-build
Recent additions log: https://stereopipeline.readthedocs.io/en/latest/news.html
2024-12-19-daily-build
Recent additions log: https://stereopipeline.readthedocs.io/en/latest/news.html
ASP 3.4.0
ASP 3.4.0 release notes: https://stereopipeline.readthedocs.io/en/latest/news.html#release-3-4-0-june-19-2024
Installation: https://stereopipeline.readthedocs.io/en/latest/installation.html#installation
Documentation for this version: https://stereopipeline.readthedocs.io/en/stable
ASP 3.3.0
ASP 3.3.0 release notes: https://stereopipeline.readthedocs.io/en/latest/news.html#release-3-3-0-august-16-2023
Installation: https://stereopipeline.readthedocs.io/en/latest/installation.html#installation
Note for OSX users installing with conda: https://stereopipeline.readthedocs.io/en/latest/installation.html#fixes-for-potential-osx-issues
ASP 3.2.0
ASP 3.1.0
ASP 3.0.0
ASP 2.7.0
ASP 2.6.2
*** RELEASE 2.6.2, June 15, 2019 ***
DOI: https://doi.org/10.5281/zenodo.3247734
-
New satellites
- Added support for SkyBox, together with a detailed example,
including how to jointly align and optimize cameras in respect
to a reference DEM, while optionally refining the intrinsics.
This approach may be helpful for other images obtained with frame
cameras and uncertain positioning information. - Added support for CORONA KH-4B, KH-7, and KH-9 declassified images
and their panoramic (optical bar) camera models, as well as using
and optimizing camera models with RPC distortion. An example
is in the documentation.
- Added support for SkyBox, together with a detailed example,
-
New tools
- Added parallel_bundle_adjust which computes image statistics and
IP matching in a parallel manner similar to parallel_stereo. - Added the cam_gen tool to create a correctly oriented pinhole
camera model given camera intrinsics, lon-lat coordinates of the
corners (or some other pixels), and optionally a ground truth
DEM. It can also parse SkySat's video/frame_index metafile to get
this data. It can also take as input any camera supported by ASP
via --input-camera and create a most-similar pinhole camera
model with given intrinsics. - Added the coverage_fraction tool to provide a coverage estimate
of the results of a stereo call. - Added the image_mosaic tool which merges together images based on
interest point matches. Can be used to stitch together Corona
scanned images. - Added a new tool, n_align, to jointly align n clouds
(re-implemented from Matlab, works well for small clouds that are
close to each other).
- Added parallel_bundle_adjust which computes image statistics and
-
stereo_rfne
- Added the option to run a non-SGM subpixel option after
running SGM/MGM. - Added the phase correlation subpixel option. This is a Fourier
transform based method.
- Added the option to run a non-SGM subpixel option after
-
pc_align
- Added a new approach to finding an initial transform between
clouds, when they are DEMs, that may be more robust to large
scale or translation changes, or to noise. It is based on
hillshading the DEMs and finding interest point matches among
them, which are then used to find the transform. Can be invoked
with --initial-transform-from-hillshading .
Supported transforms are: 'similarity' (rotation + translation +
scale), 'rigid' (rotation + translation) and 'translation'. - Added the expression of the Euler angles in the North-East-Down
coordinate system around the center of gravity of the source
cloud. - Bugfix: intersection of bounding boxes of the clouds takes
into account the initial transform applied to the source points. - Added a new alignment algorithm, based on
https://github.com/IntelVCL/FastGlobalRegistration
It can be invoked with --alignment-method fgr. It can perform
better than ICP when the clouds are close enough to each
other but there is a large number of outliers, when it can
function with very large --max-displacement. It does worse if the
clouds need a big shift to align.
- Added a new approach to finding an initial transform between
-
bundle_adjust
- Two passes of bundle adjustment (with outlier filtering after
- first pass) is now the default.
- The flag --skip-rough-homography is on by default as it usually
gives more reliable results. Use --enable-rough-homography
to turn this option back on (useful when the footprint on the
ground and difference in perspective are large). - The flag --disable-tri-ip-filter is also the default as input
cameras may not be reliable enough for this filter. Can be
enabled back with --enable-tri-ip-filter. - Added the --intrinsics-limits option to manually specify
intrinsic parameter limits. - Added the --num-random-passes option to allow repeat solving
attempts with randomly distorted initial parameters. - Added option to automatically guess overlapping images from
Worldview style XML camera files. - Removed the non-Ceres bundle adjustment options.
- Added the option to share or not share selected intrinsic parameters
between pinhole cameras when optimizing intrinsics. - Improvements in solving simultaneously for both intrinsics and
extrinsics of n camera images if underlying ground truth
terrain in the form of a DEM or LIDAR point cloud is
present. After this bundle adjustment, pairwise stereo and DEM
creation, the DEMs are well-aligned to the ground truth. - Added the flag --reference-terrain-weight which, when increased,
helps align better camera images to a given reference terrain. - Added the option --heights-from-dem. It is very helpful in
determining an unknown focal length and distortion parameters
for pinhole cameras.
It can be used together with ---heights-from-dem-weight. - Bug fix in outlier filtering for n images.
- Updated Ceres version from 1.11 to 1.14. When optimizing with
multiple threads, results now vary slightly from run to run.
Results from single threaded runs are deterministic. - Added a new --parameter-tolerance option. Stop when the relative
error in the variables being optimized is less than this. - Documented the ability to create a roughly positioned
pinhole camera model from an image if its intrinsics and the
longitude and latitude (and optionally height) of its corners
(or some other pixels) are known. - When multiple passes happen with outliers removed, match files
are not over-written, but a new clean copy of them gets saved. - Renamed --create-pinhole-cameras to --inline-adjustments, and
distortion_params to other_intrinsics. This is needed since
for the panoramic model there will be other intrinsic
parameters as well. - Added the option --forced-triangulation-distance for when one
really needs to triangulate with poor cameras. Can be used with
--min-triangulation-angle 0. - Added the option --transform-cameras-using-gcp. If there
are at least two images with each having at least 3 GCP
(each GCP need not show in more than one image), use this
to convert cameras from an abstract coordinate system to world
coordinates. - Increased the default --num-ransac-iterations to 1000 from 100
so that the solver tries harder to find a fit.
Increased default --ip-inlier-factor from 1/15 to 0.2 to help
with getting more interest points for steep terrain with the
pinhole session. - Increased the default --ip-uniqueness-threshold from 0.7
to 0.8 to allow for more interest points. - Option to filter interest points by elevation limit and lon-lat limit
after each pass of bundle adjustment except the last.
-
dem_mosaic
- Added normalized median absolute deviation (NMAD) output option.
- Added the option --force-projwin to create a mosaic filling
precisely the desired box specified via --t_projwin.
-
stereo_gui
- Added the ability to manually reposition interest points.
- Can now show non-synchronous .match files (that is, each IP
need not be present in all images). - Added basic functionality for drawing/editing/merging polygons on
- top of georeferenced images or DEMs. The polygons can be saved as
shape files, and then used to cut out portions of images with GDAL. - Added the option --nodata-value. Pixels with value less than
or equal to this are shown as transparent. - Added the ability to view .vwip files (specify one per image).
- Can view (but not edit) GCP files, via --gcp-file (creating
GCP is supported in a separate mode, per the doc). - The option --dem-file specifies a DEM to use when creating
manually picked GCP and --gcp-file specifies the name of
the GCP file to use upon saving such GCP.
-
mapproject
- Added the --nearest-neighbor option to use that interpolation
method instead of bicubic. This is better for labeled images
which should not be interpolated.
- Added the --nearest-neighbor option to use that interpolation
-
convert_pinhole_model
- Can create RPC distortion models of any degree, which can be
further optimized in bundle_adjust. Old RPC distortion files are
still supported throughout ASP, but not functionality which
optimizes them. They can be approximately converted to new type
RPC distortion files with this tool if optimization is desired.
- Can create RPC distortion models of any degree, which can be
-
Misc
- Compiled against USGS ISIS version 3.6.0.
- Expanded the documentation explaining how to align cameras
to a DEM manually (or initialize such cameras) by selecting
matching points between the images and the DEM. - The stereo tools and bundle_adjust will now cache image
statistics and interest points to files on disk. - In stereo and bundle_adjust, when images or cameras are newer
than the match files, the latter get recomputed unless the tools
are invoked with --force-reuse-match-files. - Added a fix to make stereo work with the ZY3 satellite.
- For stereo and bundle_adjust, added the --no-datum option to
find interest points without assuming a reliable datum exists,
such as for irregularly shaped bodies. Added the related
option --skip-rough-homography to not use the datum in
rough homography computation. Added the option
--ip-num-ransac-iterations for finer control of interest
point matching. Added --ip-triangulation-max-error to control
the triangulation error. - The cam2rpc tool accepts --t_srs and --semi-major-axis as
alternatives to --datum and --dem-file. - Add option --theia-overrides to camera_solve to make it easier
to customize its behavior via flags. - Added an explanation for how the pinhole model works.
NASA Ames Stereo Pipeline 2.6.1
August 13, 2018
-
New satellites
- Support Cartosat-1 and Perusat-1 RPC cameras.
-
New tools
- Added convert_pinhole_model, to convert between various
existing such models. - Added camera_footprint as a helpful utility to show where
images will project on to the ground. - Documented and improved the ipfind and ipmatch tools.
ipfind is used to detect interest points in input images,
either to generate .vwip files for other tools or to
experiment with different IP finding settings.
ipmatch matches the IPs contained in .vwip files to
create .match files.
- Added convert_pinhole_model, to convert between various
-
New camera models
- Added simple atmospheric refraction correction to the
DG and SPOT5 camera models. This can be manually disabled
using the "--disable-correct-atmospheric-refraction" option. - Added support for pinhole camera models where the lens
distortion is given by an RPC model (rational polynomial
coefficients), of degrees 4, 5, and 6. Such a model may be more
expressive than existing ones, and its coefficients can now be
optimized using bundle adjustment. An initial model can be
created with convert_pinhole_model.
- Added simple atmospheric refraction correction to the
-
stereo_corr
- Added new options for post-SGM subpixel stereo. Previously only a
parabola method was used. - Added option to perform cross-correlation checks on multiple
resolution levels while using SGM/MGM. - Added option --corr-search-limit to constrain the automatically
computed correlation search range. - Added --corr-memory-limit-mb option to limit the memory usage of
the SGM/MGM algorithms. - Improved search range estimation in nadir epipolar alignment
cases. Added --elevation-limit option to help constrain this
search range. - Added hybrid SGM/MGM stereo option.
- Improvements to SGM search range estimation.
- Added --min-num-ip option.
- Added new options for post-SGM subpixel stereo. Previously only a
-
bundle_adjust
- Added the ability to optimize pinhole camera intrinsic
parameters, with and without having a LIDAR or DEM ground truth
to be used as reference (the latter is recommended though). - The tool is a lot more sensitive now to --camera-weight,
existing results may change a lot. - Added the parameters --rotation-weight and --translation-weight
to penalize large rotation and translation changes. - Added the option --fixed-camera-indices to keep some cameras
fixed while optimizing others. - Can read the adjustments from a previous invocation of this
program via --input-adjustments-prefix. - Can read each of pc_align's output transforms and apply it
to the input cameras via --initial-transform, to be able to
bring the cameras in the same coordinate system as the aligned
terrain (the initial transform can have a rotation, translation,
and scale). If --input-adjustments-prefix is specified as well,
the input adjustments are read first, and the pc_align
transform is applied on top. - Renamed --local-pinhole to --create-pinhole-cameras.
- Added the parameter --nodata-value to ignore pixels at and below
a threshold. - Added the ability to transfer interest points manually picked in
mapprojected images to the the original unprojected images via
--mapprojected-data. - Added the flag --use-lon-lat-height-gcp-error. Then, if using
GCP, the three standard deviations are interpretted as applying
not to x, y, z but to latitude, longitude, and height above
datum (in this order). Hence, if the latitude and longitude are
known accurately, while the height less so, the third standard
deviation can be set to something much larger. - Added the ability to do multiple passes of bundle adjustment,
removing outliers at each pass based on reprojection error and
disparity (difference of pixel value between images). This
works for any number of cameras. Match files are updated with
outliers removed. Controlled via --num-passes,
--remove-outliers-params and --remove-outliers-by-disparity-params. - Added the option --save-cnet-as-csv, to save the control
network containing all interest points in the format used by
ground control points, so it can be inspected. - If --datum is specified, bundle_adjust will save to disk
the reprojection errors before and after optimization.
- Added the ability to optimize pinhole camera intrinsic
-
stereo_gui
- Can view SPOT5 .BIL files.
-
pc_align
- Add the ability to help the tool with an initial translation
specified as a North-East-Down vector, to be used to correct known
gross offsets before proceeding with alignment. The option is
--initial-ned-translation. - When pc_align is initialized via --initial-transform or
--initial-ned-translation, the translation vector is now computed
starting from the source points before any of these initial
transforms are applied, rather than after. The end point of this
vector is still the source points after alignment to the
reference. This is consistent with the alignment transform output
by the tool, which also is from the source points before any
initial alignment and to the reference points. - The translation vector was expressed incorrectly in the
North-East-Down coordinate system, that is now fixed.
- Add the ability to help the tool with an initial translation
-
dem_mosaic
- If the -o option value is specified as filename.tif, all mosaic will be
written to this exact file, rather than creating tiles.
- If the -o option value is specified as filename.tif, all mosaic will be
-
point2dem
- Added the ability to apply a filter to the cloud points in each circular
neighborhood before gridding. In addition to the current weighted average
option, it supports min, max, mean, median, stddev, count, nmad,
and percentile filters. The --search-radius-factor parameter can
control the neighborhood size. - Sped up hole-filling in ortho image generation. If this creates
more holes than before, it is suggested to relax all outlier filtering,
including via --remove-outliers-params, median filtering, and erosion. - Added the option --orthoimage-hole-fill-extra-len to make hole-filling
more aggressive by first extrapolating the cloud.
- Added the ability to apply a filter to the cloud points in each circular
-
datum_convert
- Rewrote the tool to depend on the Proj.4 HTDPGrids grid shift system.
This fixed some situations where the tool was not working such as WGS84/NAD83
conversions and also added support for datum realizations (versions). - Vertical datum conversion is only supported in simple cases like D_MARS to MOLA.
- Even with HTDPGrids, datum support with the Proj.4 library is poor and will
hopefully be improved with future releases. Until then try to get external
verification of results obtained with the datum_convert tool.
- Rewrote the tool to depend on the Proj.4 HTDPGrids grid shift system.
-
wv_correct
- Supports WV2 TDI = 32 in reverse scan direction.
-
Misc
- We now compile against USGS ISIS version 3.5.2.
- The tools mapproject, dem_mosaic, dg_mosaic, and wv_correct support
the --ot option, to round the output pixels to several types of
integer, reducing storage, but perhaps decreasing accuracy. - The tools mapproject and image_calc support the --mo option to
add metadata to the geoheader in the format 'VAR1=VAL1 VAR2=VAL2',
etc. - Handle properly in bundle_adjust, orbitviz, and stereo
with mapprojected images the case when, for RPC cameras,
these coefficients are stored in _RPC.TXT files. - Support for web-based PROJ.4 strings, e.g.,
point2dem --t_srs http://spatialreference.org/ref/iau2000/49900/ - Added --max-output-size option to point2dem to prevent against
creation of too large DEMs. - Added image download option in hiedr2mosaic.py.
- Bugfix in cam2map4stereo.py when the longitude crosses 180 degrees.
- Added support for running sparse_disp with your own Python installation.
- Bugfix for image cropping with epipolar aligned images.
- The sfs tool supports the integrability constraint weight from Horn 1990.
- The software works with both Python 2 and 3.