GithubHelp home page GithubHelp logo

nmellado / super4pcs Goto Github PK

View Code? Open in Web Editor NEW
450.0 27.0 214.0 14.31 MB

Efficient Global Point-cloud registration

Home Page: http://nmellado.github.io/Super4PCS/

License: Other

CMake 11.02% Shell 1.13% C++ 86.04% Batchfile 1.09% C 0.71%
3d-registration point-cloud computer-graphics c-plus-plus super4pcs ransac scan-pairs

super4pcs's Introduction


This library is not maintained anymore

It is replaced by the fork OpenGR: https://github.com/STORM-IRIT/OpenGR

Except critical bug fix, no changes will be added to this repo. Please request support on OpenGR issue tracker.


Super4PCS

An implementation of the Super 4-points Congruent Sets (Super 4PCS) algorithm presented in:

Super 4PCS: Fast Global Pointcloud Registration via Smart Indexing Nicolas Mellado, Dror Aiger, Niloy J. Mitra Symposium on Geometry Processing 2014.

Authors: Nicolas Mellado, Dror Aiger

Linux - MacOS Windows
stsimg-linux stsimg-windw

Documentation: http://nmellado.github.io/Super4PCS/

Paper project page: http://geometry.cs.ucl.ac.uk/projects/2014/super4PCS

News

  • 28th September 2017: Super4PCS v1.1.3 is out, providing a new Meshlab plugin, PCL wrapper, doxygen-generated documentation (online here) and several bug fixes.
  • 24th August 2017: Super4PCS v1.1.2 introduces Super4PCS CMake package, better testing (including on Windows plateform), cleaner code structure (moved demos away from library code).
  • 10th August 2017: Super4PCS v1.1.1 introduces minor fixes from previous release.
  • 10th August 2017: Super4PCS v1.1.0 is available, improving performances, fixing use as C++ library, and generalizing CI use.
  • 17th July 2017: CI integration (Windows, MacOS and Linux) enabled. Currently, only compilation is tested, but performances monitoring will be added in upcoming release.
  • 5th July 2017: Super4PCS got the SGP Software Award 2017 !
  • 19th June 2017: Super4PCS v1.0.0-alpha is available.
  • 18th May 2016: Super4PCS v0.2.1-alpha is available, fixing a problematic crash introduced in previous release.
  • 3rd May 2016: Super4PCS v0.2-alpha is out !
  • 23th March 2016: Super4PCS can now be compiled with Visual Studio 2015! Checkout the Wiki for more details.

Paper Abstract

Data acquisition in large-scale scenes regularly involves accumulating information across multiple scans. A common approach is to locally align scan pairs using Iterative Closest Point (ICP) algorithm (or its variants), but requires static scenes and small motion between scan pairs. This prevents accumulating data across multiple scan sessions and/or different acquisition modalities (e.g., stereo, depth scans). Alternatively, one can use a global registration algorithm allowing scans to be in arbitrary initial poses. The state-of-the-art global registration algorithm, 4PCS, however has a quadratic time complexity in the number of data points. This vastly limits its applicability to acquisition of large environments. We present Super 4PCS for global pointcloud registration that is optimal, i.e., runs in linear time (in the number of data points) and is also output sensitive in the complexity of the alignment problem based on the (unknown) overlap across scan pairs. Technically, we map the algorithm as an ‘instance problem’ and solve it efficiently using a smart indexing data organization. The algorithm is simple, memory-efficient, and fast. We demonstrate that Super 4PCS results in significant speedup over alternative approaches and allows unstructured efficient acquisition of scenes at scales previously not possible. Complete source code and datasets are available for research use at http://geometry.cs.ucl.ac.uk/projects/2014/super4PCS/.

super4pcs's People

Contributors

nmellado avatar xinkang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

super4pcs's Issues

Encoding

As spotted in #7, compilation errors may occur on Windows platform, due to encoding issues.

This issue will be investigated if more people are impacted.

Running in windows 7

Hello nmellado!

I would like to run super4pcs as part of my research. I have to work on windows 7 due to IT issues.
What is the list of dependencies required and have you tried it before? is it doable ?
Where would you recommend to start if my aim is to input two Point Clouds and just receive the transformation between them?

Chen

Setting LCP delta to <= 0.01 causes crash

Hi

Thanks for the nice library.

When you pass an LCP delta of <= 0.01 the program will crash. This is because the gridDepth in IndexedNormalHealSet (normalHealSet.h) will be very high and Super4PCS::Utils::UnrollIndexLoop will return a very large number (larger than what can fit into 32 bits). This causes several overflow errors and spurious crashes later on.

I think the library should either bail early on if the grid depth exceeds what can be stored with a 32-bit index or just use long / 64-bit indices. 64-bit indices might not work though as it might end up allocating very large amounts of memory.

Problem with output files

Hi,
I don't know if I do something wrong but i always don't have any differences between the output files and one of the 2 input file.
For example, when i try ./run-example.sh , I have the following :

adrien@adrien-VirtualBox:~/Documents/Super4PCS-1.0.0$ ./run-example.sh 
Use Super4PCS
norm_max_dist: 0.010000
Work with 200 points
Initial LCP: 0.010000
Score: 0.01est: 0.010000                  
(Homogeneous) Transformation from hippo2.obj to hippo1.obj:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Exporting Matrix to mat_super4pcs_fast.txt...DONE
Exporting Registered geometry to super4pcs_fast.obj...DONE
real 1.07
user 0.73
sys 0.13
Use old 4PCS
norm_max_dist: 0.010000
Initial LCP: 0.010000
Score: 0.535st: 0.535000                  
(Homogeneous) Transformation from hippo2.obj to hippo1.obj:
  0.780739 -0.0319342   -0.62404 -0.0981111
