Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Dimensional Images
-- Project Report --
February 15th, 2019
Justin Essert Aabhas Singh
essert@wisc.edu singh36@wisc.edu
Department of Electrical and Computer Engineering Department of Engineering Physics
Elliott Janssen Saldivar Benjamin Moldenhauer
ejanssensald@wisc.edu bmoldenhauer@wisc.edu
Department of Computer Sciences Department of Engineering Physics
Introduction and Motivation
The goal of our project is to use MATLAB to construct a photogrammetry program.
This would efficiently generate a 3D digital representation of a physical object by analyzing a
sequence of 2D images. Based on the digital model, a 3D print of the object can be made.
We will approach this task via three distinct steps: Starting with a video of an object, a 3D
point cloud can be generated. The geometry of the object is then captured by meshing the
3D point cloud. And finally, we will take that mesh and convert it into a 3D printable design.
Existing commercial products can do this, but no open source option in MATLAB is available.
Our project will allow users to efficiently process objects from beginning to end in MATLAB,
while being able to see what the code is doing and customize it if needed.
An example of our project’s application is in 3D scanning and printing. In order to print
a copy of a physical object with today’s 3D printing technology, you would need to purchase
a laser scanner which start out around $200 [1] and can be as expensive as $25,000 [2]. Our
solution would allow users to bypass this expensive barrier to entry and could greatly expand
the availability of 3D printing. Additionally, this would allow for scans of larger objects, such
as an aircraft or a building, which traditionally require private consulting services [3].
Two members of our project attempted this project in Fall of 2016 through UW
Madison’s CS 534 class [4]. The project, which investigated 3D mapping a point cloud
obtained from drone footage to a 3D meshed model, was unsuccessful given the poor
meshing algorithm, and hence will be examined further through this project. The proposed
implementation of the continuation of the project is discussed further below.
Proposed Implementation
The proposed implementation is split into two phases: point cloud generation and 3D
object mesh generation. Point cloud generation involves correlating points on a sequences
of images to create a point cloud in 3D space. The mesh generation algorithm connects the
points on the cloud to generate a 3D surface. Few open source solutions exist for point cloud
generation from a set of 2D images, although two will be examined further, namely
VisualSFM [5] and 3DSOM [6]. Multiple algorithms exist for meshing from point clouds,
primarily Delaunay Triangulation, Poisson Surface Reconstruction, and Marching Cubes. The
goal of the project is to implement a meshing algorithm and gauge the effectiveness of the
algorithm in contrast to these three methods.
To generate a point cloud, a sequence of images of different viewpoints of an object
is required. Portions of each image is compared to find points in common to generate points
in a relative three dimensional space. In the previous project, Microsoft Photosynth was used
to generate and export the point cloud to be used by different meshing algorithms; however,
it was discontinued in 2017, and therefore VisualSFM and 3DSOM will be investigated.
A previous attempt was made to generate meshes from point clouds. Called WIPMesh
(Work-In-Progress mesh), this modification of Delaunay Triangulation works by first
heuristically selecting the most dense region of points as a seed and connecting the two
closest points with a line. Then, the next closest point that is adjacent to the center of the first
edge is selected and connected to each previous point, creating a seed triangle. This seed
triangle edges are then enqueued. The main loop of the algorithm consists of dequeuing
these edges and picking new coplanar points to connect to, enqueueing the new edges
created. We found that this approach creates a jagged surface with holes. Our aim is to
develop a new approach to create a smooth surface and recognizable surface. In addition,
we want to be able to export our mesh for 3D printing.
As we have investigated the Poisson and Marching Cubes mesh algorithms in our
past attempt, we will be using these algorithms as baselines for our own. We also recognize
that these two existing mesh algorithms are not perfect, and we strive to create an algorithm
that creates as more accurate and realistic representation of an object given its point cloud.
We also plan on using simple test objects, such as a metallic rectangular prism and a soda
can, since we can easily measure their dimensions and compare them with our resulting
mesh.
Timeline
Task Completion Date