Section View from 3D Laser-Scanned Models
The growth of the 3D laser-scanning and modelling industry in the last 20 years has led to the need for different strategies to analyse, create and process 3D models. The Zamani Project (www.zamaniproject.org) requires a tool for the creation of layouts/diagrams of sections, elevations, top views and ground plans and other generic views from 3D laser-scan heritage sites. The two projects shown here tackle feature line extraction and 3D slicing for the models.
Context
The building of structures is a field within engineering and architecture that has provided civilians with shelter for certain purposes for many generations. These shelters vary such as houses, mosques, pyramids, city halls and more. These structures are built from plans/blueprints usually drawn up by architects then engineers build the structure. In the past, there plans were drawn informally relative to the present or not at all, and they went directly into the building process. In the present, we require drawings or images of the structures build in the past for referencing or studying. This is where the Zamani Project using three-dimensional lasers-canning of the structure in to models that can be referenced. Laser scanning is a technique used by the Zamani Project to model three-dimensional images of heritage sites around Africa and some in Eurasia. These heritage sites include Castle of Good Hope, Wonderwerk Cave, a Great Zimbabwe complex and many more. The Zamani Project uses these laser scanned images to preserve heritage sites because the sites over time deteriorate and, historians and other professions need to study/alter these structures
Project Goals
- to produce a tool for the creation of layouts/diagrams of sections, elevations, top views and ground plans and other generic views from 3D laserscan models
- to produce a tool to extract feature lines from 3D models and 3D slicing through the models
3D Slicing
Implementation
The project requires the use of some API/libraries in Python, namely 𝑂𝑝𝑒𝑛3𝐷, numpy, matplotlib and Pillow . These can be installed using the package installer pip, but after installing the usage on the package is dependent on the Python version utilises for the project. 𝑂𝑝𝑒𝑛3𝐷 has the following support only on Python, version 3.6 to 3.8. Also the 𝑂𝑝𝑒𝑛3𝐷 package has limited usage on some operating systems. The project also requires the use of Meshlab. Meshlab works as an easy visualization tool for users as its setup is heavily focused on the efficiency in processing through its interface. Currently, there seems to be not API/libraries in python that handle the procedure similarly to Meshlab.
Architecture Diagram
A simple GUI interface is used for better usability when selecting a 3D mesh made from pysimplegui.
Sample output
Conclusions
The quality of the produced images is dependent on a hardware component, the screen resolution. When the window pops up to capture in image, there are only a limited number of pixels a desktop/laptop can capture. Higher resolution screen can assist in capturing the finer details of an image as they will have more pixels. Also as a weakness of 𝑂𝑝𝑒𝑛3𝐷, there is no direct production of a TIFF format image when capturing the screen. This may lead to additional loss of quality in the image due to it requiring further processing. The presentation of the produced images could be done much better using great image processing system for things like the scale bar, border around these images, and section and elevation lines on the floor plan/top view rather than using 𝑚𝑎𝑡𝑝𝑙𝑜𝑡𝑙𝑖𝑏 or plotting them manually. More on the conclusions can be read on the final paper.
Feature Line Extraction
Implementation
The tool was implemented in python3. Open3D library handled processes such as reading in the mesh and creation of half edges. Additional tensor calculations were done using the numpy and scipy libraries. Lastly , matlibplot was used to plot the results. The solution is a combination of 3 algorithms which is the tensor voting algorithm , salience measure and the neighbor supporting. The tensor voting algorithm generates feature vertices which are corners and sharp edges. After, the salience measure removes noisy vertices and the neighbor supporting algorithm connects the feature vertices to produce feature lines.
Output
Conclusions
The aim of the project is to produce a tool to extract feature lines from 3D models. The solution should be robust to noise and rough surfaces and should allow the user to control the feature lines produced. Tensor voting algorithm was implemented in python and tested on various models. Feature lines as shown above were generated in which the shape of the model could be perceived. After testing the algorithm it produced expected on various complex shapes. However , further work needs to be done to improve the algorithm for it to work on heritage sites. The data to test the algorithm was tested on the algorithm was acquired from the Zamani project.