-0.0509506   0.992114  -0.114514 -0.0217299
  0.622776   0.121201   0.772955 -0.0271737
         0          0          0          1
Exporting Matrix to mat_4pcs_fast.txt...DONE
Exporting Registered geometry to 4pcs_fast.obj...DONE
real 19.02
user 18.14
sys 0.24

and when I open Hippo2.obj and 4pcs_fast.obj , i have exactly the same clouds. I'm on a Kubuntu virtualbox so i tried to change computer. I used another one with ubuntu and i tried your demo packages with bird and office and stuffs, and I have the same problem.
I simply downloaded the latest version, compiled it and ran it, nothing else. Maybe I'm stupid i don't know but...
Thanks for helping me

Runtime error on Windows using own meshes

Hi Nicolas,

Apologies for originally posting this in the wrong place, I hope this is all in order.

My issue is as follows:
I am using Windows 7, and have downloaded your source code and can compile it in Visual Studio 2015. I can run the hippo registration example from the runme batch file, and it works with no issues.

However, when attempting to register some of my own meshes (in .obj format), it throws a runtime error.

I am attempting to register different sized meshes, some ~75k vertices, some only ~500. The parameters I am using are as follows:
Overlap: 0.5
Delta: 1.0
Max time: 1000
Num Points: 400
Threshold: 1.0
Max Color: 1e9
All others left at default

I have also tried to use some different parameter values but always encounter the same error.

The error I get is as follows:
At ExtractPairs->process->split->erase I get a "vector erase iterator outside range" exception.

super4pcs_error

I previously sent you 2 of the meshes I am using by email, but I can happily send you the other 2 if needed.

Many thanks for your time,
Laurence

Problem reading PLY files with only positions and normals (on Windows 10)

Hello:

I'm trying to use your project for reading two very simple PLY files that have only the info. of the positions and normals, but the code fails when trying to read these files.
The specific error is in the line No. 338 of the file io_ply.h:
if (feof (in)){ cerr << "(PLY) incomplete file" << endl; return false; }

I believe that these lines of code should just not be there: if the PLY file does not contain any kind of facets information, the code will fail, or perhaps I am missing something?.

The PLY files that I'm using are in ASCII format: I am attaching here an example of two of the files that I am trying to read.
PlyExamples.zip

If you could please let me know if these files have something missing or wrong for me to use them with your code, I will much appreciate it...

On the other hand, I have doubts about the parameters for PLY files like the ones that I am trying to use, which have very few information, (they have very few points).
In particular, in this case, the "delta" parameter: I think I could try a very small value, (0.01 or less)?.
Also, for the "number of sampled points", if I want to use many of the points in the PLY files, can I set this parameter to a big value, (for example: 400 points)? ... However, if the PLY files contain less than this number of points, will this cause a problem for the algorithm?: I mean, if the actual number of points is less than this parameter, the algorithm could have some problem?

Thank you so, so much in advance for your help,

Diego.

Add parameter auto-tuning

Some parameters, like delta, can be set automatically in many cases, using very simple heuristics.

Windows version compile failed

Hi,
I have just download the latest version, which supports Windows platforms( https://github.com/nmellado/Super4PCS/wiki/Compilation ). My computer system is windows7, and I have installed the OpenCV3.1.0 and Eigen3.2.8.
But after I open Super4PCS.sln, and compile it. I got 20 errors. Just as following:
image

And the output window gave the message:
2>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1610,5): warning : The referenced project 'F:/Nicolas/Pro/code/git/Super4PCS/3rdparty/cfitsio/cfitsio.build/ZERO_CHECK.vcxproj' does not exist.
1> ANN.cpp
2> Building Custom Rule** F:/Nicolas/Pro/code/git/Super4PCS/3rdparty/cfitsio/CMakeLists.txt**
2> 系统找不到指定的路径( System cannot find the path( file))。
2>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: “cmd.exe”已退出,代码为 3( exit, code is 3)。

  The front bold text is the issue, that it has the absolute path which seems is your (Nicolas) computer's path. The italic text is translation from Chinese.

 In my opinion, you can just provide the source code and give the step by step or the main steps of how to generate the Surper4PCS.sln by cmake. I believe it will be helpful for the windows user.
 Thanks a lot!

Could not align well

I could not get proper alignment with the attached clouds.
I have tried so many parameters but no luck.
Can you pls advice some parameter or way of thinking to align at least these two.

My current parameters are
overlap: 0.6
delta: 5.0
n_points: 150
max_time_seconds: 30

CloudsObj.zip

Create tree only found 8 points

I am trying to register one point cloud obtained from data to another obtained from CAD model. The data and the model point cloud has 41373 and 7000 points, respectively. I used PLY ASCII format and double checked the inputs. However, I obtained the following strange error--the create tree only took 8 pints. Did I missed something?

./Super4PCS -i ptsMarker.ply ptsData.ply
Use Super4PCS
create tree
create tree ... DONE (8 points)
Work with 8 points
norm_max_dist: 5.000000
Initial LCP: 1.000000
[Error]: [IndexedNormalHealSet] Invalid configuration (depth=-2, size=0)
Aborting with code -2 ...

FYI, the two point clouds are in their own coordinate systems. Would this a problem? If so, what do you suggest to do?

Thanks,
Xin

Time check

Thank you for this great work.

On some point clouds the algorithm takes more time to run than the maximum amount of seconds allowed. I see that the time check is done only inside Perform_N_steps, but is there any guarantee that TryOneBase() runs within the allowed time? Shouldn't this check be done also within that function and all the others that are called from it?

Linking error on Mac

