The positions of laser returns were first corrected using dynamic calibration with sensor pose registration for each sweep, using data from previous sensor sweeps with support of features extracted from both trees and the ground. For each sweep, circle fits were derived from laser returns on tree stems. The center locations of circle fits (stem sections) were used for segmentation of the data for association of stem sections to individual trees by searching for linear objects (i.e., linear formations of stem centers). The associations of stem sections to one tree stem were then used for tree spine calibration in order to fine-tune the position of laser returns needed for estimating stem profiles. In this study, a tree spine was defined as the center of a tree stem with a continuation from ground level and upwards. The stem diameter was estimated in two ways, using diameter-height functions: (1) fitting a function to circle fits of individual scan revolutions, and (2) using circle fits from the stem profiles with 3D data from several scan revolutions, thereby including the sensor position errors. The method for calibration of laser data and estimation of tree stem attributes are outlined
Figure 3 and is described in the following subsections. The algorithms of the left-hand-side of the flowchart has earlier been described briefly [
11], except dynamic calibration, horizontal object-based calibration, and vertical object-based calibration, which were also recently described with more details [
14].
3.1. Dynamic Calibration
In this calibration step, a six degrees of freedom (6 DOF:
x,
y,
z, roll, pitch, yaw) calibration was performed on individual scan revolutions. The dynamic calibration builds on previous developments where the laser scanner was mounted on a small Unmanned Aerial Vehicle (UAV) [
15,
16], and the algorithm was later adapted for person carried sensor acquisitions inside forests [
14]. The sensor pose data from the initial estimate, given by the INS, was adjusted based on comparison of laser data from one scan revolution (each 0.1 s) with laser data from earlier scan revolutions. For the dynamic calibration, and also for subsequent steps, features were extracted from the laser data. Two feature types were used: tree stem sections and flats. Stem sections correspond to 3D laser data returned from the stem part of the trees. Flats correspond to 3D laser data returned from flat surfaces, which mainly comprise parts of the ground in a forest.
As a first step, the 3D points were put on a mesh to evaluate smoothness, where rows represent scanner evolution and columns represent rotational angle. The local smoothness evaluation was inspired by the method proposed by Zhang and Singh [
4]. Our modification of the smoothness calculation is that different shape and size of the region which defines the neighbors are used, depending on which type of feature is extracted. The smoothness value
c was computed with Equation (
1) for each row
i and column
j of this mesh image, using a region with height (
) and width (
). For detection of stem sections a region was used which corresponds to an elongated rectangle when projected onto objects, with a height of 3 rows and a width of 5 columns (4° elevation by 1° azimuth). For detection of flats on the ground a region was used which approximately corresponds to a square, with a height of 5 rows and a width of 41 columns (8° elevation by 8° azimuth). To safely obtain features from several directions, four sectors of the scanner rotational angles were defined: forward (315° to 45°), left (225° to 315°), right (45° to 135°), and backward (135° to 225°). In each sector, the 30 points with lowest
c were selected for further processing.
Several filters were then applied with the aim to only select tree feature points located on tree stems for further processing. For a tree feature point, a region of interest was used with the half azimuth width equal to the maximum expected stem radius (0.3 m). For each region of interest three sets of points (, , and ) were selected from the upper (), middle (), and lower adjacent () elevation levels (rows). In , , and , the distances were compared in each column and points were removed if the absolute difference was above a distance threshold (>0.2 m). In the next step, ground points were rejected by requiring a minimum altitude difference between the point data on rows and . The points from respectively were then fitted to three circles in the horizontal plane () using an analytic method obtaining stem-section centers (), stem radius, and Root-Mean-Square of the residuals (). To remove points from, e.g., branches, a threshold of was applied (1.5 cm). If the was above this threshold, the outer points on both sides in the azimuth direction were removed and the reduced data were fitted once more to a circle and either accepted or rejected based on the new -value. This removal procedure of stem sections was the first method to remove stem sections that potentially contained points from branches. However, if there were too few stem sections in one scanner rotation, a second routine was applied, which stepwise removes a point with the highest residual and in each step fits the remaining points to a circle until is below 1.5 cm or too few points (<5) remain.
The extracted and filtered features from a scan revolution were used to calibrate the sensor pose (Equation (
2)) versus the features obtained from earlier scan revolutions (Equation (
3)), where
denotes the INS values used to obtain an initial pose and
D dynamic calibration. Two different distance metrics were used for optimization of the best pose in 6 DOF: for flats, the point-to-plane distances, and for stem sections both point-to-plane (to the stem surface) distances and the point-to-line distances (to the estimated stem center position). Values of the
K matrix were found by minimizing an objective function (Equation (
4)) generated through a combination of distances between stem sections (
), stem section points (
), and flats (
f). In the equation, the weights
,
, and
were set to 1.0, 0.8, and 0.6, respectively. Different weighted averages of distances were used to also weight features of one type within a scan revolution (Equation (
5)). The distance (
) between a feature from a current time point (
u) and already calibrated features from earlier time periods (
v) were weighted with the standard deviation (
) of the circle fit estimate inserted into a bisquare function, to obtain high weights for low standard deviations, and with the stem vector projected distance inserted into a bisquare function, to obtain high weights for small vertical differences on vertical tree stems. The distances derived between stem section points and between flats were weighted in a similar way. For optimization of the sensor pose, the modified steepest gradient method [
17] was applied.
3.2. Horizontal Object-Based Calibration
The previous dynamic calibration step was used to reduce short-time errors of the initial sensor trajectory. However, small drifts also become a problem if the same location is measured after some time because multiple estimates are observed for each tree. The solution was to aggregate stem sections for longer time intervals to form initial tree position estimates (simple trees). In this calibration step, adjustments were performed only in the plane (x, y) using average tree position estimates within time intervals. The reason for starting with adjustment in the horizontal plane was that tree centers are distributed in a vertical direction, which makes it possible to first simplify to a 2D adjustment problem. These simple trees were processed in time sequential order. To account for small residual position errors, the stem sections from 10 scan revolutions (1 s of data acquisition) were aggregated, and the sensor position was further corrected to reduce accumulated errors over longer time intervals. In this step, more stem sections were available compared with number of stem sections available for each scanner revolution in the dynamic calibration step, and these stem sections were used to adjust the position in relation to the already adjusted simple trees from previous scan revolutions.
A search was done for neighbors from previous scan revolutions within a search distance in the horizontal plane (1 m). A weighted average of coordinates in the horizontal plane (
) with individual weights selected to measure importance of correspondence was calculated, using all available reference neighbor stem sections within the search distance. The weights were calculated with differences in
z (height),
of circle fits, and differences in stem radius as input to bisquare functions together with time difference (age) as input to a power function (
) with a cut off. The pairs with position and weighted averages of neighbor position values (reference) were used to estimate a rigid body transformation in the horizontal plane for each (1 s) time interval relative to the previous time interval. The transformation was applied for all stem sections within the time interval. The algorithm has been described earlier [
14].
3.3. Vertical Object-Based Calibration
The accumulated errors will cause problems for generation of a ground elevation model because multiple ground levels will appear when the same area is measured after some period of time if returning to the same place. Therefore, a vertical calibration using flats was performed for each time interval, after calibration in the horizontal plane. For each flat in the current time interval, a search was done within a horizontal search radius of 8 m for reference flats in previous time intervals, and a reference
z-value was computed using a weighted average of
z-values for reference flats within the search radius, where the weight was the inverse squared distance. In this way, a reference
z-value could be computed in areas with low density of flats. Also, individual flats at long distances had little influence on the average of
z-values within areas with a high density of reference flats. A weighted average of age (i.e., the time difference between the current flat and reference flat) was also computed using the same distance weight of the ages for reference flats. The pairs of flats, with a pair consisting of the current time interval and the corresponding reference
z-value from previous time intervals, were then used in order to compute a
z-calibration. The calibration was a weighted average of
z-differences of pairs, between a flat in the current time interval and previous time intervals, where the weight was age (i.e., time difference between the time of the current flat and the weighted average time for reference flats). The use of age made it possible to adjust to a previous ground level if the laser scanner returned to an previously visited place. The algorithm has been described earlier [
14].
3.5. Spine Calibration
In this calibration step, a tree spine was assumed to be a 3D-line. The horizontal position estimates of section centers were adjusted to remove systematic errors, based on the assumption that stem sections belong to specific stems according to the stem segmentation. For each stem segment, a 3D-line was estimated from the stem section centers using PCA. This made it possible to calculate pairs of
-coordinates for each stem section based on these two positions: (1) the original stem section center position (
) and (2) the position where the 3D-line intersected a horizontal plane in which the original stem section center position was included (
). The stem sections were then sorted in time order. Starting from the beginning of the data acquisition, a time interval was formed just large enough to include stem sections from at least three different stem segments. A rigid body transformation in the horizontal plane was done by minimizing the horizontal Euclidian squared distances between coordinate pairs of stem section centers
(
) and line-plane intersections within the time interval
(
). The found transformation (rotation matrix, translation vector) was used to correct the stem points associated to the stem sections in the specific time interval. This was repeated for sequential time intervals from start to stop of the laser acquisition. This algorithm has earlier been described only briefly [
11]. See Algorithm 2 for an overview.
Algorithm 2 Spine calibration |
- 1:
for to size do - 2:
Stem centers of - 3:
PCA function: direction vector - 4:
z coordinate (height) of - 5:
Find x, y coordinates for at z (height) - 6:
x, y coordinates of - 7:
end for - 8:
Sort by time in ascending order - 9:
while is not empty do - 10:
Stem sections in time period - 11:
- 12:
while do - 13:
Number of unique stem segments in - 14:
Move next SSC from - 15:
end while - 16:
- 17:
Rigid body transformation - 18:
new horizontal positions of - 19:
end while
|