-
-
Notifications
You must be signed in to change notification settings - Fork 4.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lccp #718
Lccp #718
Conversation
* | ||
*/ | ||
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Extra carriage return
I didn't read all the code but there are bunch of little "errors" to match the PCL style guide (pointcloud.org is down today!). |
thanks, I will fix that. On 05/30/2014 05:24 PM, Victor Lamoine wrote:
Georg-August-Universität Göttingen |
pointclouds is back up. Thanks for the heads up. We're investigating to see what happened, and also upgrading some packages in the process. |
hm I do not understand the clang compile error. |
This means that the code can not be compiled with the |
so everything compiles ,but Travis throws a timeout for the unit tests. Anything I can do about it? |
Is there any particular reason to implement all the basic vector operations (norm, dot, cross) as member functions of the segmentation class? I would suggest to use the standard implementations provided by Eigen. Regarding the timeout, it's okay. |
oh, makes perfect sense. I will change that. |
It's being updated right now to use the Eigen functions, but do you think it makes sense to put these functions in common? I don't know how often people take a dotp, vectornorm or crossp between a point and a normal... |
All these functions are implemented for vectors in Eigen (docs). Points and normals in PCL can be viewed as Eigen vectors (via For instance, if you have a point |
Yeah, that's what we did... but we put them in helper functions... I'm not sure why really. We'll simplify it =) |
thanks for the suggestions. I removed the extra functions. |
I am not sure if it really makes sense to allow color+depth input in the LLCP example program. Clearly, that is not at all the point of the example, however adds much complexity. (Both in terms of the command line options and the application code). If someone really needs to run LLCP with that kind of input he can preprocess it with e.g. |
Right now I'm traveling, but I will take it out end of next week. On 7. Juni 2014 15:38:46 MESZ, Sergey Alexandrov notifications@github.com wrote:
Georg-August-Universität Göttingen Sent by Android |
Sure. I will probably add more comments here and there in the meanwhile. |
public: | ||
|
||
// Adjacency list with nodes holding labels (uint32_t) and edges holding EdgeProperties. | ||
typedef typename boost::adjacency_list<boost::setS, boost::setS, boost::undirectedS, uint32_t, EdgeProperties> SupervoxelAdjacencyList; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why using custom struct for the edge property here? Won't simple bool
suffice?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I might need to add more edge properties in the future, like is_smooth or is_invalid. This way it is easier to extend without changing too much of the code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay, makes sense.
Hmm, I don't like this idea of I would propose that all functions that rely on |
getSVAdjacencyList (SupervoxelAdjacencyList& adjacency_list) const; | ||
|
||
/** \brief Set normal threshold | ||
* \param[out] concavity_tolerance_threshold_arg the concavity tolerance angle in [deg] to set */ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's \param[in]
.
So specializations will go to |
Yes. Though if you look here the plan is to switch to using your centroid accumulator. Unfortunately as far as I can tell I still need to specialize for each point type individually, since as far as I know one can't partially specialize like this:
Of course, I could remove all of these specializations altogether by adding CentroidPoint to the base container... |
What is wrong with this partial specialization? As far as I remember, partial specialization is OK as long as it reduces the number of template arguments. Or do I miss something? |
AFAIK you can't partially specialize a member function template without specializing the whole class template. |
Changes necessary for lccp pull request #718
…nce-estimate * gh/master: (166 commits) Fixes for issue PointCloudLibrary#924 Fix setSize () in PCL visualizer PCL formula is in the official homebrew repo CMake pkg_check_modules sets GLEW_INCLUDEDIR Fix for Mac OS X Changes necessary for lccp pull request PointCloudLibrary#718 Change to visualization to make things a bit nicer - mainly removed broken opacity Updated supervoxel examples with normals and better description of the camera transform Removed public interface for modifying neighbors of OctreePointcloudAdjacencyContainer. Neighbors can now only be added/removed from within OctreePointcloudAdjacency. This does *not* mean neighbors can't be modified, just that the list of neighbors itself can't be modified. Fix for problem where leaves could get lost, and warning would show up. Now we use leaf indices directly for seeding, instead of doing a look up Changed OctreePointcloud Adjacency to use std::list instead of std::set, added comparator to SupervoxelHelper so that the internal set of voxels owned by a helper is sorted by index instead of memory location Added brief comment explaining comparator Fix inconsistency between method declaration and implementation that resulted in build failure Remove Boost Chrono dependency Don't normalize path if function is not in Boost Disable precompilation of PPFRegistration Fix for issue PointCloudLibrary#758 Moved pcl::PPFHashMapSearch::setInputFeatureCloud() and pcl::PPFHashMapSearch::nearestNeighborSearch() implementation from ppf_registration.hpp to ppf_registration.cpp since they belong to a not templated class Bump PCL version to 1.8.0 Fixes PointCloudLibrary#896. Add a changelist for 1.7.2 Set PCL_ONLY_CORE_POINT_TYPES on Windows (Closes PointCloudLibrary#833) ... Conflicts: common/include/pcl/common/impl/centroid.hpp
…ted changes originally from pull request PointCloudLibrary#473. Now uses the CentroidPoint accumulators instead of doing it itself, uses PointXYZRGBNormal internally instead of separate fields.
2314157
to
29e6cf7
Compare
void | ||
reset (); | ||
|
||
/** \brief Merge supervoxels using local convexity. The input parameters are generated by using the SupervoxelClustering class. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice to elaborate here how the output of the segmentation is supposed to be retrieved. Otherwise it is not clear since there are neither return value nor out params.
@jspricke We have done several rounds of review for this already. I am not convinced that it has best possible interface yet. But I would propose to merge this and then possibly revise it based on feedback. |
// Add the points to the dataset | ||
vtkSmartPointer<vtkPolyLine> polyLine = vtkSmartPointer<vtkPolyLine>::New (); | ||
polyLine->GetPointIds ()->SetNumberOfIds (2); | ||
polyLine->GetPointIds ()->SetId (0,points->GetNumberOfPoints ()-2); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing space in front of ,
Apart from the comments by Sergey and me and a squashing the commits, I'm fine with merging it. Thanks for going through all this Markus! |
Thanks Markus. Sorry for delaying this much. |
This pull-request is part of the GSOC 2014 project of Markus Schoeler (Automated benchmark generation for object-part segmentation).
It contains an implementation of the lccp segmentation published in:
S. C. Stein, M. Schoeler, J. Papon, F. Woergoetter
Object Partitioning using Local Convexity
In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR) 2014
In addition, it contains an example "example_lccp_segmentation.cpp" which shows how to use the lccp segmentation.