Notes from visit to Leica, Switzerland on 11/Aug/2008.

Contact email:

  • sensors-emea@…
  • Various support engineers at Leica. The one that trained us was Barbara Haebler.

FTP site (for updates, etc):

Overall system design and comments of note

System is a Leica ALS50 (phase II) LIDAR. There is an accompanying 39 megapixel [7216x5412, 12bit] digital camera, referred to as the "RCD".

A GPS receiver and IMU (brand?) are included. The LIDAR, RCD and IMU, are mounted on a shock plate to protect it from strong movements - this will also isolate the IMU from the hyperspectral imaging sensors.

The IPAS controller (name correct?) allows for event recording, amongst other things. Phil plans to use this to record frame sync pulses from Eagle and Hawk.

There are also some associated control and display devices for operator and pilot usage.

The wavelength of the radiation is 1064nm (from Leica Document ALS50 PII Tech-Note - Multiple Return with Intensity Technology.pdf)

How it works

The LIDAR works by firing a (4ns or 9ns) laser pulse downwards and measuring the roundtrip time for the light pulse to return, then converting this to a distance. The pulse isn't modulated by a carrier - it's just an on/off pulse. There are four timing cards ("range cards R1-R4") running for a pulse, so up to 4 returns can be detected (R4 actually detects the last return rather than the 4th?). The system has a "MPiA" (Multiple Pulses in the Air) mode, which fires two pulses evenly separated, rather than waiting for the first to come back before firing another [SPiA mode, times out in case the pulse is eaten]. To measure this, there are actually two banks of timing cards (bank A and bank B, both with R1-R4 cards), so there are 8 timing cards in total.

A minimum time separation between two returns means the minimum distance between two returns must be at least 2.7m for them to be counted as independent. The expectation for the number of returns is 1 return ~100%, 2 returns ~10%, 3 returns ~1%, 4 returns ~0.1% of points - obviously this varies with the terrain. When there are 4 returns, each range card measures the time of the return pulse. When there are less than 4 returns, R4 is a second measurement (not a copy of) of the last pulse - i.e. if there are 2 returns, you will have R1, R2 and R4 (= re-measurement of R2).

The intensity of a return is measured only for the first 3 returns (R1-R3), and is an 8 bit value (0=dark (water), 255=bright) relating to the reflectivity of the illuminated surface. The value is amplified by an automatic gain controller, and is not related to a physical measure (can it be?). The intensity can be used in various processing algorithms to help distinguish transitions between surfaces. The AGC tries to keep the intensity in the range 100-150 or so.

The laser is scanned across a (up-to) 75 degree swath by an oscillating mirror. Due to the acceleration/deceleration of the mirror, this produces a sinusoidal pattern to the trace on the ground, with the highest density of points at the peak and trough of the sine wave (i.e. at the edges of the swath). If the swath width is set to less than 75 degrees (45 degrees recommended), there's a roll compensation mechanism that tries to smooth out small roll movements by using the remaining freedom of motion. The scan rate of the mirror is dependent on the FOV angle (36Hz for 40 degree FOV, 24Hz for a 75 degree FOV, calculate with 412.33 * FOV-0.6548).

The laser is an 8W class 4 laser, operating in the infrared range. The divergence results in approximately a 22cm spot on the ground when fired from 1000m up.

Controllable parameters:

  • laser intensity (0 -> 8W output), controlled by operator as a percentage output. Has safety cutouts if the light level at the ground could cause eye damage.
  • altitude (kinda a parameter ;) ) - minmium of ~650 up to ~2000m (after 2km, you start getting poor returns on forests, etc, the real limit is up to about 6km in ideal conditions)
  • ... pulse frequency, scan angle, etc [TBD]

Automatic Gain Control

The intensity of a return is measured (R1-R3) as an 8 bit value (0=dark (water), 255=bright) relating to the reflectivity of the illuminated surface. The value is amplified by an automatic gain controller to keep it within 8 bit range. The value of the AGC is also measured as an 8 bit value and is recorded per pulse as the "gain control voltage" in the raw files. Typical values are 110-180.

The AGC is controlled automatically in our LIDAR, but operates on a threshold basis. If there are N (64?) low intensity points in a row, the AGC will step up one level. If there are M (32?) overbright points in a row, the AGC will step down. This may lead to visible steps in the image intensity, but isn't supposed to be a big problem. Look out for streaky areas though ("contact support if you see this" - though not sure why).

