{"id":28433066,"url":"https://github.com/leoletellier/aspeo","last_synced_at":"2026-07-17T06:35:33.619Z","repository":{"id":295988786,"uuid":"990732187","full_name":"LeoLetellier/aspeo","owner":"LeoLetellier","description":"Ames Stereo Pipeline (ASP) Sequential Workflows for Earth Observation","archived":false,"fork":false,"pushed_at":"2026-01-09T12:56:19.000Z","size":196,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-17T06:35:15.768Z","etag":null,"topics":["dsm","satellite-imagery","stereo","workflow"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/LeoLetellier.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-26T14:46:50.000Z","updated_at":"2026-05-29T12:37:42.000Z","dependencies_parsed_at":"2025-05-28T12:36:47.634Z","dependency_job_id":"3fcf007b-fc83-47d7-85ad-27b56d946aea","html_url":"https://github.com/LeoLetellier/aspeo","commit_stats":null,"previous_names":["leoletellier/aspeo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/LeoLetellier/aspeo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeoLetellier%2Faspeo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeoLetellier%2Faspeo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeoLetellier%2Faspeo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeoLetellier%2Faspeo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/LeoLetellier","download_url":"https://codeload.github.com/LeoLetellier/aspeo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/LeoLetellier%2Faspeo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35571461,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-17T02:00:06.162Z","response_time":116,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dsm","satellite-imagery","stereo","workflow"],"created_at":"2025-06-05T17:36:52.969Z","updated_at":"2026-07-17T06:35:33.598Z","avatar_url":"https://github.com/LeoLetellier.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ames Stereo Pipeline (ASP) Sequential Workflows for Earth Observation\n\nWorkflows using [Ames Stereo Pipeline](https://github.com/NeoGeographyToolkit/StereoPipeline) for Earth Observation by using image correlation to produces DSMs and displacement maps, making ASP commands easily scalable for larger dataset.\n\n\u003e [!IMPORTANT]\n\u003e This project provides workflows around common ASP commands and proposes some presets for specific cases. However it does not discuss the choice or need for ASP parameters for each of these commands.\n\u003e\n\u003e The code is provided 'AS IS' without any warranty of any kind (see License: TO BE DETERMINED).\n\nCommands can be runned for testing purposes without launching processes by adding `-d` (debug), and printing additionnal information in shell by adding `-v` (verbose).\n\n## Installation\n\nThis codebase is developped in python and need a working python environment to be used. Library requirements can be found in the `pyproject.toml` file.\n\nFor convenience, the bash files in the `export` directory can be added to path for a simpler usage (exporting the `aspeo` command). A virtual environment can be created in this repository (for example by running `uv venv` if using [***uv***](https://github.com/astral-sh/uv)) and will be used by the bash script instead of the `python` available in `PATH`.\n\n## Parameter file\n\nThis workflow uses a toml file to launch ASP binaries. For the parts corresponding to an ASP command, all arguments on sub-categories will be added to the corresponding ASP command with the following rules:\n\n* single letter keyword: `t = \"nadirpinhole\"` -\u003e `-t nadirpinhole`\n* large keyword: `alignment-method = \"none\"` -\u003e `--alignment-method none`\n* bracket value: `corr-kernel = [9, 9]` -\u003e `--corr-kernel 9 9`\n* boolean value: `no-bigtiff = true`-\u003e `--no-bigtiff`\n* absent: not used\n\nSo you can add/modify/remove any ASP specific parameter to modulate the run or use a new ASP version.\n\nGlobal parameters are used to configure how the workflow behave.\n\nThe parameter file can be generated using `asp_new`, which retrieve one of the presets available in `./presets/`. You can try the following command using the `default` preset:\n\n```bash\naspeo new preset\n```\n\n## Project Processing Structure\n\nThe processing folder is defined as followed:\n\n- `./BA/`: store the computed bundle adjustement\n- `./MP/PAN/`: store the computed panchromatic ortho-rectified images\n- `./MP/MS/`: store the computed multi-spectral ortho-rectified images\n- `./MP/PANSHARP/`: store the pansharpened images\n- `./STEREO/id1-id2/stereo-`: stereo processing files\n\nA directory prefix can be indicated where all source files will be fetched.\n\nEach source dataset can be described in the parameter file (under a `[[source]]` section, one for each dataset) or derived from file in some cases. They can also be derived from the pairs file (see below). Text file can be red be ignoring some header lines (i.e setting the global parameter `pairs-header` to `true`). The following attributes can be defined:\n\n- `id`: image identifier (i.e the acquisition date DDMMYYY)\n- `pan`: raw panchromatic image\n- `cam`: camera associated to `pan`\n- `ms`: raw multi-spectral image\n- `cam-ms`: camera associated to `ms`\n- `mp`: ortho-rectified (map-projected) image\n- `pleiades`: folder containing pleiades acquisition data (*.TIF, *.DIM, ...)\n\nEach of theses attributes can have a global prefix and suffix defined in the parameter file header, using `attribute-prefix` or `attribute-suffix`.\n\nIf the `pan` (must set global parameter `derive-pan` to `true`) or `mp` fields are not given, they will be derived from the id and their respective prefix and suffix.\n\nEach source image is defined separately. For stereo, pairs must be indicated. These pairs can be constructed in a separate file (one pair per line, space separated ids) which will be indicated with the global parameter `pairs`. All ids must be defined as sources. If no file is given, all possible bi-pairs (pairs of 2 images) will be used.\n\nIf map-projected images are present in the `./MP/PAN/` folder, they will be automatically added to the corresponding source dataset. This allows successive launch of the map-projection and stereo commands.\n\n\u003e [!TIP]\n\u003e These behaviours can be checked in the script `./src/params.py`.\n\n## Map Projection\n\nCommon image processing and visualization requires having ortho-rectified images (= map-projected). Raw images contains distorsions due to the lens and acquisition characteristics that have to be corrected to produce a \"map view\" of the image (where all pixels corresponds to equivalent flat ground area).\n\nOften, the delivered images are already ortho-rectified. However, Pléiades images for instance can be retrieved raw (for example to use the camera differences to produce a DSM).\n\nFor map projection, are needed the images with their corresponding cameras, and a DEM. For Pléiades images, raw images and cameras (DIM) can be retrieved directly using the `pleiades` keyword.\n\nFor map-projecting panchromatic or multi-spectral images, the associated attribute must be defined for each dataset and the resolution of output images set as global variables in the parameter file header using `mp-pan` and `mp-ms`. These parameters will be used as the `tr` value for the command (by defining them here, you can have different resolution for pan and ms).\n\n```bash\naspeo mp aspeo.toml\n```\n\nFor more detailled processing, additionnal steps can be used:\n\n- `bundle-adjust`: Bundle Adjustement corrects empirically the cameras for a better fit\n- **map-project**: for Panchromatic (P) and/or Multispectral (MS) data\n- `pansharp`: Pansharpening (GDAL) uses the P data (with better resolution) as additionnal information for resampling MS data pto this better resolution\n- `orbitviz`: Generate a kml to visualize the orbit and camera position during the acquisition\n\n\u003e [!TIP]\n\u003e Check the `mp_pleiades` preset for additionnal information.\n\n## Pixel tracking\n\nThe pixel tracking workflow takes two map-projected images with respective cameras to compute the disparity map (correspondance of individual pixels) between the two. Correlation is directly stopped before triangulation (ASP correlator mode).\n\nBest practice is to have all input images in the same folder, and with a name with only the date or identifier changing. That way, a pairs file can be defined for the used pairs which will serve to derive the map-projected files from the input folder, mp prefix, identifier, and mp-suffix.\n\n```bash\naspeo pt aspeo.toml\n```\n\nFor more detailled processing, additionnal steps can be used:\n\n- **stereo**: using `correlator-mode`\n- `corr-eval`: Computing the normalized cross correlation metrics (NCC) for each pixel given the resulting disparities for the input images\n\n\u003e [!TIP]\n\u003e Check the `pt_pleiades` preset for additionnal information.\n\n## DSM generation\n\nUsing map-projected images and given their cameras, the 3D position of each pixels can be reconstructed by triangulation after disparity estimation. This produces a Digital Surface Model (DSM).\n\n```bash\naspeo dsm aspeo.toml\n```\n\nFor more detailled processing, additionnal steps can be used:\n\n- **stereo**\n- `pc-align`: Move the resulting point cloud to fit well known positions (GCPs or other point cloud)\n- `point2dem`: Sample the resulting point cloud to generate a raster DSM (one value per pixel)\n- `dem-mosaic`: Merge multiple raster DSM and smooth overlapping areas to produce a unique global raster DSM\n\n\u003e [!TIP]\n\u003e Check the `dsm_pleiades` preset for additionnal information.\n\n## Miscellaneous\n\n### Pléiades folder information\n\nInformation (acquisition date, size, ...) about a Pléiades data folder or DIM file can be retrieved using the following command:\n\n```bash\npleiadesinfo folder\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleoletellier%2Faspeo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fleoletellier%2Faspeo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fleoletellier%2Faspeo/lists"}