This is the first release of GPU Scanalyze. Scanalyze is an application for registering meshes using ICP and has been developed at Stanford University under the supervision of Prof. Marc Levoy ( Stanford's Scanalyze ). The bottleneck of ICP is finding the pairs that are close with each other between the two meshes.
I am using for the time being (and I think will be using) Lawrence Cayton RBC in GPU for finding these pairs.
For the time being it only registers ply files.
Download it in your CUDA enabled Mac and use it either as a hobby or professionally for small to very large datasets. The advice is not to set the sample rate above 3-4 million of points.
Use : Unzip the attached application and double click on the Michelangelo head icon. Simple as that.
Important note : In order to run the ICP process of GPUScanalyze you should have sufficient GPU memory. For this reason I have put at the lower right end two meters of the form CPU:xxx / GPU:xxx
The first meter indicates how much memory GPUScanalyze occupies on the CPU side (Host side) and the GPU meter tells you how much remaining GPU memory you have for CUDA purposes. If the GPU meter is low and try ICP then a pop up will appear that you dont have enough memory.
Here is a video of how to register meshes :
GPUScanalyze Video Demo
The above registration is just a demo, it needed more culling in order to be precise.
Also since Lawrence RBC is extremely fast even on a million point data set sampling, use the maximum in iterations (20).
GPU Scanalyze will continue to evolve to include plugins like surface reconstruction etc and when it is mature it will go into the Apple Mac Store. So far so good. I have fixed memory leaks and bad memory allocations, meaning that you will not be screaming at your screen if Scanalyze throws a memory exception in the middle of a tedious session. Lawrence RBC is memory leak proof, meaning that your GPU memory wont be dried after successive registrations.
Just to show an example I have reconstructed Stanford's dragon. You can find all the 3D data in Stanford's archives at : Stanford's 3D Scanning Repository
First comes the registration step where the scans provided by Stanford are aligned using GPUScanalyze :
This session involved the registration of 50+ range views and I did not find any trouble, thus the process is error proof.
Here are the data (ply file) of the aligned data set : Dragon aligned
Next I have used Poisson surface reconstruction on the aligned data set and got this very smooth result :
Here are the data (ply file) of the reconstructed 3D object : Dragon reconstructed
Also here is a nice setting to run ScanalyzeGPU. A dual monitor. On one screen the main window and on the other the tools needed for ICP :
Note : If anybody wants to participate in the development of this Software send me a PM or e-mail. When this application is ready it will be uploaded in the Mac Store for free and I will include all the names of the people who have participated. You should know CUDA + C++ + 3D Computer Graphics (or willing to learn on your own 3D computer Graphics) in order to participate. The next application that I want to embed in Scanalyze is GPU-based Poisson surface reconstruction : Highly Parallel Surface Reconstruction. Mail me if you want to participate in coding this paper.