https://github.com/andrepiz/abram
The Astronomical Bodies Rendering Application for Mission design (ABRAM) is a validated physics-based open-access render engine for planets, moons and small bodies.
https://github.com/andrepiz/abram
asteroids camera image moons planets radiometry rendering synthetic
Last synced: 11 months ago
JSON representation
The Astronomical Bodies Rendering Application for Mission design (ABRAM) is a validated physics-based open-access render engine for planets, moons and small bodies.
- Host: GitHub
- URL: https://github.com/andrepiz/abram
- Owner: andrepiz
- License: other
- Created: 2024-02-28T15:43:58.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-06-18T14:30:54.000Z (12 months ago)
- Last Synced: 2025-06-18T15:36:08.073Z (12 months ago)
- Topics: asteroids, camera, image, moons, planets, radiometry, rendering, synthetic
- Language: MATLAB
- Homepage:
- Size: 21.2 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ABRAM
_**A**stronomical **B**odies **R**endering **A**pplication for **M**ission design_

**INSTALLATION:**
clone the repository and the linked submodules by running the following git commands:
`git clone https://github.com/andrepiz/abram`
`git submodule init`
`git submodule update`
Then, simply run the script _call()_ to generate your first rendering.
**USAGE:**
a single configuration file in YAML format is enough to generate a rendering. Provide the filepath of the yml file to the _abram.render_ constructor method in MATLAB:
`rend = abram.render('YOUR_FILE.YML')`
And a first image will be rendered.
To generate new renderings, you can first modify the render properties with the desired parameters (for instance, new pose or new camera properties), then call:
`rend = rend.rendering()`
In this way most of the pre-processing activities will be skipped to lower computational time. Examples of a multi-rendering call are provided in the script _call_multi()_.
The repository also includes some tutorials to help users become familiar with the toolbox:
- moon_trajectory: generate a dataset of Moon images along a trajectory defined in ECI or IAU Body-fixed frame
- hyperspectral_texture: how to embed an high-resolution hyperspectral albedo texture tile in the rendering workflow

**DEPENDENCIES:**
ABRAM has been developed and tested in MATLAB r2023b with the following dependencies:
- Image Processing Toolbox (required)
- Parallel Computing Toolbox (for multi-thread rendering)
- Statistics and Machine Learning Toolbox (for image noises)
**DESCRIPTION:**
ABRAM is a physically-based validated render engine to generate images of celestial quasi-spherical objects with radiometric consistency. The tool integrates radiometry equations on discretized surface sectors of a sphere according to the desired Bidirectional Reflectance Distribution Function (BRDF), resulting in a 3D point cloud of points that is then direct-gridded to the image frame. ABRAM can be used for camera design, radiometry-related analysis and generation of datasets for training or testing of vision-based navigation algorithms.
Several BRDFs are implemented and the user can mix them to find the more realistic model depending on the body considered.

The user can provide also texture maps to increase the fidelity of the model at close range. Examples of renderings using only albedo (left), albedo + displacement (middle) and albedo + displacement + normal (right) are shown in the following:

Normal maps of different planets and moons of the solar system have been generated as byproduct of ABRAM development and are available at the following [link](https://zenodo.org/records/14936972).
ABRAM has been validated against real space images acquired by the AMIE camera on-board of the SMART-1 mission. Examples of real images (above) versus their rendering (bottom) at the same exposure time are depicted in the following pictures:


ABRAM also supports simple non-spherical shapes such as disks, cylinders, cubes, sticks, plates:

**DOCUMENTATION:** documentation is on its way. In the meantime, for more details on the implementation and capabilities, check the following publications:
> A. Pizzetti, P. Panicucci, F.Topputo. "A Radiometric Consistent Render Procedure for Planets and Moons". 4th Space Imaging Workshop.
**CREDITS:**
if you use the tool, please cite it in your work as:
> A. Pizzetti, P. Panicucci, F.Topputo. "Development and Validation of an Astronomical Bodies Rendering Application for Mission design". Under review.
**CONTRIBUTING:**
feel free to open an issue to report a bug or ask for a functionality. Do you want to contribute to the project or you need some help in the usage? e-mail me at andrea.pizzetti@polimi.it
| Version | Changelog |
| ------ | ------ |
| v1.5 |Added support to hyperspectral maps; added support to non-spherical shapes; added tutorials |
| v1.4 |Improved frame rate; added Hapke reflection model; added ellipsoidal shapes |
| v1.3 |Added occlusions; improved direct gridding efficiency; added smart-calling of methods |
| v1.2 |New object-oriented architecture; new fast mode with constant BRDF and no loops; increased fps at close range by pre-computing fov intersection; capability to merge QE and T spectra defined at different wavelengths |
| v1.1 |Added parallelization |
| v1.0 |Ready for dissemination |