Hi Dr. Mellado,

This is a very interesting method and I want to give it a try. I followed the compilation instruction to build from source on my macOS Sierra (10.12.1). The cfitsio (3.390) was installed via Homebrew and the ANN was build from source with no problems. However, I got the following linking error. Could you please help me on this? Thanks!

cmake -DCMAKE_BUILD_TYPE=Release -DANN_DIR=~/lib/ann_1.1.2/ ../Super4PCS/
-- The C compiler identification is AppleClang 8.0.0.8000042
-- The CXX compiler identification is AppleClang 8.0.0.8000042
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test COMPILER_SUPPORTS_CXX11
-- Performing Test COMPILER_SUPPORTS_CXX11 - Success
-- Performing Test COMPILER_SUPPORTS_CXX0X
-- Performing Test COMPILER_SUPPORTS_CXX0X - Success
-- Found CFITSIO: /usr/local/lib/libcfitsio.dylib  
-- Found Eigen3: /usr/local/include/eigen3 (Required is at least version "2.91.0") 
-- Configuring done
CMake Warning (dev):
  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake
  --help-policy CMP0042" for policy details.  Use the cmake_policy command to
  set the policy and suppress this warning.

  MACOSX_RPATH is not specified for the following targets:

   chealpix

This warning is for project developers.  Use -Wno-dev to suppress it.

-- Generating done
-- Build files have been written to: /Users/ben/Work/PoseEst/RPM/Super4PCS_build
Bens-MacBook-Pro:Super4PCS_build ben$ make
Scanning dependencies of target super4pcs_accel
[  9%] Building CXX object super4pcs/accelerators/CMakeFiles/super4pcs_accel.dir/normalHealSet.cpp.o
[ 18%] Linking CXX static library libsuper4pcs_accel.a
[ 18%] Built target super4pcs_accel
Scanning dependencies of target super4pcs_io
[ 27%] Building CXX object super4pcs/io/CMakeFiles/super4pcs_io.dir/io.cc.o
[ 36%] Linking CXX static library libsuper4pcs_io.a
[ 36%] Built target super4pcs_io
Scanning dependencies of target super4pcs_algo
[ 45%] Building CXX object CMakeFiles/super4pcs_algo.dir/super4pcs/4pcs.cc.o
[ 54%] Building CXX object CMakeFiles/super4pcs_algo.dir/super4pcs/super4pcs.cc.o
[ 63%] Linking CXX static library libsuper4pcs_algo.a
[ 63%] Built target super4pcs_algo
Scanning dependencies of target chealpix
[ 72%] Building C object 3rdparty/chealpix/CMakeFiles/chealpix.dir/src/chealpix.c.o
[ 81%] Linking C shared library libchealpix.dylib
[ 81%] Built target chealpix
Scanning dependencies of target Super4PCS
[ 90%] Building CXX object CMakeFiles/Super4PCS.dir/super4pcs/super4pcs_test.cc.o
[100%] Linking CXX executable Super4PCS
ld: can't open output file for writing: Super4PCS, errno=21 for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [Super4PCS] Error 1
make[1]: *** [CMakeFiles/Super4PCS.dir/all] Error 2
make: *** [all] Error 2

incorrect output of ply file

hi, @nmellado
as you adviced, I open a new issue.
when ply format is used, the output ply file is not correct. Please check the attachments.

@ Super4pcs -i hippo1.ply hippo2.ply -o 0.7 -d 0.01 -t 1000 -n 400 -r super4pcs.ply
@ PAUSE

clipboard01

hippos ply.zip

Add other metrics

In the current implementation, only the LCP is used to check the alignment quality.
Depending on the application case, Super4PCS could be improved by proposing other metrics to rank the output configurations.

Part-in -whole matching

Thanks for your work on this library!
I got good results matching a model to individual objects extracted from the point cloud, however so far had no luck fitting the model to a more cluttered scene. Since the relevant part of the wiki is not available yet, could you please give a brief guidelines to make part-in-whole matching work?

Different scale

I have a point cloud done with photogrammetry or laser scan of a building or an objet and another done with a structured light with a different scsle. Does it works to find the transformation ( translation rotation and scale ) with your lib ?
Best regards

Runtime error on windows

Hi Nicolas!

