Vous êtes sur la page 1sur 3

Mapping Three Dimensional Objects from a Sequence of Two 

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 
Task  Completion Date 

Project Proposal  Feb 15th 

Get a Point Cloud of an Object  Feb 24th 

Get a Mesh of an Object  Mar 10th 

Have a Design that can be 3D Printed  Mar 24th 

Final Presentation  April 22nd - May 3rd 

Final Report  May 3rd 

Final Webpage  May 6th 

[1] ​https://www.3dnatives.com/en/top-10-low-cost-3d-scanners280320174/ 
[3] ​https://www.ems-usa.com/services/3d-scanning-services/large-object-scanning/ 
[4] ​https://sites.google.com/a/wisc.edu/3dsfmreconstruction/  
[5] ​http://ccwu.me/vsfm/vsfm.pdf 
[6] ​http://www.3dsom.com