Geometry reconstruction using a projection operator

24 May 2010

About a year ago I participated in a seminar about computer graphics. From now on you can download my results, check the links below. I worked on the topic described in

Parameterization-free Projection for Geometry Reconstruction
Yaron Lipman, Daniel Cohen-Or, David Levin, Hillel Tal-Ezer
ACM Trans. Graph., Vol. 26, No. 3, Article 22, July 2007

It’s about an operator that can be used in context of the 3D scanning problem. When scanning shapes, the 3D-scanner often just produces a set of points (a point cloud). Multiple scans from different positions are required to reach all surface points of the scanned shape. They lead to multiple sets that have to be combined into the final point cloud. Such a combination could increase noise and other errors.

The operator can rework such a point cloud to improve it’s quality. As input this operator only requires the coordinates of the points, no further properties like normal vectors or other local orientation data. It is a projection operator since it projects a given point set X onto another point set P. A slightly exaggerated example of such a projection is shown in the following figure.

MNGeoRecon - Projection example. Red sphere point set is projected onto green sphere point set.

The projected set approximates the surface defined by the points in P quite well. Furthermore the projected points are nicely distributed. An example for such a distribution improvement is given in the next figure, where the Stanford Bunny from the Stanford 3D Scanning Repository is shown.

MNGeoRecon - Stanford Bunny scan model sample. Improvement of distribution.

One possible application for such an operator is down-sampling, where |X| is small compared to |P|. Similarly up-sampling can be performed by choosing |X| larger than |P|. Another application was already noted above: Preprocessing of a given point set to make it more suitable for some other method or application.

More information, including a detailed elaboration of the original paper’s proof, are in my term paper linked below. However it is only available in German for now. The other download link leads to my program MNGeoRecon which implements the presented method. The program is written in English and requires Windows, Java, Java3D.

Update: Check the FAQ for details on Java and Java3D installations.


Please note that it's not possible to submit additional comments. The comment form did not make it into this version of my site.

By: Max 14 May 2011

Hi Matthias any chance to see some code source for this. Cheers

By: Mathias 15 May 2011

Hi Max,

after I released this, I thought about adding source code. However, the code would require an update to make it ready for others.

As I am very busy right now, I don’t believe I can do this in the next time.

Regards, Mathias

By: Max 19 Jun 2011

Ehy Matthias,

thanks anyway, I’m leaving this for some summer in-depth exps if I find the time. Keep up the good work.

cheers, max

By: Jin 11 Aug 2011

Hi Matthias,

Nice job! Could you tell me how to save the preprocessed point set into files ?

Cheers, Jin

By: Mathias 12 Aug 2011

Hi Jin,

right now you cannot save any point sets with MNGeoRecon. I might add such a feature, at least a very basic output to some text file.

What format do you expect or prefer? Would a list of point coordinates


suffice, e.g. using an .obj format? I might also be able to attach estimated normal vectors to each point, but I’m not sure right now.

Regards, Mathias

By: Mathias 20 Aug 2011

Hi again,

today I uploaded a new version of my application that supports saving the X^(k) point set including normals to an .obj file (plain text).

The new version is available on my download page.

Regards, Mathias