Falko Schindler

A Computer Vision Scientist from Bonn, Germany

Panoramas over the City of Bonn

2011-08-24 by Falko Schindler, tagged as panorama

During a one-week student project we built a small Java applet showing a bird’s-eye view of Bonn. Therefore we took images using a lightweight drone (type md4-200) from microdrones GmbH as well as an SLR camera Nikon D70s. Always multiple single views were combined to one panorama image using Autopano Giga. For presenting out work online we use the applet PTViewer.

Drawing Beautiful Explicite and Implicite Functions using Matlab

2011-08-23 by Falko Schindler, tagged as matlab, visualization

This short demo shows how to generate beautiful surface plots of implicite and explicite functions using default matlab routines. By adding some lighting and computing local surface normals we can produce renderings of unexpected quality.

Read more »

Version Control for Dropbox using Meld

2011-07-26 by Falko Schindler, tagged as dropbox, meld

Recently I wrote a short BASH script called dropmeld to enable diff and merge functionality like Meld to your Dropbox. It lets you specify a time and possibly multiple files or folders, downloads the corresponding file versions and opens Meld to compare old and new.

Just download the file dropmeld.sh and adjust your email and passwort in line 4 and 5. You also have to change the dropbox root directory in line 6 if it is not /home/$USER/Dropbox. That’s it!

The unix command date processes lots of date and time formats, so you can type something like:

./dropmeld.sh "5 minutes ago" ~/Dropbox/someFile.txt

You get the “decrypted” time stamp that dropmeld is looking for and the version that was found for each file:

Searching version 20110529-232032 of someFile.txt...
Downloading version 20110529-231333 of someFile.txt...

Finally the Meld-GUI is showing the downloaded files or folders (living in the /tmp directory) next to your current Dropbox folder.

Update: Minor correction to follow redirections within the web-interface.

Building a 2.5D Sonar Scanner with LEGO Mindstorms

2011-05-29 by Falko Schindler, tagged as 3d-scanner, nxt

Finally I finished my first weekend project with the RWTH Mindstorms NXT Toolbox. The RWTH Aachen university provides a software framework to connect the professional computing environment Mathworks Matlab with the LEGO Mindstorms. The current stable version 4.03 supports Windows, Linux as well as MacOS. Best of all: It comes with a detailed and illustrated installation guide to help you to connect to your NXT brick.

I started to build a simple 2.5D scanner for small objects. The system consists of a bidirectional gear rack to move a sonar sensor above the test object.




Using the RWTH toolbox the Matlab code becomes easy to write. The movement of one motor to position i (multiple of 180 degrees motor rotation) is implemented as follows:

data = motor.ReadFromNXT();
diff = i * 180 - data.Position;
motor.TachoLimit = abs(diff);
motor.Power = 100 * sign(diff);
motor.SendToNXT();
motor.WaitFor();

Scanning a 15×15 grid of a Rubik’s cube (time lapse screencast) I obtain the following point cloud:

Due to high sensor noise connecting all points to a surface does not yield very clean results:

Blurring the point heights with a simple 3×3 box filter smoothes the surface. However, it is hardly recongnizable as a cube:

The lesson is clear: Don’t use sonar for small scale surface scanning. Use laser!

Kernel Regression and Classification in a Nutshell

2011-01-26 by Falko Schindler, tagged as kernels

In this note we will demonstrate the application of kernels for linear regression. We start exploiting the solution within a standard adjustment model in primary. We modify this approach transforming it to the dual form. Finally we introduce kernel notation and illustrate the advantages of this method for higher order regression.

Read more »

Easy Panorama Stitching with Hugin

2011-01-15 by Falko Schindler, tagged as hugin

Hugin is a very comfortable tool to create beautiful panorama images e. g. on your holiday snaps. It comes with an intuitive GUI. If you prefer working on the command line, I collected the necessary commands for you:

autopano-complete -o project.pto *.jpg
celeste_standalone -i project.pto -o project.pto
autooptimiser -also project.pto project.pto
nona -m TIFF_m -o project project.pto
enblend -o project.tif project????.tif
convert -trim project.tif project_cropped.png

See the PanoTools wiki for more information. I added the last line for an automatic cropping of the resulting image.

Here is a sample result I obtained for a bunch of images taken at the Willis Tower in Chicago, Illinois and from a roof terrace in Istanbul, Turkey:



Update: Note on focal length multiplier

  • You need to know the ratio between the size of the CCD sensor in your camera and the size of a typical 35 mm film frame
  • or modify the multiplier until HFOV fits the angle computed from focal length, number of pixels and pixel size (e. g. for my iPhone 3GS: 3.85 mm, 2048 px, 0.00175 mm/px).

Export Google SketchUp models to Sketch with sketch2sketch

2010-10-24 by Falko Schindler, tagged as sketch2sketch

sketch2sketch is a short Ruby script that I developed. It enables you to export Google SketchUp models to the 3D scene description language Sketch from Eugene Ressler. Sketch is a system for producing sketches of 2D or 3D objects and scenes. It produces TikZ code that can be directly used in TeX/LaTeX documents.

sketch2sketch combines the advantages of graphical 3D sketching tools like Blender or Google SketchUp with the benefits of scientific systems like Sketch, TikZ, LaTeXDraw or XFig. So you can use your mouse and be creative, while not being forced to live without fency LaTeX markup.

Reconstruct 3D Objects using Miscrosoft Photosynth

2010-10-14 by Falko Schindler, tagged as bundler, pmvs

Previously I wrote about Structure from Motion using Bundler. If you have troubles with these Linux command line tools, you might want to try Microsoft Photosynth. You simply select the images on your hard drive and wait the software to align all cameras, basically the same way Bundler would.
(Ok, first you need to download a piece of software and create a Windows Live ID… But as a brave Linux user you are running such Microsoft programs in a Virtual Box. So it doesn’t do too much harm.)

The best of all: The tiny tool SynthExport lets you download and extract the sparse 3D keypoint cloud as well as all camera parameters in various formats (OBJ, PLY, VRML, X3D, CSV). So you can display and post-process your data immediately in MeshLab or some other program of your choice.

What Would You Look Like in Springfield?

2010-10-09 by Falko Schindler, tagged as accv2010, bmvc2010, paper, simpsons

Ribana and I developed a combination of subspace methods and a low-dimensional linear transformation to find relations between similar manifolds from different datasets. One application was to relate real world faces with cartoon images from The Simpsons Movie Website.

Using subspace methods one can project high dimensional data like human faces onto very few dimensions like the 2D-plane in this figure.

We can relate samples within these low-dimensional spaces to match human faces (top) with cartoon images (bottom).

A closely related work will appear at Subspace 2010, a workshop on ACCV 2010, the Tenth Asian Conference on Computer Vision, Queenstown, New Zealand.

Cross-compiling with Ubuntu and MinGW

2010-08-30 by Falko Schindler, tagged as mingw

MinGW is a “Minimalist GNU compiler for Windows”. I needed it for a Windows-program I am currently working on.

After struggling with setting up my familiar Vim environment in Windows running within a Virtual Box, I realized that I can use a Linux system for the development as well. And best of all, the setup is done in the blink of an eye!

After installing MinGW with sudo aptitude install mingw32 you just need to adjust your Makefile a little, e. g. like:

CXX = i586-mingw32msvc-g++
CXXFLAGS = -Wall -O3
all : main.exe
main.exe : main.o
    $(CXX) $(LDFLAGS) -o main.exe main.o
clean :
    rm *.o *.exe

Now the make command builds the win32 executable. You can easily run it with Wine: wine main.exe.