{"id":29742646,"url":"https://github.com/andrepiz/abram","last_synced_at":"2025-07-26T02:47:11.818Z","repository":{"id":256159577,"uuid":"764723008","full_name":"andrepiz/abram","owner":"andrepiz","description":"The Astronomical Bodies Rendering Application for Mission design (ABRAM) is a validated physics-based open-access render engine for planets, moons and small bodies.","archived":false,"fork":false,"pushed_at":"2025-06-18T14:30:54.000Z","size":22235,"stargazers_count":5,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-18T15:36:08.073Z","etag":null,"topics":["asteroids","camera","image","moons","planets","radiometry","rendering","synthetic"],"latest_commit_sha":null,"homepage":"","language":"MATLAB","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/andrepiz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-02-28T15:43:58.000Z","updated_at":"2025-06-18T14:30:59.000Z","dependencies_parsed_at":"2025-05-03T15:22:38.998Z","dependency_job_id":"aede1fde-11f8-4753-b250-3832c3fe82d3","html_url":"https://github.com/andrepiz/abram","commit_stats":null,"previous_names":["andrepiz/abram"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/andrepiz/abram","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrepiz%2Fabram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrepiz%2Fabram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrepiz%2Fabram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrepiz%2Fabram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andrepiz","download_url":"https://codeload.github.com/andrepiz/abram/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andrepiz%2Fabram/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267109396,"owners_count":24037619,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"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":["asteroids","camera","image","moons","planets","radiometry","rendering","synthetic"],"created_at":"2025-07-26T02:47:02.603Z","updated_at":"2025-07-26T02:47:11.811Z","avatar_url":"https://github.com/andrepiz.png","language":"MATLAB","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ABRAM\n_**A**stronomical **B**odies **R**endering **A**pplication for **M**ission design_\n\n![optimal_texp](https://github.com/user-attachments/assets/b46155fe-9300-4ca2-bd49-9c792e8a4546)\n\n**INSTALLATION:** \nclone the repository and the linked submodules by running the following git commands:\n\n`git clone https://github.com/andrepiz/abram`\n\n`git submodule init`\n\n`git submodule update`\n\nThen, simply run the script _call()_ to generate your first rendering.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/9211622b-cfd4-4cae-a7a2-45427ed514c9\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/2331dccb-6b9b-4926-b54e-6c5d374c27fd\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/ab6fb2e6-84e3-4a5c-840e-25acaf31de39\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/2a4ac9df-9f75-4a3e-8aef-da8115591182\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/f3c50857-0731-4be8-b6cb-da49013f4e77\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/8e018275-5a4e-4f78-9a4c-ed0757ec9e67\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/3b9f1943-3c72-48f7-ae86-5f648fab29eb\" height=\"200\" /\u003e\n  \u003cimg src=\"https://github.com/user-attachments/assets/5eba8dd5-4351-4833-9181-57678352ba61\" height=\"200\" /\u003e\n\u003c/p\u003e\n\n**USAGE:** \na 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:\n\n`rend = abram.render('YOUR_FILE.YML')`\n\nAnd a first image will be rendered. \nTo generate new renderings, you can first modify the render properties with the desired parameters (for instance, new pose or new camera properties), then call: \n\n`rend = rend.rendering()`\n\nIn 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()_.\n\nThe repository also includes some tutorials to help users become familiar with the toolbox:\n- moon_trajectory: generate a dataset of Moon images along a trajectory defined in ECI or IAU Body-fixed frame\n- hyperspectral_texture: how to embed an high-resolution hyperspectral albedo texture tile in the rendering workflow\n  \n![https://github.com/user-attachments/assets/20ef4518-5e67-48cf-a2be-605e1f6d0abc](https://github.com/user-attachments/assets/22ebb7a9-32e4-49f9-992c-5c37f973b47a)\n\n**DEPENDENCIES:**\nABRAM has been developed and tested in MATLAB r2023b with the following dependencies:\n- Image Processing Toolbox (required)\n- Parallel Computing Toolbox (for multi-thread rendering)\n- Statistics and Machine Learning Toolbox (for image noises)\n  \n**DESCRIPTION:**\nABRAM 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. \n\nSeveral BRDFs are implemented and the user can mix them to find the more realistic model depending on the body considered. \n\n![image](https://github.com/user-attachments/assets/5affe851-186d-4cd4-b9d6-60eaf67562ba)\n\nThe 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: \n\n![temp](https://github.com/user-attachments/assets/20ef4518-5e67-48cf-a2be-605e1f6d0abc)\n\nNormal 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).\n\nABRAM 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: \n\n![validation_amie_corr_tiled_horz](https://github.com/user-attachments/assets/5416e9f9-cfd0-48ac-bf6f-f3465ed26f1e)\n![validation_amie_ideal_tiled_horz](https://github.com/user-attachments/assets/c73be108-327f-4f7f-94c0-2bc640a23349)\n\nABRAM also supports simple non-spherical shapes such as disks, cylinders, cubes, sticks, plates:\n\n![debrisField](https://github.com/user-attachments/assets/8b6ca482-f38b-41ca-b07d-0f9907651cc0)\n\n**DOCUMENTATION:** documentation is on its way. In the meantime, for more details on the implementation and capabilities, check the following publications:\n\u003e A. Pizzetti, P. Panicucci, F.Topputo. \"A Radiometric Consistent Render Procedure for Planets and Moons\". 4th Space Imaging Workshop.\n\n**CREDITS:**\nif you use the tool, please cite it in your work as: \n\u003e A. Pizzetti, P. Panicucci, F.Topputo. \"Development and Validation of an Astronomical Bodies Rendering Application for Mission design\". Under review.\n\n**CONTRIBUTING:**\nfeel 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 \n\n| Version | Changelog |\n| ------ | ------ |\n|    v1.5    |Added support to hyperspectral maps; added support to non-spherical shapes; added tutorials |\n|    v1.4    |Improved frame rate; added Hapke reflection model; added ellipsoidal shapes |\n|    v1.3    |Added occlusions; improved direct gridding efficiency; added smart-calling of methods       |\n|    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        |\n|    v1.1    |Added parallelization        |\n|    v1.0    |Ready for dissemination        |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrepiz%2Fabram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrepiz%2Fabram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrepiz%2Fabram/lists"}