29 February 2016

Progress update #2


Got some time to put calibration working in a simple way (I think) and with good results.

To perform calibration we capture images from one or more chessboards.
This can be done using live feed from cameras or from a video file or image sequence.

Results of the calibration progress are presented immediately to the user.

We can evaluate the captures and decide if we want to keep or remove them from the calibration list.
We can have some chessboards incorrectly identified and they must be suppressed from the calibration, but this has to be done manually.

Sources are calibrated separately and the stereo is calibrated in the end.

One of the new features, is the possibility to use more than one chessboard in each image.
The limitation here, is to use same size chessboards with the same square size.

With a good pc everything works in a fast and smooth way. I'm concerned with slower ones, it will work, but takes more time.

Just to post some images on the progress.

Bellow one image of the mono calibration.
We can now calibrate devices individually and in stereo.

The image shows in the left the camera capture with an overlay of the captured chessboards.
On the right the captured chessboards list (we can remove the bad ones if we wish).
On the middle the undistorted result.

I also added a way to capture chessboards from the screen.
Connect the pc to a TV or projector to get bigger calibration patterns and calibrate the cameras without the need to print the chessboards.
This has the advantage of using an already planar surface.

I also got two 360º lenses to test omnidirectional reconstruction.
The calibration seems to work well already.

Some news soon...

Just to add a spoiler...

28 January 2016

What's the progress in PVS2?

Got some requests asking for news, so here they are:

I moved a bit from the path I was working on and decided to make my first WPF interface, better looking, more modern and I get the chance to learn something new.

So now we have a WPF interface built in C# around a C++ DLL.
I used this chance to create my own WPF borderless windows (FlyPT Window) looking for a design more to my liking and hopefully more professional.

I have also created a new library for video capture (FlyPT Video Capture), based Microsoft on Media Foundation, with the intention to better understand the system and solve some problems with the libraries I was using.
I'm now prepared to capture from cameras/boards with more than one stream, since I can select the stream for capture.
I can also control all the camera parameters without errors (one of the problems I had).

I'm right now dedicating more time to calibration, trying to achieve a better, faster and more reliable result.
To test my new calibration system I made a small test rig.
It's a cardboard box with multiple chequerboards, all of them with different sizes so they can be distinguished.
The idea behind this method, is to calibrate the cameras with one shot:

To test the calibration I also built a new camera rig:

Now with 3 possible ranges. One way to enhance camera dislocation calculation and better range on reconstruction:

Beside all this I'm working on the depth maps, testing some Cuda accelerated solutions.

That's it for now..