|
So I have a rather large PCL octree, i was hoping to load subtrees of this octree from disk as needed. Is there any way to merge a subtree back into a full octree?
For example i have a tree of depth 16 with a voxel size of 1cm. Right now I only store occupancy, and get leaf centers to visualize. But with a tree that size i may have ALOT of leaves, more than I could safely fit into system or GPU memory. I would like to cache the subtrees in as need, and keep them in a LRU queue. |
|
I don't know much about it, but this might get you heading down the right road:
http://pointclouds.org/blog/urcs/
On Mon, Jul 30, 2012 at 5:49 PM, Ender1618 <[hidden email]> wrote: So I have a rather large PCL octree, i was hoping to load subtrees of this - Aaron O'Toole _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
Julius the developer of the PCL octree is doing what you describe in a project that he's involved with. I don't think the part you're interested in is open sourced and/or available.
Both http://pointclouds.org/blog/trcs/rosen/ and http://pointclouds.org/blog/urcs/ are code sprints to solve the problem you've described. Unfortunately, I still need to develop the frustum culling and LRU caching aspect to actually make it outofcore. If you want some more info or help getting started with the outofcore octree code let me know.
Cheers, Justin
On Mon, Jul 30, 2012 at 6:58 PM, Aaron O'Toole <[hidden email]> <[hidden email]> wrote: I don't know much about it, but this might get you heading down the right road: http://pointclouds.org/blog/urcs/ _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
Are any of these out of core implementations near being released? Are there any use examples of the semi-released version available? If not I am afraid I might need to implement a version myself, due to the immediate need I have for something like this.
|
|
This post was updated on .
How are people generally approaching this problem? I am not interested in maintaining the original points, but instead the voxel centers of the leaf nodes. Are people generally approaching this as an octree containing other (subtree) cache-able octrees (which can be loaded at different levels of detail via controlling depth)? What exactly is being cached/stored on disk, the voxel centers or the serialized octree occupancy vector (breadth first traversal with each branch described by a one byte bitmask)?
|
|
In reply to this post by clockwise9
Do you have an example of your code's usage, where could I a copy of you open sourced code?
|
|
Hi Ender1618,
like Justin mentioned, it sounds like what you are looking for is the out-of-core component of PCL. If you would like to stick to the PCL octree, you can just define a "top-level" octree with a large voxel size. All points that fall within these voxels can be stored to disk and loaded when needed. Best, Julius On 08/01/2012 12:38 AM, Ender1618 wrote: > Do you have an example of your code's usage, where could I a copy of you open > sourced code? > > > clockwise9 wrote >> >> Julius the developer of the PCL octree is doing what you describe in a >> project that he's involved with. I don't think the part you're interested >> in is open sourced and/or available. >> >> Both *http://pointclouds.org/blog/trcs/rosen/* and >> http://pointclouds.org/blog/urcs/ are code sprints to solve the problem >> you've described. Unfortunately, I still need to develop the frustum >> culling and LRU caching aspect to actually make it outofcore. If you want >> some more info or help getting started with the outofcore octree code let >> me know. >> >> Cheers, >> Justin >> >> On Mon, Jul 30, 2012 at 6:58 PM, Aaron O'Toole <airuno2L@> < >> airuno2l@> wrote: >> >>> I don't know much about it, but this might get you heading down the right >>> road: http://pointclouds.org/blog/urcs/ >>> >>> >>> On Mon, Jul 30, 2012 at 5:49 PM, Ender1618 <Ender1618@> wrote: >>> >>>> So I have a rather large PCL octree, i was hoping to load subtrees of >>>> this >>>> octree from disk as needed. Is there any way to merge a subtree back >>>> into >>>> a >>>> full octree? >>>> >>>> For example i have a tree of depth 16 with a voxel size of 1cm. Right >>>> now I >>>> only store occupancy, and get leaf centers to visualize. But with a tree >>>> that size i may have ALOT of leaves, more than I could safely fit into >>>> system or GPU memory. I would like to cache the subtrees in as need, >>>> and >>>> keep them in a LRU queue. >>>> >>>> >>>> >>>> -- >>>> View this message in context: >>>> http://www.pcl-users.org/PCL-octree-merging-a-sub-tree-tp4020929.html >>>> Sent from the Point Cloud Library (PCL) Users mailing list archive at >>>> Nabble.com. >>>> _______________________________________________ >>>> PCL-users@ / http://pointclouds.org >>>> http://pointclouds.org/mailman/listinfo/pcl-users >>>> >>> >>> >>> >>> -- >>> - Aaron O'Toole >>> >>> _______________________________________________ >>> PCL-users@ / http://pointclouds.org >>> http://pointclouds.org/mailman/listinfo/pcl-users >>> >>> >> >> _______________________________________________ >> PCL-users@ / http://pointclouds.org >> http://pointclouds.org/mailman/listinfo/pcl-users >> > > > > > -- > View this message in context: http://www.pcl-users.org/PCL-octree-merging-a-sub-tree-tp4020929p4020959.html > Sent from the Point Cloud Library (PCL) Users mailing list archive at Nabble.com. > _______________________________________________ > [hidden email] / http://pointclouds.org > http://pointclouds.org/mailman/listinfo/pcl-users > _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
Where can I find the out of core octree implementation for PCL? Is it officially released? The version I have does not seem to contain this.
|
|
Hi Ender1618,
yes, it is still under development. You'll find it in trunk. Best, Julius On 08/01/2012 04:38 PM, Ender1618 wrote: > Where can I find the out of core octree implementation for PCL? Is it > officially released? The version I have does not seem to contain this. > > > Julius Kammerl-2 wrote >> >> Hi Ender1618, >> >> like Justin mentioned, it sounds like what you are looking for is the >> out-of-core component of PCL. >> >> If you would like to stick to the PCL octree, you can just define a >> "top-level" octree with a large voxel size. All points that fall within >> these voxels can be stored to disk and loaded when needed. >> >> Best, >> Julius >> >> On 08/01/2012 12:38 AM, Ender1618 wrote: >>> Do you have an example of your code's usage, where could I a copy of you >>> open >>> sourced code? >>> >>> >>> clockwise9 wrote >>>> >>>> Julius the developer of the PCL octree is doing what you describe in a >>>> project that he's involved with. I don't think the part you're >>>> interested >>>> in is open sourced and/or available. >>>> >>>> Both *http://pointclouds.org/blog/trcs/rosen/* and >>>> http://pointclouds.org/blog/urcs/ are code sprints to solve the problem >>>> you've described. Unfortunately, I still need to develop the frustum >>>> culling and LRU caching aspect to actually make it outofcore. If you >>>> want >>>> some more info or help getting started with the outofcore octree code >>>> let >>>> me know. >>>> >>>> Cheers, >>>> Justin >>>> >>>> On Mon, Jul 30, 2012 at 6:58 PM, Aaron O'Toole <airuno2L@> < >>>> airuno2l@> wrote: >>>> >>>>> I don't know much about it, but this might get you heading down the >>>>> right >>>>> road: http://pointclouds.org/blog/urcs/ >>>>> >>>>> >>>>> On Mon, Jul 30, 2012 at 5:49 PM, Ender1618 <Ender1618@> wrote: >>>>> >>>>>> So I have a rather large PCL octree, i was hoping to load subtrees of >>>>>> this >>>>>> octree from disk as needed. Is there any way to merge a subtree back >>>>>> into >>>>>> a >>>>>> full octree? >>>>>> >>>>>> For example i have a tree of depth 16 with a voxel size of 1cm. Right >>>>>> now I >>>>>> only store occupancy, and get leaf centers to visualize. But with a >>>>>> tree >>>>>> that size i may have ALOT of leaves, more than I could safely fit into >>>>>> system or GPU memory. I would like to cache the subtrees in as need, >>>>>> and >>>>>> keep them in a LRU queue. >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> View this message in context: >>>>>> http://www.pcl-users.org/PCL-octree-merging-a-sub-tree-tp4020929.html >>>>>> Sent from the Point Cloud Library (PCL) Users mailing list archive at >>>>>> Nabble.com. >>>>>> _______________________________________________ >>>>>> PCL-users@ / http://pointclouds.org >>>>>> http://pointclouds.org/mailman/listinfo/pcl-users >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> - Aaron O'Toole >>>>> >>>>> _______________________________________________ >>>>> PCL-users@ / http://pointclouds.org >>>>> http://pointclouds.org/mailman/listinfo/pcl-users >>>>> >>>>> >>>> >>>> _______________________________________________ >>>> PCL-users@ / http://pointclouds.org >>>> http://pointclouds.org/mailman/listinfo/pcl-users >>>> >>> >>> >>> >>> >>> -- >>> View this message in context: >>> http://www.pcl-users.org/PCL-octree-merging-a-sub-tree-tp4020929p4020959.html >>> Sent from the Point Cloud Library (PCL) Users mailing list archive at >>> Nabble.com. >>> _______________________________________________ >>> PCL-users@ / http://pointclouds.org >>> http://pointclouds.org/mailman/listinfo/pcl-users >>> >> >> >> >> _______________________________________________ >> PCL-users@ / http://pointclouds.org >> http://pointclouds.org/mailman/listinfo/pcl-users >> > > > > > -- > View this message in context: http://www.pcl-users.org/PCL-octree-merging-a-sub-tree-tp4020929p4020982.html > Sent from the Point Cloud Library (PCL) Users mailing list archive at Nabble.com. > _______________________________________________ > [hidden email] / http://pointclouds.org > http://pointclouds.org/mailman/listinfo/pcl-users > _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
Hi Ender1618-
I am the code sprinter responsible for integrating the Urban Robotics out of core octree implementation into the PCL code base. The code base is stable, but it is still under heavy development and there will likely be an API change in the coming weeks. Currently the code is only available in trunk, and has not yet been included in an official PCL release. For now it is possible to create an out of core tree, build levels of depth, query the tree for a list of file names, and get occupied voxel centers. The points at each node are stored in compressed pcd files. In the pcl_outofcore tools, there is one called pcl_outofcore_process, which will take one or multiple input point clouds via command line and build the ooc octree. If you have any further questions, consult my blog [1] and Justin Rosen's blog [2] for development notes, and certainly feel free to contact me off the list. -- Best regards, Stephen Fox [1] http://www.pointclouds.org/blog/urcs/ [2] http://www.pointclouds.org/blog/trcs/rosen/index.php _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
Ender,
Sorry, I'll try and give a better rundown of how the code works this weekend. Ultimately, it'd be great to get your use case, as well as to absorb any additional implementations you might write that are missing, ie LRU caching. Until then, check out our blogs as Stephen has mentioned.
There's also the pcl_outofcore_viewer that displays the tree at different levels (I still need to add the outofcore part)
On Wednesday, August 1, 2012, Stephen D. Fox wrote: Hi Ender1618- _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
This post was updated on .
I have been looking over the code for your out of core octree implementation, I am having some trouble following how things work. Are you following a methodology similiar to what is described in the paper " Interactive Editing of Large Point Clouds"?
|
|
Ender-
It builds the octree in a similar manner, sorting the points recursively into octants using 3 bits: (ZYX), where each bit is 1 if the corresponding coordinate of the point is greater than the coordinate of the midpoint. If you are not building the level of depth (LOD), then the points will be in PCD files of the leaf nodes at the maximum depth of the tree. Interior nodes will simply contain a metadata file (in a folder on disk named by the sequence of 3-bit octant identifiers, 0,1,2,...7) with the appropriate information to continue walking the tree. The LOD algorithm currently is not like the paper you cite. In that paper, the internal nodes are lower resolution ("multi-resolution") representations of all child leaves, so that walking down the tree bring an entirely new rendering. This set of points contains all the points which fall into the bounding box representing that portion or octant relative to the midpoint of the parent's node, and perhaps subsampled or downsample. In contrast, our implementation, using addPointCloud_and_genLOD builds the LOD by subtracting a uniform random sample of points falling within the bouding box from the original input cloud. Since the LOD are built recursively, the remaining points are sorted and passed respectively to the child nodes. This reduces duplication of data. Each LOD then contains a portion of the original input cloud, so to render a portion of the cloud at full resolution, one has to walk the tree in a depth-first fashion, adding the points from the lower nodes in which you are interested. There are benefits to each method, but I am planning to parameterize this to give more control over how LOD's are computed/generated. In fact, I will be adding some iterators to the outofcore library soon which will give some more flexibility in the way you have access to the individual node data as well. -- Best regards, Stephen Fox On 08/30/2012 07:49 PM, Ender1618 wrote: > I have been looking over the code for your out of core octree implementation, > I am some trouble following how things work. Are you following a > methodology similiar to what is described in the paper " Interactive Editing > of Large Point Clouds"? > > > > -- > View this message in context: http://www.pcl-users.org/PCL-octree-merging-a-sub-tree-tp4020929p4021888.html > Sent from the Point Cloud Library (PCL) Users mailing list archive at Nabble.com. > _______________________________________________ > [hidden email] / http://pointclouds.org > http://pointclouds.org/mailman/listinfo/pcl-users > [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
|
Thanks for the info. Are all your highest LOD leaves at the same depth in the tree, or does a leaf depth vary with the amount of points?
For you LOD system, from your highest level of detail is the next lower level of detail within the same octree cell bounds or is it contained with the parent branches cell bounds? In other words does each successive (lower) level of have a larger spatial bound, or does the bound stay the same with just less points stored within? |
|
Hi Ender,
> Thanks for the info. Are all your highest LOD leaves at the same depth in > the tree, or does a leaf depth vary with the amount of points? Yes, that is the idea. The tree is of fixed height, and assumed to be balanced. However, there is a bug in the computation at the moment that will be fixed when I finish the parameterized LOD construction changes that I am currently working on. This results when, effectively, there are too few of points in a given voxel to move all the way down the tree with a subtractive subsampling as I described in the previous message. > > For you LOD system, from your highest level of detail is the next lower > level of detail within the same octree cell bounds or is it contained with > the parent branches cell bounds? In other words does each successive (lower) > level of have a larger spatial bound, or does the bound stay the same with > just less points stored within? There is a misunderstanding with the notation here. Some octrees will call the "root" parent node by the height of the tree. However, we call the depth of the "root" node as 0, and the depth of the leaves is related by the maximum depth (height) of the tree -1. at depth 0: root depth 1: 8 children, subdividing the bounding box of the root into 8 cubic regions (octants) The bounding boxes of children of any given node are disjoint subsets of the space denoted by that node. -- Best regards, Stephen Fox _______________________________________________ [hidden email] / http://pointclouds.org http://pointclouds.org/mailman/listinfo/pcl-users |
| Powered by Nabble | Edit this page |