RCD camera

The system has a 39 megapixel digital camera, referred to as the "RCD", with the following characteristics:

  • 7216x5412 resolution, 12bit [=~57MB raw]
  • 60mm lenses (changeable), with 44.2 degree x 34 degree FOV
  • pixel size 6.8microns (= ~15cm ground resolution at 1350m)
  • 1/4000 exposure time, 2.2s per frame
  • serial number 21
  • shutter is curtain style, taking 8ms to open and close, so there's a 4ms time difference between the top and bottom of the CCD stopping acquiring light

Logfiles contain various handy info, notably the image event file contains GPS time, pos/att and picture id

Calibration files are required and supplied by Leica (dark, gain and camera parameters).

File name convention is: DDHHMMSSXXXXXXGN.raw

  • DD = day of month
  • HHMMSS = timestamp
  • XXXXXX = incrementing picture id
  • G = gain (1-4)


This apparently takes another week long training course. We do have the basic software to do it but limited knowledge. Basic process is to determine the camera parameters, correct and overlay the images, keeping ideally only the most central parts. You then have to manually check through, especially along seams, and manually move the seam line in some instances (e.g. when perspective effects result in odd errors due to the seam hitting a tall building).


Perform calibrations frequently at the start of the period to get a feel for how they hold. Reduce down to fit circumstances over time.

Mission planning considerations

Water absorbs IR, so expect poor returns from wet surfaces. Ideally one should wait for a whole dry day after rain.

For differential GPS, aim to have a base station nearby (within 20km) and ideally in center of the scene. Base station data should be recorded at 2Hz

Ideally choose a time with a good GPS constellation (lots of satellites, PDOP >= 4).

Consider terrain and minimum target size to determine required point density. Steep terrain may cause shadowing effects due to perspective.

Consider reflectivity of surface - lighter surfaces need less laser power. Too high a power means intensity overflows on the reflection, which mess up the range - AGC should deal with this for large areas but it should be considered in planning, particularly for small bright targets on a generally darker background. Assume 10% reflectivity is typical.

Recommended to do a figure 8 loop at the start and end of the data acquisitions to make the IMU happy. Need one at the end for reverse navigation processing.

Selecting a smaller FOV gives a higher resolution since uses a faster scan rate. With a large FOV shadowing may occur in the data.


Required items for processing

Items required from every flight:

  • GPS and IMU data (including a basestation if not using PPP)
  • Raw laser data
  • Logfiles from LIDAR
    • Flight logfiles are useful too, if the LIDAR flight planning software is used
  • RCD & webcam images
  • Pressure and temperature measurements at the plane position above the site [this affects how long it takes the laser light to move through the air]

Items required in general:

  • calibration (see elsewhere)
  • lever arm measurements


Use IPAS Pro to extract GPS, IMU and laser data from the raw files.

  • probably worth having the real time navigation info (doesn't add a lot of processing time)
  • during extraction, view the listing and verify the lever arms are correct (IMU one should never change).
  • look out for data gaps (listed in log)

Most Leica systems are mounted "laser backwards" (cables will be at the rear if this is so) - ensure that z=180 in the IPAS Pro aircraft tab.

See other pages on navigation processing as they cover this already.

General processing

The general processing procedure is as follows:

  • Trajectory processing
    • see the pages on GrafNav and IPAS processing
  • ALS post processor to convert raw LIDAR scan data to binary LAS point cloud
    • see the page on the ALS post processor
  • QC of the processed data
    • check % of first returns - should be >95% in most cases
    • check intensity images look ok (like real world, no streaking etc)
    • check neighbouring flight lines match up well
    • basic classification or filtering to remove noisy points


Things that may go wrong

In flight

Flying too low - if the LIDAR detects that the laser power may be too high for eye safety, it will cut out the laser automatically (if you're a seagull looking up, bad luck, it only accounts for ground height).

Flying outside the "range gate" (acceptable ranges of distances) may cause similar effects. Going too high will tend to make the edges of the swath drop out first (due to path length).

Automatic gain control weirdness - the measured intensity is returned via an AGC which may step up or down depending on the returns from the ground. Measured return intensity should only be used as a guideline rather than a real measurement.

Laser power too high - if the intensity overflows (reaches 255), the intensity based range correction will probably be wrong. For example, a freshly asphalted road with bright white reflective (overflowing) strips may appear with the strips appearing to float up to 20cm above the road surface.

Water absorbs IR, so expect poor returns from wet surfaces. Ideally one should wait for a whole dry day after rain.

In processing

Most Leica systems are mounted "laser backwards" (cables will be at the rear if this is so) - ensure that z=180 in the IPAS Pro aircraft tab.

Streaky intensity images - "bad, contact support for guidance". These will probably cause range errors due to the intensity variation, no idea what the cause would be as yet..

Poor accuracy at edges - consider trimming the swath width (reduce processed angle) to cut off bad edges.

Initial QC for when data first arrives for processing - raw scan data files should all be the same size, except for the last file.

Other error sources

Atmospheric effects; the light path may bend due to atmospheric refraction, density effects, etc causing the laser to hit the ground earlier or later than expected, or in a different position. This will be most noticeable at the edges of the swath where there are longer path lengths (and more atmosphere to pass through) and may look like the swath curls up or down at the edges (path length error), or may look like compression or stretching of the edges (if there is horizontal divergence). The error was claimed to be a fraction of a meter at 6km altitude (i.e. not well bounded). Measurement of temperature may help with this effect, but was said to be a minor value.

Range correction error; if the range correction is wrong, the electronics will measure the path length incorrectly. Points at nadir will be in error vertically only and points at the edge will have a vertical and horizontal error. The error will make a flat piece of land look like a smile and the nadir point will be below the expected land surface (one can only get "late" measurements?).

Torsion (of mirror) error; the mirror may be out of the expected position at the edges of the swath due to it bending under high acceleration. There will be no error at nadir (no acceleration) and errors at the edges, inducing a smile effect again, but with the nadir at the correct height. Range errors should be corrected before working on the torsion error, and the nadir point should be used for the range correction as there will be no mirror torsion effect there.

MPiA mode errors: if a seagull gets in the way of the second pulse before the first pulse has returned, things will mess up. On an edge of a very unluckily placed cloud, this would look a bit like the cloud merging into the ground. Presumably rare or minor.

Initial QC

See if the lines are too short or if the point cloud has poor return %s. If so, check the following (look at webcam images for hints):

  • clouds
  • height problem ("range gate" issue)
    • eyesafe shutoff (too close to ground)
    • too high may give dropouts
    • find altitude over ground (measured GPS alt - geoid-spheroid height) and see if it's within the min & max ranges
  • check the speed they were flying at is not too fast
  • check the images in TerraScan
  • look at start/stop times of points at end of flight line – do these match the flight logsheet

Also check if suspiciously large number of return %s for R2, R3 and R4. This could be due to flying in hazy conditions (check the webcam images). When you view the data check for extra surfaces (e.g. 200m above the terrain - will be obvious), and view by echo to see where the high number of R2, R3, R4 occur.

Laser power too high - if the intensity overflows (reaches 255), the intensity based range correction will probably be wrong. For example, a freshly asphalted road with bright white reflective (overflowing) strips may appear with the strips appearing to float up to 20cm above the road surface.

  • filter out incorrect points (based on high intensity and height difference from locality?)
  • also, if you observe odd spikes, check for intensity over 150 - this may indicate a two-peaked response with the first peak being 150 (and being the detected one) and the second being 255 (overflow), causing the effect above

Full QC procedures

The general processing data QC-ing should primarily take the form of viewing the intensity images to check for striping and to see if they look “correct” i.e. Does it look like the area surveyed. The data should be loaded into TerraScan and checked that all the flight lines line up OK both spatially and vertically (check cross sections around the image).

The main things are:

  • profiles
    • profiles along averaged areas
    • profiles along a track (e.g. following a ditch / feature in the surface)
    • narrow profiles across features where swaths overlap
    • try to select profiles over flat hard features (roads, runways, etc) to lessen perspective effects
  • comparisons against GCPs
    • requires the point cloud to be converted to a surface - also useful if no local DEM available for hyperspectral instrument processing.

We may want to do some initial classification (or filtering) of points to remove noisy points, but we shouldn't do a full classification. See classification procedure below.


Calibration procedure is boresight first, then range correction and finally checks, validation and fine tuning

Parameters needing calibration

Boresight parameters (pitch, roll, heading).

  • Angle between straight-down and what the sensor thinks is straight-down, as it's mounted in the plane.
    • Angle between a line from the sensor head (mirror centre) to the point on the ground at the centre of the swath and a line from the sensor head to the centre of the spheroid (or the reference frame's Z axis?).
  • Measured in calibration procedure
    • We need to do this

Pitch error slope.

  • The mirror will not be mounted exactly flat to the laser so, as the mirror moves, the pitch of the beam will change by a small amount.
    • Roll and yaw either have no error slope (laser position central? geometry means no effect?) or a negligible effect (presumably, as there's no parameter)
  • Measure pitch at nadir and at swath edges to determine how the pitch changes - the first order for this is is the pitch error slope.
  • Measured in calibration procedure
    • Correct pitch error (at nadir) first
    • We need to do this

Lever arm measurements:

  • IMU -> sensor head (centre of mirror?)
    • Measured in the factory and provided by Leica
  • IMU -> measurement point [front left corner of the casing]
    • Measured in factory and provided by Leica
  • measurement point -> GPS antenna centre
    • We need to measure this one with a survey

Range offset correction (+range card calibration).

  • Correction for the slightly different timing of the 4 range cards in both banks in the system.
  • At a set distance, the range cards should all return the same result.
  • Measured by Leica but also measured and verified in calibration procedure. (see below)

Mirror torsion parameter.

  • This measures how much the mirror flexes at the edges of the swath, when under high acceleration, putting it out of position.
  • Later Leica mirrors (including ours) are much stiffer and apparently do not flex.
  • Fixed very high (negative) value (-100,000 N?) meaning "no measurable flex".
  • Can be measured during the calibration procedure, but should never be necessary.

Factory calibrated

Intensity Based Range Correction (IBRC).

  • A range correction based on the reflectivity of the target object ("reflections are slower on darker objects"? perhaps this is more that a lower intensity return may take longer to be detected - i.e. takes longer for enough photons to come back to exceed the detection threshold).
  • Measured in factory and provided by Leica.

Transitional Pulse Rate.

  • 2 pulse widths are used (4ns and 9ns) depending on the pulse frequency (higher frequencies require a shorter pulse time), with the system switching over to a shorter pulse at a set frequency (around 120KHz?). This parameter measures the time difference for the pulses' return.
  • In our system, this distance is of the order of 11cm.
  • Measured in factory and provided by Leica.

Encoder Offset (scan angle correction).

  • The rotating mirror has a (optical?) shaft encoder attached that tells it the position of the mirror. The mirror will not be mounted exactly at nadir relative to the shaft encode and this value measures the offset between the centre of the scan pattern and the centre point of the encoder.
  • The value is measured in "ticks" and will appear quite high as the shaft encoder has a high resolution (order of millions of ticks).
  • Measured in factory and provided by Leica.
  • Can be easily checked on the ground by following this procedure:
    • Start up the system on the ground (no GPS or installation required)
    • run BIT mode
    • turn off 'Position In' switch on the front panel - this will allow to snap the mirror on the centre
    • Read F4's tick column, it should show real scan offset and it should be within +/- 500 ticks from the -10800 value
    • turn on 'Position In' switch when finished

Calibration site requirements

Calibration flight pattern consists of:

  • 2 crosses at different heights (700m and 1350m)
  • a line, opposing line and a parallel line (at 2300m)
  • the parallel line should have a "sizeable" overlap (50%?)

The features required for a perfect cal site are:

  • Need a source of multiple returns - tallish (15m) trees in a forest are best. Try to include a treed/forested area in some parts of the flight lines (doesn't have to be in all, nor in the central area). The multiple returns are required for the range card calibration (see below).
  • Straight, flat areas made of a hard substance that'll generate only one return pulse. Roads or runways ;) These are used in the boresight (roll) and range calibrations.
  • Sloping areas are used to detect pitch and heading errors in the boresight calibration.
    • A road running up a hill is good for pitch (vertical change in surface easily found in the image). These are good for measuring along-track shifts.
    • Slopes with peaks (house rooftops are ideal) with the peak cutting across the line of flight ( ---> /\ ). Again good for measuring along-track shifts.
  • An accurate ground survey (see below).
  • Slow overflight for maximum point density.

For range offset calculation

GCPs required, ideally 1cm vertical accuracy (between all measurements rather than absolute?).

Around 30-40 GCPs should be within the area covered by a 14 degree swath (+/- 7 degrees either side of nadir) taken at an altitude of ~750m [= ground swath width of about 180m].

General accuracy measurements

Other GCPs (number?) should be scattered around a wider area within the full swath width - typically run at 45 degrees [=620m wide on ground @ 750m alt] or to a max of 75 degrees [=1150m], though 75 degrees will introduce more errors..

Quality, accuracy, etc

A nominal quality of 5-10cm (vertical) is suggested as a reasonable output. If one has GCPs, it should be possible to do better (EA claims 1-2cm).

Boresight calibration

The basic method is similar to the imaging instruments, but exploits the measurement of range. A set of flight lines and data points are chosen, in a particular order, such that specific calibration parameters are isolated.

Manual procedure and QC of automatic procedure


Take opposing flight lines. If there is a pitch error, the lidar will be sensing pulses ahead/behind (along track) the nadir point. There will be a small overall range error, but the main effect will be that the data is shifted backwards/forwards of where it should be.

Search for areas close to nadir where the height of the surface changes in an clear and predictable fashion, with reasonable sampling density (e.g. a road leading up a hill, or rooftops with their peaks going along-track).

Take along-track profiles on both opposing flightlines.

  • If there is no pitch error, there will be no offset and the resulting profiles will coincide (the hill profiles will overlay and look like /).
  • If there is a pitch error, the profiles will be offset along track and the resulting profiles will not coincide (the hill profiles won't overlay and will look like / /). By measuring the along-track offset, one can estimate the pitch error.

One must use profiles close to nadir to avoid being affected by the pitch-error-slope parameter (see below).

Repeat until the pitch error has been removed.


If there is a small roll error, surfaces will be tilted up on one side of the swath and down on the other. In opposing lines, these errors will be on different sides.

  • Take opposing flight lines.
  • Find flat surfaces going across the swath (e.g. a road going across-track).
  • Take across-track profiles on the flat surfaces
  • If there is a roll error, the profiles will not align with one another and will have a X shape rather than an overlapping - shape (the flatter the X, the smaller the error)

Vertical displacements due to roll error will be most noticeable at the edges of the swath. For small errors, the nadir point will be roughly the same, for large ones, there will be some across-track shift, but that will be much harder to measure than the vertical errors.

Heading / Yaw

If there is a heading error, the left side of swath will move backwards while the right side will move forwards (or vice versa). If you reverse the direction of flight (ie. with opposing flight lines), these errors will overlap (left side down in one direction matches right side up in the other) and not be visible.

  • Instead, take two parallel flightlines with 30-50% overlap (more overlap = less chance of detection)
  • Along the mid line of the intersection, find areas where the height of the surface changes in an clear and predictable fashion, with reasonable sampling density (e.g. a road leading up a hill, or rooftops with their peaks going along-track).
  • If there is an along-track shift between features, there is a heading error (size of shift proportional to error)
  • If there is no error, features should overlap
  • Adjust until lines up

Pitch error slope

The mirror will not be mounted exactly flat to the laser so, as the mirror moves, the pitch of the beam will change by a small amount. The resulting errors are along-track offsets just like the pitch errors, but varying, with no error at nadir and maximum error at the edges of the swath.

To correct this, first correct the pitch error at nadir (the overall pitch error), then determine the pitch error at the edges of the swath. This will let you compute an error slope (first order linear).

  • Straight, flat areas made of a hard substance that'll generate only one return pulse. Roads or runways ;) These are used in the boresight (roll) and range calibrations.
  • Sloping areas are used to detect pitch and heading errors in the boresight calibration.
    • A road running up a hill is good for pitch (vertical change in surface easily found in the image). These are good for measuring along-track shifts.
    • Slopes with peaks (house rooftops are ideal) with the peak cutting across the line of flight ( ---> /\ ). Again good for measuring along-track shifts.

Mirror torsion error correction

This shouldn't need to be done with newer LIDARs, but included here in case. Leica suggests checking for torsion errors if there seem to be problems in the boresight calibration and reporting to them if found.

Visible sign of torsion error is a smile effect.

Detect torsion by:

  • choose highest altitude pair of crossing lines
  • pick a point at nadir on one swath and at the edge on the other
    • torsion will be at max for the edge swath and at 0 for the nadir swath
  • take cross sections to see if there is any consistent vertical difference

Automatic method (using Attune)

Note that Attune apparently crashes if you use >400MB files, and crashes plenty anyway - save often! Do an initial run with just a few tie points to make sure the lines will work.


  • In ALSPP uncheck the “average last returns” option in the settings dialog.
  • Check the output as attune files in the outputs dialog
  • Add all the flight data into the ALSPP, including the BIT mode data, and run the RangeCardCal program from the utilities menu. Select the use all SCN files option when prompted.
    • This gets the differences for range card banks A & B. Takes differences R1-RL and averages them. Similarly for R2-RL, R3-RL, R4-RL.
  • Enter range offset A1 as 0 since it is unknown.
  • Enter the output Range offsets into the range corrections dialog of ALSPP. Only need R1 for A and B for now.
  • Uncheck the BIT mode data (we don't need to process this) and run the ALSPP processing.
  • Look at the filesizes of the output data. If the LAS files are over 400MB in size then Attune will not run. If this is the case re-process with only the part of interest of the line.
    • Part of interest will be the area where all flight lines overlap.
    • See the notes on ground classification
    • we do this so that we only use points on the ground in the tie pointing (since we don't want errors due to perspective or shadowing)
  • Start up Attune
  • Add ALS data -> add the real ATN.LAS files from the ALSPP output
    • The suggested pixel sizes (from top level calibration pdf) are 0.3m for 750m, 0.4m for 1350m and 0.8m for 2300m.
  • View the image pngs to make sure no data holes. (Some are OK. Re-load using a different resolution if too many holes. e.g. Try 0.35m for 750m)
    • 'a' centres the image
    • '+/-' to zoom in/zoom out
  • Now select tie points. We use streets for tie points since these should be on the ground so no (little) effects due to look angles and also has slow varying topography see HINTS below
  • Open tie point editor in Attune.
    • Press 'm' to measure a point and then click where you want it. Do this for each image (selecting the same point). Then press 'sample all' to record the locations.
    • To change one, re-measure it and then just click 'sample point'.
  • Save the project after selecting 50-100 points. (Attune is very crash-able, save often)
  • Select points on roads with uniform intensity. Use lines of roads and field boundaries to get the same place in each image. Don't use buildings as markers due to perspective/shadow.
  • Edit project file properties.
    • Torsion constant =-100,000
  • Image observation Weights 0.2, 0.2, 0.1
  • Atmosphere same parameters as in the ALSPP processing
  • Set class as ground -> 2 (ground is usually class 2)
  • Adjustment criteria maxiter=50, angular (?)=1.00e-08
  • Click Solve Calibration parameters and unselect Torsion, just want to solve roll, pitch and heading.
  • Then analyse the adjustment
    • A good result would have aposteriori reference of between 1 and 2.
    • No. of observations of 300 is good
    • Standard deviations of around 0.00001 for Roll and Pitch, 0.00005 for Heading.
    • Average residuals of 25cm for X and Y, 5cm for Z is good.
  • If the above criteria are not met (roughly...they are only guidelines)
    • Analyse results and remove or adjust any points with large residuals
      • Open all the images + point editor and then can select a point from the solution list and zoom to it on the images
      • You could just remove the point from one or two images (especially the high altitude images) or from all images. Then recalculate the network adjustment and iterate until Aposteriori reference is approx 1-2 and average residuals are 0.25,0.25 and 0.05.
      • Can remove the points from the lower resolution images if it will help. We want more measurements in the higher resolution images than the lower ones if they are unclear to measure in (so don't just measure in them for the sake of it)
    • When happy save the solution
  • Return to ALSPP and add the Roll, Pitch and Heading values to the boresight calibration dialog. Change the outputs to LAS not Attune. Change the output directory too. Re-run the processing.
  • Analyse the results in TerraScan
    • Check cross sections etc for misaligning flightlines.
    • To load all flightlines will probably need to use a fence (this is like a region of interest)
    • To check the Roll accuracy – check opposing flights and look at cross sections at either end of the swath for a tilt (across track).
    • To check the Pitch accuracy – check along track on slopes for offsets
    • To check the Heading accuracy – check the parallel lines for offsets
  • The boresight parameters can be manually twiddled (rather than using Attune) by reprocessing in ALS, changing the R,P,H values one at time. Only process parts of the flightlines for speed benefits.

After completing the Attune process, save the parameters as a reg file (for reference - you will need to manually transfer the numbers to avoid overwriting other parameters). Then check the boresight parameters using the manual procedure above and adjust if required.


It may be useful (proved so in calibration site of little rissington) to copy the PNGs generated by Attune and draw onto them. Use a noticeable colour (e.g. red) and draw straight lines along features which will not change (or only negligably) between images. For example, draw along field boundaries into, and over, the roads or along runways from the centre of the white cross to the centre of the cross at the other end of the runway. Also draw along road edges at junctions to create crosses where you can select the centre as a tie point. Doing this on each image will allow much better precision of selecting tie points.

Selecting tie points

  • Better to have fewer good tie points than many bad ones
  • Focus mainly on the lower altitude lines
    • Place tie points on the higher altitude lines only when you're really sure of them - they will always have a greater error due to the pixel size.
  • Tarmac roads are good, but:
    • avoid paint on road (intensity problems and height difference)
    • choose continuous homogeneous areas
  • Avoid:
    • building corners (perspective)
    • grass (multiple returns, moves)
    • cars/people (moves)
    • areas with streaky intensity (likely to have ranging errors)
  • Try to select areas where you can use the nearby geometry to help you
    • e.g. follow straight road edges to where they intersect another feature, so you have more than just one pixel to guide you to the intersection point in other images
  • avoid using building edges (perspective shifts)
  • Location of tie points
    • Focus mainly in the core intersection area
    • Points around nadir
    • Points around the edges of the swath
    • Some generally scattered around
    • Some outside the core intersection area
    • Try to include some on slopes(?)

Range offset calibration

Range offset correction (+range card calibration) is to correct for the slightly different timing of the 4 range cards (R1-R4) in both banks (A & B) in the system, and to correct any overall ground offset.

Two datasets are required:

  1. A real dataset with:
    1. a source of multiple returns, such a forest (for step 1 below)
    2. a strip with well known distances (for verification)
  2. BIT (Built-In Test) mode data, where the range cards are all electronically fed with identical fake data representing the same distance. All cards should give the same result, so differences are used to calibrate each card against the others.

First, we need to determine the timing differences between the 4 range cards (R1-R4) in each bank. To do this, we use a dataset with multiple varying returns present - we need combinations of 2-4 returns (forests are good for this, being tall and porous enough to give multiple returns). When there are less than 4 returns, R4 is a second measurement (not a copy of) of the last pulse - i.e. if there are 2 returns, you will have R1, R2 and R4 (= re-measurement of R2). This is exploited to compute the difference in timing between R2 and R4 (averaging many 2-returns). Similary 1-return and 3-return pulses are used to measure R1-R4 and R3-R4 differences. The end result is a set of timing differences between all the cards in a bank.

Second, we need to establish the timing differences between bank A and bank B. As with the first step, we need the timing cards to measure exactly the same instant. To do this, we use BIT mode data, where R1 in both bank receives the same electronically generated pulse at the same instant and are thus measuring the same event. Averaging these numbers gives the timing offsets between the R1 cards, which can be combined with the first measurements to establish timing between all cards.


Can do range correction if the boresight results are good. This is a 2 stage process:

  • 1. Nominal offset determination A1
  • 2. Define relative differences for A2,A3,A4 and B1,B2,B3,B4

points have approx. the same range error within +/-7 degrees of Nadir, so we look only at this region firstly.

  • In ALSPP filters dialog set the angles to +7 and -7 degrees, change the output directory (to 02a_Roff+-7deg if using suggested directory structure) and run the processing on the 4 low altitude flight lines.
  • Load the results into TerraScan and use the 30-40 GCPs of the calibration site.
  • Tools -> Output Control Report
  • Browse -> GCP file and remove bad points (maybe an error occurred in the surveying of a certain point)
  • Look at the dz value, the average dz is used for the nominal range offset A1.
  • Save the text file.

Preferably using data including areas of forest and the BIT mode data, run RangeCardCal (from ALSPP tools menu) and enter the average dz value as A1 to get the other offsets. Add the outputs to the ALSPP dialog and save the settings reg file (to a new name)

To check these results re-run using the full FOV (~45 degrees) and check average dz is less than 1cm or so, and standard deviation <5cm in TerraScan control report. (also look at cross sections)

Then process the 4 high altitude flights in ALSPP and check in TerraScan (around nadir and swath edges)

Finally load in all flights into TerraScan (within a fence if memory issues) and check them (ideally along a stream because this has a “good” profile) Can use the travel path tool in TerraScan for comparing cross sections along a path.

Final validation and fine tuning

  • check the torsion and pitch error slope
  • To check the Torsion look at cross sections of high altitude cross flight. Flat roads and grassy areas are good. Look for “smiles” in the data. This can be done by looking at the centres of the edges of the overlapping area (Figure 3).
  • We could create a surface model using one of the opposing flight lines, and then difference the other flight line against this to show if there are any roll effects [or maybe torsion etc]. Do this as well as the cross sections.

When finished save all the results to a reg file in ALSPP

Ground classification

Classification is the process of labelling the points in the point cloud by type. Ground classification specifically refers to labelling points that're considered to be part of the ground(!) This is a required step for the automatic boresight procedure.


  • remove very low, noisy points from consideration first
    • e.g. remove groups of up to 3 points > 1m below neighbours (iterate a few times so it settles)
  • classify groups of low points as ground (run N times to settle), takes account of neighbours
  • repeat with singletons
  • remove isolated points (>5m from any other point)
  • manually "add points to ground" for areas that should be ground but haven't been classified as such (e.g. peaks of hills) and rerun process above

Run as a macro. Terra->tools->macro->new.


  • This is an iterative procedure to take points from default classification to ground classification.
  • Classify from default classification to ground.
  • Max terrain slope – if lots of man made structures then use 88-90 degrees, else estimate from the natural terrain and add 10-15 degrees.
  • To classify, both the vertical distance and angle between points are tested against.
  • Its better to classify too few points to ground than too many.
  • Its good to preclassify more difficult areas first. [i.e. classify large buildings and steep hill tops].
  • The tie points that you will later select will presumably avoid areas such as trees, so you don't need to really worry about these when classifying
  • In TerraScan load in a LAS file.
  • Before ground classification we should remove noisy points.
    • Default -> low points classification.
    • Do this for group of points and then single points.
    • We can set up a macro to do this.
  • Set up the Macro
    • Tools -> Macro
    • any -> default
    • default -> low (group)
    • default -> low (single)
    • isolated points -> any -> low
    • To run on large projects use “selected files” instead of reading all into memory.
  • Run the macro and check result. Update distances etc used in the classifications if needed.
  • Now to classify the ground points:
    • Classify->Routine->ground
    • use measurement tool to get max building size (horizontally) in area. Also for terrain slope can view elevation and use cross section tool to measure/estimate it.
    • Initial points = aerial low and ground
    • iteration angle = 6 degree to start with
    • iteration distance = 1m to start with
  • Then add ground classification.
    • Default -> ground.
  • The Add point to ground tool can be used to add points to the classification that have been missed.


  • Can get Model Key Points
    • Routine -> Model key points
    • from ground -> model key points
    • These are the points which can be used as a model (?)

Random snippets

SCN file, DC=delta counter (time in ms since last GPS-second tick), ANG=angle in ticks. R1-R4 are the ranges in metres of the returns. R4 is always the last return. There is no intensity values for R4

If there are less than 4 returns then R4 is an INDEPENDENT measurement of the last pulse received

  • This allows the “average last return” option to be used to give a better measurement (in the ALSPP)

minimal detectable distance between R1-R2, R2-R3, R3-R4 is 2.7m.

TerraScan stuff

This should probably be moved to a separate TerraScan page when we get chance

MAKE SURE YOU HAVE A 3D TEMPLATE LOADED UP (There is one in LiDAR folder on D: in Windows machine)

  • It is possible to synchronise more than one viewer in TerraScan (as in Envi/ERDAS) so can look at intensity and elevation at the same point.
  • We can use TerraScan for creating projects, showing trajectories, splitting and combining LAS files.
  • Create new project – “first button” -> “offset stacked rectangle button”
  • file -> new
    • select LAS storage
    • scanner airborne
    • give description.
  • Place block – allows to draw rectangles to split the data up into sections.
    • Block -> add by boundary
      • will allow to create new LAS files from existing ones.
    • File -> import points into project
      • This does the “splitting” of the data.
  • Can then do things as normal to these project points.
  • Can also recombine all the points to a single LAS file if required.
  • May want trajectory loaded up in TerraScan
    • Setup ALSPP as if to process data.
    • ALSPP -> utilities -> generate trj files.
    • Import into TerraScan and draw trajectory [use the “3 child squares” -> “parallel lines button”to import]
    • The trajectory is important for removing overlaps of data or trimming data and other things.
    • When cutting overlapping points we can use the “by quality” option – low flights take precedence but can also add a quality factor to points which will be used to weight. Alternatively can use the “by offset” option – defines an angle of flightline to cut by.
Last modified 7 years ago Last modified on Mar 16, 2010 3:55:56 PM