Custom Processing of LiDAR Data: An ENVI LiDAR API Example
I recently presented a webinar about performing analysis on point cloud LiDAR data. This webinar was focused on how our ENVI LiDAR product can be extended using custom extensions written in IDL using the ENVI LiDAR API. A couple of my colleagues pitched in by providing me with some cool extension examples that can be used to extract valuable information from a LiDAR point cloud. Today, I would like to show one of these extension examples and walk through how it works. The extension I would like to show can be used to extract building footprints from a LiDAR point cloud. This example actually works quite well with low resolution point cloud data. So, if you are working with a point cloud that has fewer than 5 points per square meter, this method of extracting information might be of interest to you.
To understand how the extension works, let’s start by talking about LiDAR point cloud classifications. The American Society for Photogrammetry and Remote Sensing(ASPRS) maintains specifications for LAS file LiDAR (or other) point cloud data. ENVI LiDAR supports ASPRS LAS Specification Version 1.4. This specification maintains standard classification values for points in a point cloud which correspond to various different features such as ground, vegetation, buildings, and power lines. When a LAS file is processed in ENVI LiDAR, the classification value for each point in the point cloud is determined based on this specification. The table below shows the classification values that are computed when a point cloud is processed in ENVI LiDAR. Note that the buildings correspond to a classification value of 6. We will use this value in our extension to extract the building footprints.
When run, the extension first prompts a user to open a classified LAS or LAZ file. The extension then continues to run, scrolling through the point cloud, taking any point with a classification value of 6 and setting the point to an elevation of -10 meters, which is well below the elevation of the rest of the scene. It then writes out a new LAS point cloud file with buildings set to an elevation of -10 meters. The IDL code that makes the extension work is shown in the image below.
The image below shows what our new point cloud looks like with the building footprints dropped to a constant elevation of -10 meters. With our building footprints now set to a constant elevation of -10 meters, we can use the out-of-the-box functionality of ENVI LiDAR to produce a Digital Surface Model (DSM) of our scene.
The DSM produced from this point cloud can be brought into an image analysis software package, such as ENVI. There are a number of methods that could then be used to extract the building footprints, but I chose to run an unsupervised IsoData classification.The image below shows the extracted building footprints with a corresponding WorldView-2 image. In the portal window, you can also see the DSM that was produced from the point cloud. As you can see, this method worked quite nicely to extract the building footprints from the scene.
The cool thing about this simple extension is that it opens up a lot of possibilities for working with point cloud classification values. With a few minor tweaks to the code you could easily extract other features of interest from the scene. The ability to create custom tools is pretty cool because the sky is really the limit for what you can do with your LiDAR data. If you would like to learn more about the ENVI LiDAR API and see some other examples of custom extensions, you can check out the full recording of the webinar I gave last week here: http://t.co/mBVj1P6BZU.