[WIP] LiDAR Point Cloud Importer with 3D Object Recognition

LiDAR Point Cloud Importer with 3D Object Recognition

Update: Due to some other projects that are prioritizing, I won’t be continuing this addon. However, I’ve posted the code on my GitHub here: https://github.com/bchynds/LiDAR-Importer

I just wanted to start a thread here to showcase some of our development on a LiDAR point cloud importer that will handle recognition of 3D objects across a dataset within Blender 3D. This work is currently managed by our student-led research team at a university competition, so I won’t be posting many details of the backend code until after the competition is completed (Feb 2015). Until then, I thought it would be nice to share some of our development here with the community and get some of your feedback.

Screenshot of imported sample data:


What is working so far:

  • Full LASer (LAS) file importing with XYZ offset handling for data centering within the .blend scene.
  • Simple point reduction during import (nth point deletion). This will eventually change to a more intelligent system to maintain architectural integrity of the data.
  • GUI (not displayed) for dynamic post-import processing, such as managing a library for object recognition, surface/mesh generation, data visualization, etc.

If there’s something you’d like to see added or have research you think would help us in completing this project, feel free to let us know. None of us are really experts in the field and learning most of this as we go, but we can try to answer some of your questions if we can.

I wonder if Blenders tracker would solve out images into the LIDAR scene accurately? If so you could texture a mesh with images taken at the recording site.

Looks really interesting, love to see how far does this go, maybe it could be added to the master! Blender really needs a solid point cloud data system :slight_smile:

The tracker doesn’t support survey data constaints, which would pretty much be a prerequisite for doing this.

I’ve been out of the Blender scene for a while, so I had to look to see what the tracker is. Isn’t this for just camera orientation for compositing onto video? With LiDAR, we already have all the 3D coordinates XYZ data that’s returned from the laser sensor as it passes across the surface, along with other information such as the angle of the laser, etc.

Wow. Looks interesting.
How is your experience with how blender managed the point data?
I thought it was too inefficient for point clouds until some more work was done on the viewport project?

Most obvious feature I can think of is a section box to limit visibility the section of the points.
Perfect tool for modelling from the points.

Look forward to following this project.

Importing the data itself isn’t really much of a problem (except for memory limitations). If the data is spatially distant past the viewport clipping/culling limit, you’ll naturally encounter problems with seeing the data in the viewport. As far as I know, that’s really the only viewport limitation.

You can already do with this View -> Set Clipping Border (ALT+B)

Tracker solves an image to conform it to 3d space so yes. But it would be neat to match the image to the patch of point cloud like a projection paint. Perhaps then the images could be knitted into a volumetric texture instead of a geometry surface texture? That is paint a voxel around a lidar point.

Cool. Thats nice to know. I just thought I heard something about a limitation. Maybe in the datastructure of blender?
Of course if you find no limitations thats great :slight_smile:

True. But it is very unhandy to only being able to define it from a border box drawn in the viewport.
It would be much easier if you had handles on it to drag the defined area.
And to define which objects are affected by it.

How large are the data sets you are using/planning to use? I notice in the screenshot that your las tile is less than a million verts, which is pretty tiny for these types of data sets.

You are correct, these files can get extremely large (10GB+). The one in the first screenshot is what I use for quick testing, since it’s only 24.7MB and takes about 20 seconds to import. Here’s a different one with over 3 million verts (91.4MB) without downsampling:


3,265,110 vertices imported
Total time to process (seconds): 74.17932391166687

An uncompressed 10 GB .las file is probably a little under 400 million points. In the context of using lidar for VFX that is pretty typical of the edited point clouds I’m working with for a single set. The unedited point clouds for the same set can easily contain several billion points.

Yep, you’re pretty close in the math I think. Just using the later file (3,265,110 @ 92.4MB), linearly scaling it to 10GB would set the point count to 353,366,883.12 points: (3265110*10000)/92.4

I’m currently trying to find a cross platform way to determine the total and available memory of a system, so I can set some hard caps on the import limit per file. I can get the count total from the file header before even reading the point cloud data (assuming that it’s correct), and set an import percentage cap to use in the addon.

This would be an awesome tool. Are we able to try out the WIP versions? I’m working with a client that is needing to mesh large point clouds from a laser scanner (in PTS format).

Great work. Keep it up!

I suppose I should provide a quick update on the project. I had to retract my application to the competition due to some business opportunities I had to put priority to. Therefore, I haven’t put much development into the Addon since. I’ll put a GitHub repo up sometime soon and release what I do have, which really isn’t much aside the basic LAS importer.

To use this Addon, you’ll need to convert your PTS file(s) to LAS format. If you need native PTS support, point me to a PTS python library and I’ll add it in if I can.

I’ll post the Addon sometime this weekend.

BrianH,

Thanks for the reply and update. That’s a bummer, but I can well understand how other things take priority. Do you think you’ll have time within the next few months to continue the addon’s development?

Thanks.

Sorry, I almost completely forgot about this. Got wrapped up with the holidays, haha. Use it, fork it, have fun with it. If anyone has installation instructions for Windows and Linux systems, let me know and I’ll include them in the Readme. Enjoy! :slight_smile:

Hi BrianH,

Awesome! Thanks. I will give this a try.
I know this may be basic, but how exactly do you download/set this up? Do you just copy/paste the code, and save as .py?

Which of the files in the required Python lib should I use?

Thanks again.

If you don’t know how to use git, you could just click the button on the side to download the entire .zip for the LiDAR importer. Then drop that into your Addons directory. You will need the entire folder for the liblas python module as well.

Awesome, thank you. I’ll give that a shot and let you know how it goes. Thanks for putting this together. Most kind of you :slight_smile: