WALZ - WAvelet Lidar Zipper

0.1

WALZ is a framework for storage, access, visualization and analysis of 3D point clouds in general and large LIDAR point clouds in particular.

Purpose

The goals are to:

Important Classes

The most important classes are:

Use Case

Use Case 1: Convert ASCII file to WALZ file

Convert from an ASCII XYZ format ( laserlib::EFileType::EFT_XYZ ) to the WALZ format (laserlib::EFileType::EFT_WALZ):

// Set an inherited error handler. This one pops up
// error dialogs using wxWidgets
laserlib::ErrorHandler::Set( new sgis::image::WalzErrorHandler() );
        
// Create a file converter and provide the file names in the constructor
// This file converter overloads FileConverter::OnBlockIsRead and FileConverter::OnBlockIsCompressed
sgis::image::WalzFileConverterWX fileConverter( "G:\\data\\test.xyz", "G:\\data\\test.walz" );

// Create a parameter struct and fill with data
laserlib::ParametersWalz param;
param.cTruncateThreshold = 0.0;
param.cOverviewFactor = 1;
param.cnEntries = 6;
param.cLog2ChunkSize = 15;
param.cChunkSize = laserlib::io::Log2ToCount( param.cLog2ChunkSize );
param.cWaveletType = laserlib::EWT_PACKBITS;    // or EWT_DAUB4 or EWT_HAAR_UNSYMMETRIC

// Convert from input to output file with the given parameters
if ( !fileConverter.Convert( param ) )
{
        // Error if we get here
        wxLogError(_("Could not convert files"));
}

// Delete the error handler when you are done
delete laserlib::ErrorHandler::Get();

Use Case 2: Get overview over large area

Get a low resolution overview over the entire area. Implement laserlib::io::GetOverview( int const & )

Todo:
TBD

Use Case 3: Get all points within a region

Get all points within a certian region of interest. Implement laserlib::io::GetPoints( BoundingBox const&, Container& )

Todo:
TBD

Use Case 4: Evaluate the effect of the accuracy

Setting the Parameters::cAccuracy value to a larger value will make a coarser histogram. How does that effect quality and file size?

Todo:
TBD

Use Case 5: Truncating values close to histogram peaks

Truncating values close to histogram peaks will effect quality, but not very much.

Todo:
TBD

Use Case 6: Analyzing detail coefficients for object reconstruction

Values far from histogram peaks contain information on discontinuities. How can that be used for object reconstruction? E.g. set break points at the peaks and vectorize between them.

Todo:
TBD

File Format

The file format for laserlib::walz is binary (i.e. not ASCII) and is composed as follows:

ByteDescription
1-44 chars with fixed values: 'W', 'A', 'L', 'Z'
5-82 unsigned short defining major and minor file versions. Currently major=0, minor=1.
9-101 unsigned short defining laserlib::EWaveletType
11-121 unsigned short defining laserlib::ECompressionType
13--Block by block of data

Each block of data has the following structure:
ByteDescription
1-41 unsigned int. Bytes to follow: The size of the block after this unsigned int has been read.
5-526 double defining bounding box as top left origin (x0,y0,z0) and size (dx,dy,dz)
53-601 double defining point accuracy in [m], e.g. 0.01.
61-641 unsigned int defining the number of points in the block
65-681 unsigned int defining the size of the compressed buffer
69-The compressed buffer (size read above)
After bufferIff EWT_PACKBITS is used: 3 unsigned int defining the bit length of each coordinate

Todo:
The file format is not settled and will change from time to time.
Todo:
All bounding boxes should be at the beginning of the file together with pointers to where the blocks start
Todo:
Bit length per coordinate should only be included if laserlib::EWaveletType == EWT_PACKBITS
Todo:
The file format does not consider least(most)-significant-bit (LSB/MSB) or byte order

Generated on Fri Feb 20 22:49:51 2009 for WALZ WAvelet Lidar Zipper by  doxygen 1.5.6