Photogrammetry testing 7: SMVS (+MVE)

Here’s the original post, and links to all posts

I have previously outlined my goal of testing multiple photogrammetry solutions on a single dataset, and reporting times and results.

I’m using a dataset based on photographs of this Styracosaurus model (I’ve had it since I was quite young):


The dataset has 53 photos in total, and is available from this link. [This will be moved to figshare in due course].

The model is about 12 cm in total length, has texture for the scales, and a reflective brass nameplate on the base. The model was situated on a glass desk, and there may be reflection issues from that.

Today’s test is with SMVS (and MVE).  I had some exciting preliminary results as I finished the original post, so I have high hopes here!

I’ll be running all of this through bash for windows.

Installation is pretty straight forward:  Just download SVMS and MVS from Git, and compile:

git clone
git clone
make -C mve
make -C smvs


Then we follow the ‘how to use’ instructions on the SMVS github page.

In this case, my home directory looks like the following:

   |   |__apps
   |      |__bundle2pset
   |      |__ ‘…’
   |   |__app


So as you might expect, ‘styrac_images’ contains all the jpgs.  Both mve and smvs contain a folder within; app(s), which contains folders for each executable (just one for smvs).

What that means is that when I execute commands from within ‘styrac_images’, they look like this:

Step 1: makescene

Here’s the command to set up the scene, based on the available images (I create a new scene folder in my home directory:

./mve/apps/makescene/makescene -i styrac_images/ styrac_scene/

Time taken: 6.4 seconds

This creates a folder called ‘styrac_scene’ that contains another folder, ‘views,’ which contains an mve file for each image.


Step 2: Sparse reconstruction

./mve/apps/sfmrecon/sfmrecon styrac_scene/

This process detects features in each view, and saves the .mve view.

Time taken: 190 seconds

Step 3: SMVS reconstruction

Smvsrecon replaces dmrecon and scene2pset used by MVE.

./smvs/app/smvsrecon styrac_scene/


This is the stage that really takes the computer – you can see all my 8 threads getting maxed out, and 9.3Gb of RAM being used:


Time taken: 6223.4 seconds (103 minutes)


Step 3: Mesh Generation


./mve/apps/fssrecon/fssrecon styrac_scene/smvs-B.ply styrac_scene/smvs-surface.ply


Time taken: 601 seconds


Step 4: Mesh cleaning


./mve/apps/meshclean/meshclean -p10 styrac_scene/smvs-surface.ply styrac_scene/smvs-clean.ply


Time taken: 14 seconds

Here’s the final model in images:

And on Sketchfab (I removed the small floating components and the fluff underneath in meshlab for the purposes of making the file small enough to upload to sketchfab, but otherwise did not make any major edits):


Total time: 7034.8 seconds

Given my high hopes at the start, I’m a little disappointed with the results actually.  It took quite a while to run, and the end result has more holes than I’d like, an inaccurately rough surface, and the nasal horn has more or less failed to be captured correctly.

That being said, SMVS did manage to capture areas that have been problematic previously – particularly the area around the left hind limb.

I’ve had good results with SMVS before, and so, as is likely the case for everything I’m testing, better results can likely be achieved by delving into the settings, or even just with different datasets.

SMVS (with MVE) is easy to use, but in this case took quite a long time (~2 hrs) and didn’t come up with the goods.  Perhaps in the future I’ll revisit the settings.


16 thoughts on “Photogrammetry testing 7: SMVS (+MVE)

Add yours

  1. I followed your instructions to run “smvsrecon” and the program stopped by stating
    “illegal instruction”
    What should I do to debug?

    jc@jc-T5400:~/git$ ./smvs/app/smvsrecon styrac_scene/
    Shading-aware Multi-view Stereo (built on Aug 12 2017, 17:33:24)

    Initializing scene with 53 views…
    Initialized 53 views (max ID is 52), took 4ms.
    Reading Photosynther file (53 cameras, 14913 features)…
    Automatic input scale: 2
    Input embedding: undist-L2
    Output embedding: smvs-B2
    Running view selection for 53 views… done, took 8.108s.
    Starting 1/53 ID: 0 Neighbors: 29 1 30 27 47 28
    Starting 2/53 ID: 6 Neighbors: 7 10 11 14 13 12
    Starting 3/53 ID: 1 Neighbors: 29 30 27 0 26 28
    Starting 4/53 ID: 4 Neighbors: 3 5 2 6 32 34
    Starting 5/53 ID: 5 Neighbors: 3 4 6 2 34 8
    Starting 6/53 ID: 2 Neighbors: 3 30 32 1 31 29
    Starting 7/53 ID: 7 Neighbors: 11 10 13 14 12 15
    Starting 8/53 ID: 3 Neighbors: 2 1 32 30 5 4
    Illegal instruction

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Website Built with

Up ↑

%d bloggers like this: