Experiment with a RICOH THETA

March 17th, 2014 by Henri No comments »

I’ve borrowed a RICOH THETA camera from a friend and I wasn’t expecting to have so much fun :) ! The image quality is not so good (noisy, even with latest firmware) but being able to capture a panorama in one click is really powerful and let you create new visual experiments ;) .

Here is my little experiment with a little planet video effect:

I’m thinking of open-sourcing my tools to allow other people to generate such videos. I may also try to release directly an interactive webgl viewer. Stay tuned!

BTW I’ve updated my photosynth chrome extension (it was broken due to a website update).


Photosynth website on steroids :)

February 3rd, 2014 by Henri 1 comment »

Bad idea: hacking during the new year holiday and during the super bowl go Seahawks! Result? A very hacky google chrome extension which is adding several alpha/beta quality features to the photosynth.net website. This is my gift for 2014, enjoy! :)

You can get the extension here. Make sure you are logged in on photosynth.net (and have joined the beta) while using the extension as some photosynth2 feature are still only available to beta users (hopefully this limitation will be removed soon).

Feature added by the extension:

The extension is changing the top menu to:

  • Search: previous Explore page + new links to fullscreen grid based ps2 explore page.
  • Explore: new fullscreen map based explore page.
  • My Synths: previous My Photosynths page + new tab (my map, my ps2, my info).
  • Preview: link to the new preview website + animated preview on the create page.


Animated preview when you hover a thumbnail of a PS2 + links to new explore page.

Clicking on “Explore most recent PS2″ or “Explore most viewed PS2″ will display a page like this:

The bottom row contains the latest synths of the current user (the one of the current synth being played). You can hover to see a preview and click to load a synth. Experimental feature: it’s using a new version of the viewer capable of quickly unload/load synths (don’t click too fast :-) ).


New fullscreen page showing synths (ps1, panorama and ps2) on a map. Sadly there is no proper ranking here so you need to zoom in a lot before being able to see synths. Also there is a known bug in google chrome which is preventing from seeing silverlight content opened in new tab.

My Synths:

The extension add 3 new tabs: My map, My PS2, My info

My map

This page is really complicated, adding a lot of feature… I will propably have another post explaining how to use it.

Basically you can map (=geotag) your own synths (ps1, panorama, ps2). You need to be logged in and click on ‘show untagged synths’ then you can search for a place on the map, move the orange pushpin or right click to reassign it location. Then once the orange pushpin is at the place where you’ve captured your synth, you can click on ‘assign pushpin location’ to assign the location to the corresponding synth. To select synths, you can press and hold ‘ctrl’ and then draw a rectangle, from that selection you can either remove their map position or assign them a text tag. Clicking on ‘movable pushpins’ will allow you to directly move your synth pushpins on the map. You can click on on ‘Find neighbors’ to find synths arround your synth (orange synth = community, green = yours). You can also play with the timeline to only display synths captured in the corresponding time interval. You can also change the url and switch w=0 to w=1 to enable the wikipedia option. This option will search for the closest wikipedia of your synth. Please consider donating to WikiLocation if you are using the w=1 option.

My PS2

This is a new page allowing you to quickly preview all your ps2 synths. They are grouped by topology (spin, panorama, wall, walk) and then sorted by captured date.

My info

Sadly the captured date information is not properly filled by the system (it’s using the upload date). You need to click on ‘fix capturedDate’ to set the captured date of all your ps2 (it might take a while: wait for the ‘done’ alert box).

Preview – Create

The extension is adding an animated preview which will help you to choose the proper topology:


This extension was created by me only and thus it doesn’t mean that this is representative of upcoming photosynth feature.

FYI this is not my first extension for the photosynth website, I’ve already created one which is adding a webgl fallback viewer if you don’t have silverlight for photosynth1 content.

Have fun exploring all feature introduced in this chrome extension!


Photosynth 2 launch!

January 25th, 2014 by Henri 3 comments »

Happy new year 2014!

This is a short post in case you’ve missed the launch of Photosynth2. I’m glad to be able to break the silence and to show some nice stuff again :) . I’ve developed the WebGL viewer used to display ps2 synths and I’ve been busy capturing tons of ps2′s (I still have a lot of datasets waiting to be uploaded :) ).

If you are using a modern browser you should be able to see this ps2 with the WebGL viewer:

Otherwise we are also generating an mp4 fallback:

In case you are wondering what’s new compared to photosynth1, I’ve created this video showing the benefit of a ‘good’ geometry (ps2) for image-based rendering instead of using only a dominant plane (ps1):

Photosynth 1 is allowing unstructured capture and thus the navigation is very difficult. In Photosynth 2 we are constraining the user to capture images along a single path (1D manifold) and thus the navigation is very simple (and touch friendly :-) ). Photosynth 2 introduces 4 different topology (camera motions):





BTW if you type: “The answer to life, the universe and everything”, on the view page of a synth a magic menu will appear with lot of options so that you can tweak your viewer. You will need to refresh the view page to apply most options and the changes are permanent (store in localStorage).

‘m’ and ‘c’ are also two other shorcuts that you should try…

I should have another post very soon. Stay tuned!


Moving on… again :-)

July 11th, 2012 by Henri 8 comments »

As you may have figured out I’m not working for acute3D anymore. I really enjoyed working there and I want to thanks them for the time we’ve spent together. I’ve learned a lot thanks to them and it was really great to deal with 3d data at a city scale!

BTW you should really checkout their online demos: streaming of 3d cities over internet!

But I’ve received an offer from Microsoft that I coudn’t refuse :-) . I’ll be working on super exciting stuff closely related to what I like.

Thus sadly I don’t think that I’ll have time left for this blog anymore. But I’ll try to post the source code of my modified version of Bundler.


New bundler version

May 26th, 2012 by Henri 12 comments »

I’ve compiled a new version of Bundler with 2 interesting new options:

--ba sba

BTW those options should be passed as command arguments to bundler.exe directly (and not been added to the options.txt file).

The parallel_epipolar option allows to estimate the fundamental matrices (ransac + lm) in parallel. This problem is embarrassingly parallel but due to some global variables used in the callback passed to lmfit it wasn’t that easy to implement: I’ve used a functor to hide the global variables used by the callback but sadly lmfit doesn’t have a void* userData parameter (only a pointer to the callback). Thus I’ve modified lmfit and add this missing parameter that allow me to pass a pointer to my functor. Furthermore I had to compile almost everything in C++ instead of C to use my functor inside lmfit. Thus I had to fix a lot of malloc calls that weren’t compiling in C++ due to missing cast. To keep a “backward behavior compatibility” this option is disabled by default.

The ba option allows to change the bundle adjustment “engine” used. Here is the list of available “engine”:

  • sba (default)
  • none (for debug only)
  • pba_cpu_double
  • pba_cpu_float
  • pba_gpu_float

Pba stand for Parallel Bundle Adjustment: I’ve integrated mcba from Changchang Wu.

So if you have an Nvidia GPU card and installed the Cuda runtime you can add those options:

bundler.exe list_focal_absolute.txt --ba pba_gpu_float --parallel_epipolar
--options_file options.txt //on the same line

Timing on a 245 pictures dataset:

Bundler BA Time Nb pictures registered
SBA 2h18min 233
PBA CPU double 23min 230
PBA CPU float 9min 230
PBA GPU float 6min 230
none (for debug) 2min 189 (bad reconstruction)

You can download this new version of bundler: bundler-multiBA-parallelEpipolar-x64.zip
Update: the source code is available on the MCBA branch of my Bundler fork.