Skip to content
Andrea Pizzetti edited this page Aug 7, 2026 · 18 revisions
logoABRAMcropped

Overview

ABRAM is A physically-Based Rendering Application in Matlab for celestial objects such as planets, moons, and small bodies such as asteroids or space debris. ABRAM can be used for the generation of image datasets, for camera design and radiometry-related analysis, and for the usage of hardware-in-the-loop optical facilities. ABRAM has been geometrically and radiometrically validated against analytical models and ground truth images taken from ground and from space.

Some of its core functionalities are:

  • High-Quality Image (uint8, uint16, double) and depth map generation
  • Multi-Spectral Renderings (monochromatic, panchromatic, RGB, etc...)
  • Customizable Shaders (lambert, lommel-seeliger, area, specular, phong, hapke, etc...)
  • High-Resolution Global or Tiled Texture Maps (albedo, displacement, normal, horizon)
  • CPU-based with double-floating point precision
  • 1-10 Hz rendering frame rates with the current MATLAB implementation

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. If everything goes smooth, you should see an image of the Moon appear on the main installation folder. Otherwise, please refer to the DEBUG section.

The Tutorials section is your starting point for learning how to use ABRAM in your workflow. If you want to know how ABRAM was made, check The Physics Behind section.

Dependencies

ABRAM has been developed and tested in MATLAB r2023b with the following packages installed:

  • Image Processing Toolbox (required)
  • Parallel Computing Toolbox (required only for multi-thread rendering)
  • Statistics and Machine Learning Toolbox (required only for image noises)

Rendering Examples

Repository Structure

  • +abram. ABRAM Class tree.

    • +body. It contains core functionalities to perform discretization and sampling of the body.
    • +brdf. It contains the implementation of the BRDF functions.
    • +render. It contains core functionalities to perform integration and gridding of the point cloud.
  • code. Functions and external libraries used by ABRAM.

    • functions. ABRAM-specific functions that may be called at runtime.
    • lib. External libraries used by ABRAM, such as cvt or yamlMatlab.
  • postpro. Post-processing scripts to ease the visualization of results.

  • inputs. Texture maps and large input data files used to enhance the rendering.

  • test. Tutorial, examples, and validation scripts.

    • application
    • tutorial
    • validation

Data Availability

Many of the maps can be downloaded from free online sources such as:

The maps used in the tutorials that are not available for download on official sites are stored in a dedicated Google Drive database and in a Zenodo dataset.

Clone this wiki locally