Archive for September, 2010

My 5 years old Quiksee competitor

September 27th, 2010

I’ve just heard that Google has bought Quiksee for 10 millions $. I was curious about Quiksee virtual tour technology as I’ve written myself something that seem equivalent 5 years ago. But their website doesn’t explain anything, neither their “nice” demo clip.

Like Quiksee, my virtual tour system is composed of panoramic pictures linked by videos. The first version of my virtual tour was created in 2005 (2 years before Google Street View launch).

During my internship in the beautiful city of the Puy-en-velay I’ve taken around 1800 pictures to create a virtual tour. This virtual tour is composed of 18 panoramic pictures and 44 videos links. I’ve first created a full featured version using Flash for video playback (Yajev) and then I’ve improved this version with a full HTML5 version (Html5 Virtual Tour).


Ok, I’m not gifted to find a product name (Yajev -> Yaj3v (l33t) -> yajvvv -> yet another virtual visit viewer). My first demo of Yajev was created in 2005 and was showing a small French village (5000 pictures, 51 videos and 20 panoramic pictures), but it’s not visible anymore.

->Live demo<-

Best viewed with IE9 (there is a bug with the Flash player with the other browser)


  • 360° panoramic player
  • Flash video player
  • Map
  • Hotspot links and tips displayed over panoramic picture
  • Dijkstra shortest path finder and player
  • Plugin system: compass, debug, 3d sound, lytebox, debug
  • XML based virtual tour configuration

Html5 VirtualTour

This version is 2 years old now. Unfortunately the videos were encoded with Theora, so this demo can’t run on IE9. So this demo is best viewed with Google Chrome and Firefox.

->Live demo<-

Best viewed with Google Chrome


  • 360° panoramic player with smooth animation
  • Html5 video player
  • Canvas map
  • Hotspot links and tips displayed over panoramic picture
  • XML based virtual tour configuration


There is no support for this virtual tour ! The javascript files are not obfuscated: you are free to do what you want with it. I’ve created this to improve my javascript skills, but I’m much more interested by computer vision now, so I’m sorry but I can’t provide any support for Yajev nor Html5 Virtual Tour.


PMVS2 x64 and videos tutorials

September 23rd, 2010

PMVS2 x64

I’ve finally managed to spend a couple of hours to compile a 64 bit version of PMVS2 for windows! You can download right now. I’ll hope that this version will help some persons, I’ve personally managed to create a very dense model thanks to this version and PMVS2 was using more than 4Gb of ram on a 8-cores machines.

How to compile PMVS2 x64 by yourself:
download the CMake package of CMVS (containing PMVS) created by Pierre Moulon.
download and compile gsl 1.8
download precompiled pthread x64 lib from equalizer svn
download and compile clapack 3.2.1 using CMake


As requested by some persons, I’ve updated my PhotoSynthTileDownloader: you can now resume a partial download ! It’s already available for download:

Videos tutorials

Josh Harle has done some very nice videos tutorials on how to use my PhotoSynth ToolKit and has created another toolkit for Bundler that is using my BundlerMatcher.

PhotoSynth Toolkit post on Josh Harle’s blog.

Note: In fact your synths doesn’t need to be 100% synthy. My tool (PhotoSynth2PMVS) is capable of using an uncomplete synth. And now you could use my 64bit version of PMVS2 instead.

Please go to the PhotoSynthToolkit page to get the latest version

Bundler photogrammetry package post on Josh Harle’s blog.

Please go to the SFMToolkit page to get the latest version


Introducing OpenSynther

September 8th, 2010


In my previous post I have released my PhotoSynth Tookit but the PhotoSynth tile downloader wasn’t available yet. You can now download the picture of your Synth in HD using But please respect author’s copyright ! I have included a new confirmation dialog box that warn you about the Synth status (unlisted, public) but this is not shown in the video presentation of PhotoSynthTileDownloader.


I have finally released BundlerMatcher, a feature extraction and picture matching tool built with SiftGPU. The main goal of this tool was to replace the slow matching step packaged with Bundler by a faster one using GPU without needing to modify Bundler’s code. You can download or checkout the code on my google code. Warning: this tool needs a 64bit windows OS (tested on 7 and vista) and a decent GPU. All my demos are available under MIT license but SiftGPU isn’t released under MIT so you should take a look at SiftGPU license.


I’m proud to introduce OpenSynther which is under heavy development. The first goal of this tool is the same as BundlerMatcher: provide a faster matching engine for Structure from Motion tools. To achieve high performance it is coded in C++ and using both multi-core and GPU. Furthermore OpenSynther is using Surf instead of Sift and may in the future also compute the 3d reconstruction (as PhotoSynth does).

OpenSynther current feature list:

  • Jpeg loading + Exif reading
  • multi-threaded Surf feature extraction (based on OpenSurf & ParallelSurf)
  • multi-threaded Surf feature matching (based on OpenSurf matching + Cuda GPU matching)
    • Quadratic complexity O(n²) with n number of pictures

OpenSynther TODO:

  • multi-threaded Surf feature approximate matching (based on FLANN)
    • Linear complexity (hypothetical)
  • integrate 3d reconstruction ?


These benchmarks were done on an Intel Corei7 920 (8 cores @ 2.66Ghz) + Nvidia GTX 285. The pictures size were 1600×1200 (~2M pixels), I heard that it was the limit size at which PhotoSynth extract features (it can of course use bigger pictures but feature extraction are done at a max size of 2M pixels).


  • Bundler: I had to reduce picture to 640×480, otherwise I got too many features (would be unfair).
  • PhotoSynth: I didn’t take into account the time spent in tile creation.
  • OpenSynther: in the future I may consider using GPUSurf for feature extraction.
  • BundlerMatcher: to be fair with PhotoSynth I didn’t write the ascii key file (so in fact it’s slower).


  • PhotoSynth: they did a very good job and managed to have a linear matching !
  • OpenSynther: the GPU is in fact doing the most part of the job as you can see in the table below:
App Name PhotoSynth OpenSynther BundlerMatcher Bundler
Extraction in sec 10 22 39 21 40 78 7 12 24 105 220
Matching in sec 15 31 58 31 104 322 40 170 542 75 440
% matching
done by CPU
100 100 100 22 12 13 0 0 0 100 100
% matching
done by GPU
0 0 0 78 88 87 100 100 100 0 0
Nb pictures 49 98 196 49 98 196 49 98 196 49 98 196

As you can see OpenSynther matching is in fact done by the GPU at 85%.