Make3D
Convert your image into 3d model
Compiling and Running Make3D on your own computer
Make3d has the ability to infer depth from a single 2D image. For more information on how it works see Make3D.cs.cornell.edu.
The code is available under Creative Commons Attribution-Noncommercial 3.0 unported license. To use the code, you must agree to cite the papers number 1 (TPAMI), 3 (ICCV-3dRR), and 9 (NIPS) available here, and the url: http://make3d.cs.cornell.edu
What you need
1) A computer running a linux distro (Ubuntu is recommended, but we have been able to run it everywhere including RedHat and amazon clusters). Standard build tools (g++, gcc etc)
2) Matlab
3) Mex compiler to compile C++ bindings to MatLab
See: http://www.mathworks.com/support/tech-notes/1600/1605.html
Steps
Step 1) Download and untar the make3d files as follows (I assume everything is done in the home directory)
cd ~ mkdir make3d cd make3d mkdir params mkdir scratch wget http://ai.stanford.edu/~asaxena/reconstruction3d/Make3dSingleImageStanford_version0.1.tar.gz tar -xvzf Make3dSingleImageStanford_version0.1.tar.gz cd params wget http://ai.stanford.edu/~asaxena/reconstruction3d/MakedLearnedParameters_v0.1.tar.gz tar -xvzf MakedLearnedParameters_v0.1.tar.gz cd ..
Step 2) Set the default directories for loading/storing training data and scratch data
Since we don’t want to have to pass these as arguments every time we are just going to modify the “OneShot3dEfficient.m” file to store these as defaults.
Go to the make3d/LearningCode/Debug and open the file OneShot3dEfficient.m
You will see several lines like the following (around lines 72-87)
ScratchFolder = ['/afs/cs/group/reconstruction3d/scratch/IMStorage' ];
ParaFolder = '/afs/cs/group/reconstruction3d/scratch/Para/';
change them to:
ScratchFolder = ['~/make3d/scratch' ];
ParaFolder = '~/make3d/params/';
(i.e pointing to the two folders we made earlier)
Step 3) Generate the various mex needed:
cd to ~/make3d/LearningCode
run MatLab
in matlab type:
>> InitialPath(true)
This will generate all the .mex files needed for the program to run
Now you probably want to download a test image to the
~/make3d/LearningCode directory … do that then restart matlab
run:
>> InitialPath(false) >> OneShot3dEfficient('yourimage.jpg','./')
You should see something like the following be outputted:
>> InitialPath(false) >> OneShot3dEfficient('paris.jpg','./') Starting with new optimization... Default = filename: {'_'} ParaFolder: '~/make3d/params/' OutPutFolder: './' ScratchFolder: '~/make3d/scratch' Flag: [1x1 struct] 0.027535 seconds. Loading the image... 0.2733 seconds. Creating Superpixels... 3.0314 seconds. Creating Features and multiple segmentations... 32.9655 seconds. Calculating superpixel-shape features... 33.6513 seconds. Preparation for the Inference... 39.8886 seconds. Starting Inference... : Building Matrices.... 2.1074 : In 1st level Optimization, using new solver.(1/1,1/1) Success with alfa=1192.3985 Success with alfa=1635.6242 35.722 : Writing WRL.grid 0attach 0 In WRL, vertices=2567 triangles=4691 Finished Inference at: 79.5021 seconds. Writing superpixels and image... 79.8306 seconds. Done. Total time taken = 79.832 seconds. >>
Thats all there is to it! You now have a .WRL file containing the outputted 3d model
Viewing the 3D WRL
There are many viewers to see the .WRL file. For example, you can install Cortona viewer and view in Chrome or Firefox browser.
Thanks to Salik Syed for producing this how-to instructions.