Scan a leaf, flower, or piece of fabric to generate realistic 3D texture maps.
Produce normal, albedo, and height maps for use in 3D rendering or game assets.
Digitize natural materials like bark or pressed flowers without a specialized camera rig.
Study photometric stereo techniques applied to everyday scanning hardware.
| samukashvili/lumen-ps | 100/awesome-machine-learning | adam-s/car-diagnosis | |
|---|---|---|---|
| Stars | 8 | 8 | 8 |
| Language | Python | Python | Python |
| Last pushed | — | 2024-08-07 | — |
| Maintenance | — | Stale | — |
| Setup difficulty | moderate | easy | moderate |
| Complexity | 4/5 | 1/5 | 3/5 |
| Audience | developer | developer | researcher |
Figures from each repo's GitHub metadata at analysis time.
Runs on Windows with a flatbed scanner, and works faster with an NVIDIA GPU though a CPU fallback exists.
LUMEN-PS turns an ordinary flatbed scanner, the kind used for scanning paper documents, into a tool for capturing detailed surface textures of small physical objects. From four scans of the same object rotated at different angles, it produces normal maps, albedo maps, height maps, and alpha maps, the kind of texture data used to make 3D models look realistic in games, films, or product renders. The trick works because a flatbed scanner's light and sensor sit very close together but not perfectly aligned. That tiny offset means a slightly tilted surface reflects a bit more or less light depending on which way it faces. By rotating the object 90 degrees between each of the four scans, the fixed lamp effectively shines from a different angle each time relative to the object, giving four separate lighting measurements of the same surface. Comparing those four measurements pixel by pixel lets the software work out which way each tiny point on the surface is tilted, separate from its actual base color. Because the object shifts slightly each time it is repositioned, the four scans need careful alignment before this works. The tool handles that with a multi step process: it isolates the object from the background, corrects for rotation, and then applies a more flexible alignment step to account for a leaf or piece of fabric settling slightly differently between scans. This alignment step is done carefully so that only physical movement is corrected for, not the lighting differences that the whole method depends on measuring. Although it started as a tool for scanning leaves and other plant material, the same method works for paper, fabric, tree bark, pressed flowers, prints, and other mostly matte surfaces. It does not work well on shiny or mirror like materials such as polished coins, and the readme warns against scanning anything rigid, heavy, or sharp edged, since that could scratch or crack the scanner glass. It runs on Windows and can use an NVIDIA GPU for faster processing, with a CPU fallback available.
A tool that turns a flatbed scanner into a device for capturing realistic 3D surface textures from four rotated scans.
Mainly Python. The stack also includes Python, FastAPI, CUDA.
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated moderate, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.