LizardTech.com

Posts Tagged ‘MG4’

LiDAR Compression at ILMF

Tuesday, March 9th, 2010

Several of us just returned from the ILMF 2010 conference in Denver, Colorado. What was near and dear to my heart there was the interest in LiDAR compression. Several presentations focused on this (linked items below are PDF documents):

  • Storing and Managing LiDAR Data” by Jon Skiffington (LizardTech)
  • “Compressing LiDAR Waveform Data” by Dr. Charles Toth (Ohio State University)
  • “laszip: Lossless Compression for LiDAR in LAS Format” (poster) by Dr Martin Isenburg (Lawrence Livermore National Laboratory)
  • LiDAR Compression with MrSID Generation 4” by Michael Rosen (LizardTech)

My sense from talking with the other presenters is that this is something for which the industry is hungry. Dr. Toth is researching ways to compress waveform data (as opposed to the spatial and other attributes of the point cloud itself). He presented two approaches:  one based on a wavelet transform and another based on compressive sensing.

Dr. Isenburg presented a poster session describing laszip, a compression mechanism for LAS files. He described it to me as being primarily focused on archiving LAS data and so rather orthogonal to our efforts, which emphasize accessibility and integration. Also, laszip is free.

Mr. Skiffington’s presentation focused on our LiDAR Compressor product while your author’s presentation gave an outline of the motivation for and an algorithmic explanation of the underlying MG4 technology.

I had several people asked for copies of my presentation so I’ve provided the link above.

Michael Rosen
LizardTech, Engineering Mgr
mrosen at lizardtech dot com

MrSID Generation 4 gains support

Friday, November 20th, 2009

We’re pretty excited. Last week we announced that version 11.01 of Global Mapper supports LizardTech™ MrSID™ Generation 4 (MG4) among its many supported elevation formats. Mapmakers who use Global Mapper will now benefit from being able to load point clouds compressed using LizardTech Lidar Compressor™ into Global Mapper.

Earlier this week we were able to announce that Merrick & Company has similarly integrated MG4 support into its MARS® (Merrick Advanced Remote Sensing) software application. Users of MARS 6.0, available now, can load MG4 files into MARS for visualizing and managing LiDAR terrain datasets.

How are they doing this? They’re using LizardTech’s MrSID Generation 4 Decode SDK, a free download.

Oh, and we should remind any ArcGIS 3D Analyst users that MG4 files are supported via LizardTech’s free MrSID Plug-in for ArcGIS 3D Analyst (http://www.lizardtech.com/download/dl_options.php?page=plugins), so you can work with MG4 files the same way you work with LAS files to create contours and surfaces.

The way we feel about all this is: The more the merrier.

LizardTech Engineering’s introduction to LiDAR Compressor

Monday, July 13th, 2009

This morning, July 13, 2009, LizardTech unveiled LiDAR Compressor. This application allows consumers of LiDAR data the same benefits LT has provided raster consumers for over 10 years. The press release describes some of the product’s overall capabilities and benefits. I was privileged to be the project manager for this effort and in this post will describe the product from an engineering perspective.

At the lowest level, the application leverages our experience doing wavelet-compression. Our specific approach is the subject of a patent application and I won’t attempt to describe it in detail. However, a concise summary is that we do a 1D wavelet transform on each of the channels of interest (x, y, z, intensity, etc) and then use the same compression techniques we use in our MrSID and JP2 implementations (bitplaning, entropy encoding, appropriate quality-weighting of the bitplanes). 

At the SDK implementation level, we depend on several packages from the OSGeo stack. We use liblas to read data out of the LAS files. LT is proud to be the first (to my knowledge) commercial application of this industrial-strength library. (Regular readers of our blog may recall that last March we supported the OSGeo Code Sprint in Toronto; liblas was certainly part of our interest there!). Liblas, in turn, uses libgeotiff to decode the CRS information in the LAS files and the now venerable GDAL to translate that into a WKT that the rest of us can understand. The result is a C++ SDK available to our application … and soon to yours too (decode only).  We’ve got distributions for both Windows and Linux which will be available on our developer’s site any day now.
 
liblas and GDAL in LiDAR Compressor

At the application level, the underlying technology has changed as well. Our flagship product, GeoExpress, is written in managed C++ using the Windows Forms library. Our most recent products (GeoViewer and Lidar Compressor) are built in C# using WPF. Our experience was that this change allowed much greater developer productivity and the creation of more flexible (not to mention prettier) applications. For example, I suspect we would not even have attempted a ListView with dropdown boxes in the header (all dynamically populated based on the selected input text file — see Figure 1 below) if we had to implement it without XAML support:
 
Importing a text file

Figure 1: Importing a text file.

Additionally, the application makes extensive use of the WPF/.NET threading support. This allows the application to achieve two design goals: (a)it provides first class support for text-based LiDAR files and (b) it can run several jobs at once. 

Before we can do any kind of processing (e.g. compressing, viewing) we need to tell the file’s reader how many points there are and what the overall extent is. For LAS files (and MG4 files) this is no big deal because everything we need to know is stored explicitly in a compact header. For text files, it’s not stored at all and must be calculated which involves reading the entire input file. This “initialization” (see figures 2 and 3 below) can take a long time and needs to happen in the background.

Initializing

Figure 2: Text file initializing (in the background, so the application is still responsive.)

A few minutes later …

Extents

Figure 3: We’ve read the 321 Mb text file and now know the extent and number of points.

Running several jobs concurrently in and of itself is not a hard problem. The difficulty comes when we consider how to provide feedback (progress bar, log messages), the ability to cancel and deal with failures. For historical reasons, GeoExpress runs its compression work in a separate process. This provides excellent isolation (uh,… that’s part of the ‘history’) but complicates tight integration with the parent application. This is part of the reason we could not include the ability to run concurrent jobs in GeoExpress 7. Lidar Compressor uses WPF’s built in BackgroundWorker class to manage the worker threads.  This vastly simplifies the integration tasks. The result is an application that leverages the multi-processor capabilities of modern hardware as well as a UI that is simple to understand and use (see Figure 4 below).
 
Five jobs running simultaneously

Figure 4: Five jobs running simultaneously.

Everything the user sees is pure WPF except for one thing:  the viewer. The viewer is a WPF wrapper around DirectX. There’s a lot of math that goes into manipulating 3D objects. DirectX provides an API to do this for us and, very significantly, runs it on the graphics card (i.e. no burden on the CPU). So, the good news is that rendering is blazing fast. The bad news is that DirectX 9 D3D (which is what we use) gets very finicky when it comes to older OSs (that is, XP), drivers and hardware. We were not able to get a really satisfying resolution to when DX would fail and why, but we were able to guard against it so that the application handles the failure gracefully.

3D_sid_o

Checkout the free trial and let us know what you think.