Intensity normalization algorithm
This function is made to be used in normalize_intensity. It corrects intensity with a range correction according to the formula (see references):
Inorm = Iobs * (R/Rs)^f
To achieve the range correction the position of the sensor must be known at different discrete times. Using the 'gpstime' of each point, the position of the sensor is interpolated from the reference and a range correction is applied.
range_correction(sensor, Rs, f = 2.3, gpstime = "gpstime", elevation = "Z") get_range(las, sensor, gpstime = "gpstime", elevation = "Z")
sensor |
|
Rs |
numeric. Range of reference. |
f |
numeric. Exponent. Usually between 2 and 3 in vegetation contexts. |
gpstime, elevation |
character. The name of the attributes that store the gpstime of the
position and the elevation of the sensor respectively. If |
las |
an object of class LAS. |
Gatziolis, D. (2011). Dynamic Range-based Intensity Normalization for Airborne, Discrete Return Lidar Data of Forest Canopies. Photogrammetric Engineering & Remote Sensing, 77(3), 251–259. https://doi.org/10.14358/pers.77.3.251
# A valid file properly populated LASfile <- system.file("extdata", "Topography.laz", package="lidR") las <- readLAS(LASfile) # pmin = 15 because it is an extremely tiny file # strongly decimated to reduce its size. There are # actually few multiple returns sensor <- track_sensor(las, Roussel2020(pmin = 15)) # Here the effect is virtually null because the size of # the sample is too small to notice any effect of range las <- normalize_intensity(las, range_correction(sensor, Rs = 2000)) # This might be useful for some applications R = get_range(las, sensor)
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.