I've encountered a "vector subscript out of range" exception while running super4pcs on windows.It occured when i tried to run ComputeTransformation method.
I attached screen shots with specific break points indicating crash points (it happend when called addElement (Error entry 1) and inside it (Error entry 2):
if (_grid[pId] == NULL) _grid[pId] = new ChealMap(_ngLength);

caused the carsh.

I am working on windwos 10 , VS15 opencv 3.1 and EIGEN from last December (downloaded as latest version).

My parameters (and .obj files):

std::string input1 = "hippo1.obj";
std::string input2 = "hippo2.obj";
std::string output = "output.obj";
double delta = 5.0;
double overlap = 0.2;
double thr = 1.0;
double max_color = 150;
int n_points = 200;
double norm_diff = 90.0;
int max_time_seconds = 10;
bool use_super4pcs = true;

Please advise me what is the problem.

Thanks!

ChenTsur

error_entry_1
error_entry_2

Base selection problem

hello!

  1. In RANSAC,the iteration times seriously effects the results accuracy. I set overlap parameter as 0.5 and 0.7,and I get same results. After about 15 times,the best base is obtained. I wonder how the overlap parameter effects the results?
  2. How to set the random seed to get better base? different seed may lead to different base.
  3. In terms of my data case, the two point cloud need to align in real time. Is this Super4PCS a suitable solution?

error while loading shared libraries: libopencv_imgcodecs3.so.3.1

/install/scripts$ ./run-example.sh

  ------------------------------
Running Super4PCS
../bin/Super4PCS: error while loading shared libraries: libopencv_imgcodecs3.so.3.1: cannot open shared object file: No such file or directory
Command exited with non-zero status 127
real 0.00
user 0.00
sys 0.00
   ------------------------------

too sensitive?

hi, @nmellado
I subsampled the hippo ply files, ran two test and got following results. The only differece is the number of kept points, from 90 to 89, but the results changed a lot.
By the way, when ply format is used, the output ply file is not correct.
I also sent email to you yesterday, please check it. Thank you.

Super4pcs -i h11.ply h22.ply -o 0.7 -d 0.04 -t 1000 -n 90
Super4pcs -i h11.ply h22.ply -o 0.7 -d 0.04 -t 1000 -n 89
@ PAUSE

clipboard01
subsampled hippos.zip

re problem

Hi, thanks your SUPER4PCS packages . It's amazing. I downloaded the newest package from https://github.com/nmellado/Super4PCS;
and sucessfully compiled under the environment WINDOWS 8.1+ Visual Studio 2015+Opencv 3.1+Eigen3.2.8 !
I clicked the runme.bat at <.\Super4PCS-master> and then checked the result. However, the result super4pcs.obj file seems not sensible. The two input .obj file can be viewed in an 3D review, while for the result ,the we see nothing on it.
one of the input file.
image
the result super4pcs.obj file.
image

I think the resolution might mainly related to the below 3 kinds of warnings.Did I miss some important steps so I got the incorrect results?
image

undefined reference to `cv::imread(std::string const&, int)'

Thanks for the great work. I tried to compile Super4PCS on Ubuntu 16.04 with system's OpenCV 2.4.9 installation. Although OpenCV link is optional but it would be great if this works. Below is output:

$ cmake -DCMAKE_BUILD_TYPE=Release ..
-- The CXX compiler identification is GNU 4.9.3
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Eigen3 root path: /home/chuong/workspace/Super4PCS/3rdparty/Eigen
-- The C compiler identification is GNU 4.9.3
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- [Deps] Use OpenCV for image loading
-- Configuring done
-- Generating done
-- Build files have been written to: /home/chuong/workspace/Super4PCS/build

$ make install
Scanning dependencies of target super4pcs_io
[ 12%] Building CXX object src/super4pcs/io/CMakeFiles/super4pcs_io.dir/io.cc.o
[ 25%] Linking CXX static library libsuper4pcs_io.a
[ 25%] Built target super4pcs_io
Scanning dependencies of target super4pcs_algo
[ 37%] Building CXX object src/super4pcs/algorithms/CMakeFiles/super4pcs_algo.dir/match4pcsBase.cc.o
[ 50%] Building CXX object src/super4pcs/algorithms/CMakeFiles/super4pcs_algo.dir/4pcs.cc.o
[ 62%] Building CXX object src/super4pcs/algorithms/CMakeFiles/super4pcs_algo.dir/super4pcs.cc.o
[ 75%] Linking CXX static library libsuper4pcs_algo.a
[ 75%] Built target super4pcs_algo
Scanning dependencies of target Super4PCS
[ 87%] Building CXX object demos/Super4PCS/CMakeFiles/Super4PCS.dir/super4pcs_test.cc.o
[100%] Linking CXX executable Super4PCS
../../src/super4pcs/io/libsuper4pcs_io.a(io.cc.o): In function IOManager::ReadObj(char const*, std::vector<GlobalRegistration::Point3D, std::allocator<GlobalRegistration::Point3D> >&, std::vector<Eigen::Matrix<float, 2, 2, 0, 2, 2>, std::allocator<Eigen::Matrix<float, 2, 2, 0, 2, 2> > >&, std::vector<Eigen::Matrix<float, 3, 1, 0, 3, 1>, std::allocator<Eigen::Matrix<float, 3, 1, 0, 3, 1> > >&, std::vector<tripple, std::allocator<tripple> >&, std::vector<std::string, std::allocator<std::string> >&)': io.cc:(.text+0x6b9a): undefined reference to cv::imread(std::string const&, int)'
collect2: error: ld returned 1 exit status
demos/Super4PCS/CMakeFiles/Super4PCS.dir/build.make:99: recipe for target 'demos/Super4PCS/Super4PCS' failed
make[2]: *** [demos/Super4PCS/Super4PCS] Error 1
CMakeFiles/Makefile2:1498: recipe for target 'demos/Super4PCS/CMakeFiles/Super4PCS.dir/all' failed
make[1]: *** [demos/Super4PCS/CMakeFiles/Super4PCS.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

run-example issue

I try to run the example

./run-example.sh

The output:

Use Super4PCS
norm_max_dist: 0.010000
Work with 200 points
Initial LCP: 0.010000
Score: 0.01est: 0.010000                  
(Homogeneous) Transformation from hippo2.obj to hippo1.obj:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
Exporting Matrix to mat_super4pcs_fast.txt...DONE
Exporting Registered geometry to super4pcs_fast.obj...DONE
real 0.85
user 0.78
sys 0.07
Use old 4PCS
norm_max_dist: 0.010000
Initial LCP: 0.010000
Score: 0.535st: 0.535000                  
(Homogeneous) Transformation from hippo2.obj to hippo1.obj:
  0.780739 -0.0319342   -0.62404 -0.0981111
-0.0509506   0.992114  -0.114514 -0.0217299
  0.622776   0.121201   0.772955 -0.0271737
         0          0          0          1
Exporting Matrix to mat_4pcs_fast.txt...DONE
Exporting Registered geometry to 4pcs_fast.obj...DONE
real 17.72
user 17.63
sys 0.08

It seem the Super4PCS's Transformation is wrong...

how to use super4pcs in windows?

Dear sir ,sorry to ask some primary question. i download the packages on windows .
And i want to test it ,but i can't find that some keywords like pcl::Super4PCS, it's the PCLWrapper examplesScripts, Demos and wrappers.
i just put two folders include and lib into my pcl/include/registration,pcl/lib seperately,
but I can't run it ,can u help me ?
i don't understand that

The wrapper source code is available at install_dir/include/pcl/registration. 
Note that our file structure follows the PCL source code organization.

Thank you!

PCL Wrapper

I understand that the PCL wrapper is a relatively new feature, but I am not finding sufficient instructions to use Super4PCS from within PCL (I am very basic at C++, so it might be me). You have provided an example that makes automatically, but I cannot use that code anywhere, as the code compiled in the manner explained at Compiling doesn't work with your example for the wrapper. Among other things, I cannot find the pcl::Super4PCS defined anywhere, and many other compiler errors.

Is there anyway you can provide an example for the PCL Wrapper but included in the external project, with CMakeLists required? Sort of a combination between help pages Compiling and Wrapper ?

Thanks in advance!!

Building error on Windows 10 with Visual Studio 2017

Although Windows Builds instruction at http://nmellado.github.io/Super4PCS/a05034.html says

By default, the project can be opened and compiled straight away with no parameter setting.

However, I got this error when open Super4PCS folder from Visual Studio:

1> Command line: C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe -G "Visual Studio 15 2017" -DCMAKE_INSTALL_PREFIX:PATH="C:\Users\ngu10t\AppData\Local\CMakeBuild\b41649fd-ae16-9039-b951-23bc5cdc4a3d\build\install" -DCMAKE_CONFIGURATION_TYPES="Debug" "C:\Users\ngu10t\Workspace\Super4PCS" 1> Working directory: C:\Users\ngu10t\AppData\Local\CMakeBuild\b41649fd-ae16-9039-b951-23bc5cdc4a3d\build\x86-Debug 1> -- Eigen3 root path: C:/Users/ngu10t/Workspace/Super4PCS/3rdparty/Eigen 1> CMake Error at src/super4pcs/io/CMakeLists.txt:11 (find_package): 1> By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project has 1> asked CMake to find a package configuration file provided by "OpenCV", but 1> CMake did not find one. 1> 1> Could not find a package configuration file provided by "OpenCV" with any 1> of the following names: 1> 1> OpenCVConfig.cmake 1> opencv-config.cmake 1> 1> Add the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set 1> "OpenCV_DIR" to a directory containing one of the above files. If "OpenCV" 1> provides a separate development package or SDK, be sure it has been 1> installed. 1> 1> 1> -- Configuring incomplete, errors occurred! 1> See also "C:/Users/ngu10t/AppData/Local/CMakeBuild/b41649fd-ae16-9039-b951-23bc5cdc4a3d/build/x86-Debug/CMakeFiles/CMakeOutput.log". 1> C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2017\COMMUNITY\COMMON7\IDE\COMMONEXTENSIONS\MICROSOFT\CMAKE\CMake\bin\cmake.exe -G "Visual Studio 15 2017" -DCMAKE_INSTALL_PREFIX:PATH="C:\Users\ngu10t\AppData\Local\CMakeBuild\b41649fd-ae16-9039-b951-23bc5cdc4a3d\build\install" -DCMAKE_CONFIGURATION_TYPES="Debug" "C:\Users\ngu10t\Workspace\Super4PCS" returned with exit code: 1

even though I already compile without OpenCV support in CMakeLists.txt file:

OPTION (IO_USE_OPENCV "Use OpenCV for texture loading" FALSE)

Am I missing something here?
Thanks

Compiling problem

Hi Dr. Mellado,

I follow the wiki instructions to compiling the code, however, after displaying the error message as below, it stays at the build stage but not moving anymore.
I'm using windows 10, and in Debug mode with x64. And below is the whole error message:

1>------ Build started: Project: Super4pcs, Configuration: Debug x64 ------
1> super4pcs_test.cc
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(430): error C3646: 'centroid2': unknown override specifier
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(430): error C2838: 'Matrix<double,3,1,0,3,1>': illegal qualified name in member declaration
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(431): error C3646: 'max_angle': unknown override specifier
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(431): error C2377: 'match_4pcs::MatchSuper4PCSImpl::Scalar': redefinition; typedef cannot be overloaded with any other symbol
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(243): note: see declaration of 'match_4pcs::MatchSuper4PCSImpl::Scalar'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(432): error C2923: 'Eigen::Matrix': 'match_4pcs::MatchSuper4PCSImpl::Scalar' is not a valid template type argument for parameter '_Scalar'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(432): error C2143: syntax error: missing ';' before '&'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(432): error C2838: 'Matrix': illegal qualified name in member declaration
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(434): error C2059: syntax error: ')'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(434): error C2238: unexpected token(s) preceding ';'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(262): error C2530: 'match_4pcs::MatchSuper4PCSImpl::centroid1': references must be initialized
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(465): error C2974: 'PairCreationFunctor': invalid template argument for '_Scalar', type expected
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\paircreationfunctor.h(9): note: see declaration of 'PairCreationFunctor'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(465): error C2955: 'PairCreationFunctor': use of class template requires template argument list
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\paircreationfunctor.h(9): note: see declaration of 'PairCreationFunctor'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(466): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(466): error C2146: syntax error: missing ';' before identifier 'eps'
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(466): error C2065: 'eps': undeclared identifier
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(479): error C2065: 'eps': undeclared identifier
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(482): error C2440: 'initializing': cannot convert from 'Eigen::Matrix<double,3,1,0,3,1>' to 'const Point &'
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(482): note: Reason: cannot convert from 'Eigen::Matrix<double,3,1,0,3,1>' to 'const Point'
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(482): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(483): error C2440: 'initializing': cannot convert from 'Eigen::Matrix<double,3,1,0,3,1>' to 'const Point &'
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(483): note: Reason: cannot convert from 'Eigen::Matrix<double,3,1,0,3,1>' to 'const Point'
1> c:\users\jida huang\documents\visual studio 2015\projects\super4pcs-0.2.1-alpha\super4pcs\super4pcs.cc(483): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called

Using this library in my own project

Hi,
I want to use this library in my own project!My project is developed on Visual Studio 2010.
Sadly,I get many syntax errors after I indlude the head file.
Is my VS version too old for that?

Improved sub-sampling algorithm

Several failure cases of the algorithm are caused by a non-adapted sub-sampling of the input clouds.
Since this operation is performed at the very beginning of the algorithm, it appears necessary to improve this step, by providing several algorithms to be tuned by the user + an auto tune system.

Tuning parameters

Hi Nicolas,

I'm trying to compare two point clouds of the size ~2M points. They are very similar but with a different scale, orientation and a bit of noise. Initially, I have tried to perform the transformation with ICP algorithms, but they seem to be not suitable in my case. I am wondering if it is possible to do the transformation with Super4PCS.
I have been trying to test some Super4PCS on my point set. There are my notes:

  1. Changing number of of samples does not make any difference and I get an identity transformation matrix:
$ ./Super4PCS -i pt_in.obj pt_target.obj -o 0.75 -d 0.001 -t 1000 -n 4000 -r super4pcs_extreme.obj -m mat_super4pcs_extreme.txt
Use Super4PCS
create tree
create tree ... DONE (2011880 points)
Work with 4006 points
norm_max_dist: 0.001000
Initial LCP: 0.000749
Score: 0.000748877000749                  
0.000748877
(Homogeneous) Transformation from pt_target.obj to pt_in.obj:


                    1.000                     0.000                     0.000                     0.000
                    0.000                     1.000                     0.000                     0.000
                    0.000                     0.000                     1.000                     0.000
                    0.000                     0.000                     0.000                     1.000

Exporting Matrix to mat_super4pcs_extreme.txt...DONE
Exporting Registered geometry to super4pcs_extreme.obj...DONE
$ ./Super4PCS -i pt_in.obj pt_target.obj -o 0.75 -d 0.001 -n 40000 -r super4pcs_extreme.obj -m mat_super4pcs_extreme.txt
Use Super4PCS
create tree
create tree ... DONE (2011880 points)
Work with 40615 points
norm_max_dist: 0.001000
Initial LCP: 0.000492
Score: 0.000492429.000492                  
0.000492429
(Homogeneous) Transformation from pt_target.obj to pt_in.obj:


                    1.000                     0.000                     0.000                     0.000
                    0.000                     1.000                     0.000                     0.000
                    0.000                     0.000                     1.000                     0.000
                    0.000                     0.000                     0.000                     1.000

Exporting Matrix to mat_super4pcs_extreme.txt...DONE
Exporting Registered geometry to super4pcs_extreme.obj...DONE
$ ./Super4PCS -i pt_in.obj pt_target.obj -o 1 -d 0.001 -n 40000 -r super4pcs_extreme.obj -m mat_super4pcs_extreme.txt
Use Super4PCS
create tree
create tree ... DONE (2011880 points)
Work with 40615 points
norm_max_dist: 0.001000
Initial LCP: 0.000492
Score: 0.000492429.000492                  
0.000492429
(Homogeneous) Transformation from pt_target.obj to pt_in.obj:


                    1.000                     0.000                     0.000                     0.000
                    0.000                     1.000                     0.000                     0.000
                    0.000                     0.000                     1.000                     0.000
                    0.000                     0.000                     0.000                     1.000

Exporting Matrix to mat_super4pcs_extreme.txt...DONE
Exporting Registered geometry to super4pcs_extreme.obj...DONE
  1. Changing the order of the input point clouds does make a difference:
$ ./Super4PCS -i pt_target.obj pt_in.obj -o 1 -d 0.001 -n 40000 -r super4pcs_extreme.obj -m mat_super4pcs_extreme.txt
Use Super4PCS
create tree
create tree ... DONE (1671110 points)
Work with 40139 points
norm_max_dist: 0.001000
Initial LCP: 0.000349
Score: 0.002142550.002143                  
0.00214255
(Homogeneous) Transformation from pt_in.obj to pt_target.obj:


                    0.143                    -0.989                     0.044                     0.982
                    0.982                     0.136                    -0.132                     0.094
                    0.124                     0.062                     0.990                    -0.944
                    0.000                     0.000                     0.000                     1.000

Exporting Matrix to mat_super4pcs_extreme.txt...DONE
  1. The transformation from the note # 2 is still not efficient. There is a screenshot of my two point clouds and the transformed one (white):

image

What do you think? Would you suggest any parameters to play with?

Using prior

Thank you for this excellent work! Is there any way to use prior to constraint 6DOF to 3DOF (R is given by magnetometer or gyro) for faster convergence?

Eigen alignment assert using PCLWrapper and PCL

Hi @nmellado,
first of all, thanks for making Super4PCS available. I've been testing it with Kinect data for the past few weeks and the speed vs. accuracy trade-off is impressive!

Recently, I tried to use the PCLWrapper with some PCL code to sub-sample LiDAR data (~5 million 3D point per scan) but I get a Eigen assert message during my code execution. I don't have any additional Eigen class/struct in my own code besides a Eigen::Matrix4f to pass as an argument to Super4PCS::computeTransformation function (source file):

void computeTransformation (PointCloud [CMakeLists.txt](https://github.com/nmellado/Super4PCS/files/1727555/CMakeLists.txt) Source &output, const Eigen::Matrix4f& guess);

I'm using PCL v1.8.1 in Ubuntu 16.04 (x64).
I've tried with master and 1.4RC branches and also with release 1.3.
I've attached the CMakeLists.txt used in my code.

This is the output:

`
filipe@filipe-pc:~/dev/Super4PCS-RC1.1.4/build/debug/demos/PCLWrapper$ ./Super4PCS-PCLWrapper /home/filipe/data/aux1.obj /home/filipe/data/aux2.obj -o 0.20 -d 0.05 -n 200 -t 100

Loading point clouds...
Failed to find match for field 'curvature'.
Failed to find match for field 'curvature'.
Starting alignment...
create tree
create tree ... DONE (26248 points)
norm_max_dist: 0.05
Initial LCP: 0.07
Super4PCS-PCLWrapper: /usr/include/eigen3/Eigen/src/Core/DenseStorage.h:128: Eigen::internal::plain_array<T, Size, MatrixOrArrayOptions, 32>::plain_array() [with T = float; int Size = 16; int MatrixOrArrayOptions = 0]: Assertion (reinterpret_cast<size_t>(eigen_unaligned_array_assert_workaround_gcc47(array)) & (31)) == 0 && "this assertion is explained here: " "http://eigen.tuxfamily.org/dox-devel/group__TopicUnalignedArrayAssert.html" " **** READ THIS WEB PAGE !!! ****"' failed. Aborted (core dumped)

Thanks,
Filipe

Code error

There might be a code error at super4pcs.cc#L209,

#ifdef MULTISCALE
  BruteForceFunctor
  <PairCreationFunctor<Scalar>::Point, 3, Scalar> interFunctor;
#else
...

which I think should be

#ifdef MULTISCALE
  BruteForceFunctor
  <PairCreationFunctor<Scalar>::Primitive, PairCreationFunctor<Scalar>::Point, 3, Scalar> interFunctor;
#else
...

By the way, does it work to use MULTISCALE for aligning point clouds with scale variation?

Fix compile error on macOS

Compile error in match4pcsBase.cc.

At lines 130 and 131, use std::abs.
From line 871 to 876, use std::cout and std::endl.

Tried to do a PR, but obviously I do not have permission.

Set to Subset matching?

Hi, and thank you for making this code available! I have a large pointcloud ( a room scan) and a smaller one (a section of the same room, sharing some, but not all points). I have these matching, using your code, but I am trying to run this as fast as I possibly can, for real time use. Using these settings:

-o 0.8 -d 0.02 -t 1000 -n 50

I have this down to 43 ms. Is it possible to get this even faster, whilst keeping accuracy?

Also, i see a worse result when I add outliers. This is expected, I guess, but is are there settings, or something I can look at to improve outlier rejection?

My clouds are sparse, the larger is generally around 6000 points, and the smaller, around 900..

Thank you once again!

the same mesh with different initial position will generate different best LCP score

hi, @nmellado
I run the code using the same mesh two times, i get different best_LCP score. The only difference is initial position is different in two times. I also test the 4PCS_demo.exe of Niloy J. Mitra. Different initial position will generate the same results.

I don't know the reason of different results?

Crown_all.obj and Crown2_all.obj are the same mesh but different initial position.

image
image

image

Access to MVS datasets

Dear all
Sorry to bother you in this way . I am interested in your test data two point-clouds of the Cathedral of Pisa one acquired using LI- DAR and the other using Multi-View Stereo (MVS) recon- struction. I download your dataset but i can find it. And I search the internet but i can not find it.
Is it your own data or some public datasets.How can I get it ?
Please.

Mac binary

Hi Nicolas,

Just saw your v0.2.1-alpha release. I am willing to provide Mac binary.

Xin

problem with building

I am not able to build the project in CMake because CFITSIO is missing. Shouldn't it be already in the archive as a dependency ? What am i doing wrong ? Then if i add CFITSIO manually i get an error when building it, so the problem is never ending. Can you help ?

Thank you.

Export intermediate results

The current output is the transformation that maximize the LCP.
It would be nice to rank all the extracted configurations:

  • To track the exploration while it is running, to eventually stop it once a good result is found.
  • In some cases, the expected solution can be ranked 2d or more, so it can be nice to browse all the results. This is critical when the scenes are ambiguous (symmetries).

sampling method

Hi, thank you so much for this available code. I can't understand the sub-sampling method in the algorithm? How did it achieve uniform distance sampling? I can't understand why a Hash table is used for sub-sampleing. Can you explain it for me in detail?

Bug during normalization

Hi there,

I happened to find that in shared4pcs.h (line 89-91):

inline void normalize() {
    pos_.normalize();
}

I believe 3D positions should not be normalized like this, and this issue would lead to malfunctions when the input contains both positions and normals.

quantized input spheres

Hi, in your paper the quantized input spheres are mentioned. What's the purpose of quantizing the input spheres? Can you explain it in detail?

Building problem

Hi Nicolas,
I have tried to build Super4PCS, but it does not work out. Can you help to fix the problem, please
Thank you!
I'm having the following error:

$ cmake -DCMAKE_BUILD_TYPE=Release -DANN_DIR=/mypathto/ann_1.1.2/ ..
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test COMPILER_SUPPORTS_CXX11
-- Performing Test COMPILER_SUPPORTS_CXX11 - Success
-- Performing Test COMPILER_SUPPORTS_CXX0X
-- Performing Test COMPILER_SUPPORTS_CXX0X - Success
-- Found CFITSIO: /usr/lib/x86_64-linux-gnu/libcfitsio.so
-- Found Eigen3: /usr/include/eigen3 (Required is at least version "2.91.0")
-- Configuring done
-- Generating done
-- Build files have been written to: /home/alex/Downloads/Super4PCS-master/build

$ make
Scanning dependencies of target super4pcs_accel
[ 9%] Building CXX object src/super4pcs/accelerators/CMakeFiles/super4pcs_accel.dir/normalHealSet.cpp.o
[ 18%] Linking CXX static library libsuper4pcs_accel.a
[ 18%] Built target super4pcs_accel
Scanning dependencies of target super4pcs_io
[ 27%] Building CXX object src/super4pcs/io/CMakeFiles/super4pcs_io.dir/io.cc.o
In file included from /home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io.cc:2:0:
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h: In function ‘bool readBinary1Body(const string&, unsigned int, unsigned int, unsigned int, unsigned int, bool, bool, std::vector<match_4pcs::Point3D>&, std::vector<cv::Point3_ >&, std::vector&)’:
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:162:41: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
/count = /fread (&c, 1, 1, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:175:32: warning: ignoring return value of ‘size_t fread(void
, size_t, size_t, FILE
)’, declared with attribute warn_unused_result [-Wunused-result]
fread (v, 4, 6, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:176:51: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (rgb_buff, sizeof(uchar), 4, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:178:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (v, 4, 6, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:179:51: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (rgb_buff, sizeof(uchar), 3, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:181:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (v, 4, 3, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:182:51: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (rgb_buff, sizeof(uchar), 3, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:184:32: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (v, 4, 3, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:185:51: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (rgb_buff, sizeof(uchar), 4, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:188:52: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread (v, 4, numOfVertexProperties, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:237:55: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
/count = /fread (&polygonSize, 1, 1, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:238:44: warning: ignoring return value of ‘size_t fread(void
, size_t, size_t, FILE
)’, declared with attribute warn_unused_result [-Wunused-result]
/count = /fread (f, 4, 3, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h: In function ‘bool readASCII1Body(const string&, unsigned int, unsigned int, unsigned int, unsigned int, bool, std::vector<match_4pcs::Point3D>&, std::vector<cv::Point3_ >&, std::vector&)’:
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:269:41: warning: ignoring return value of ‘size_t fread(void
, size_t, size_t, FILE
)’, declared with attribute warn_unused_result [-Wunused-result]
/count = /fread (&c, 1, 1, in);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:283:41: warning: ignoring return value of ‘int fscanf(FILE
, const char
, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%f", &v[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:285:48: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%i", &rgb_buff[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:289:41: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%f", &v[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:291:48: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%i", &rgb_buff[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:294:41: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%f", &v[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:296:48: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%i", &rgb_buff[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:299:41: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%f", &v[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:301:48: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%i", &rgb_buff[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:305:41: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
fscanf (in, "%f", &v[j]);
^
/home/alex/Downloads/Super4PCS-master/src/super4pcs/io/io_ply.h:353:86: warning: ignoring return value of ‘int fscanf(FILE*, const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
/*count = */fscanf (in, "%d %d %d %d", &polygonSize, &f[0], &f[1], &f[2]);
^
[ 36%] Linking CXX static library libsuper4pcs_io.a
[ 36%] Built target super4pcs_io
Scanning dependencies of target super4pcs_algo
[ 45%] Building CXX object CMakeFiles/super4pcs_algo.dir/src/super4pcs/4pcs.cc.o
[ 54%] Building CXX object CMakeFiles/super4pcs_algo.dir/src/super4pcs/super4pcs.cc.o
[ 63%] Linking CXX static library libsuper4pcs_algo.a
[ 63%] Built target super4pcs_algo
Scanning dependencies of target chealpix
[ 72%] Building C object 3rdparty/chealpix/CMakeFiles/chealpix.dir/src/chealpix.c.o
[ 81%] Linking C shared library libchealpix.so
[ 81%] Built target chealpix
Scanning dependencies of target Super4PCS
[ 90%] Building CXX object CMakeFiles/Super4PCS.dir/src/super4pcs/super4pcs_test.cc.o
make[2]: *** No rule to make target '/your/path/to/ann_1.1.2/lib/libANN.a', needed by 'Super4PCS'. Stop.
CMakeFiles/Makefile2:70: recipe for target 'CMakeFiles/Super4PCS.dir/all' failed
make[1]: *** [CMakeFiles/Super4PCS.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Visual Studio 32 Support

Currently Visual Studio is not supported due to Chealpix, causing errors when compiled with MVSC.

Reported in build 673051 - (Win32-CWindowsMicrosoft.NETFrameworkv4.0.30319)

..\..\..\3rdparty\chealpix\src\chealpix.c(83): error C2143: syntax error : missing ';' before 'type' 
..\..\..\3rdparty\chealpix\src\chealpix.c(84): error C2065: 'tmp' : undeclared identifier
..\..\..\3rdparty\chealpix\src\chealpix.c(864): error C2143: syntax error : missing ';' before 'type'
..\..\..\3rdparty\chealpix\src\chealpix.c(865): error C2065: 'cth' : undeclared identifier
..\..\..\3rdparty\chealpix\src\chealpix.c(865): error C2065: 'sth' : undeclared identifier
..\..\..\3rdparty\chealpix\src\chealpix.c(870): error C2143: syntax error : missing ';' before 'type'
..\..\..\3rdparty\chealpix\src\chealpix.c(871): error C2065: 'cth' : undeclared identifier

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.