v.lidar.correction(1grass)

✨ v.lidar.correction ✨

okay bestie, pull up a chair because you just typed v.lidar.correction(1grass) into the manual and honestly? iconic choice. this is the GRASS tool that does the final cleanup pass on your LiDAR filter, and she is the last of the three-algorithm glow-up chain. let's get into it πŸŽ€


🌸 NAME 🌸

v.lidar.correction β€” she corrects the output of v.lidar.growing. that's it, that's the job. she is the last of the three algorithms for LIDAR filtering, so when she's done, your terrain is served. πŸ’…

πŸ’œ KEYWORDS πŸ’œ

vector, LIDAR


πŸ¦‹ SYNOPSIS πŸ¦‹

v.lidar.correction
v.lidar.correction --help
v.lidar.correction [-e] input=name output=name terrain=name
[ew_step=float]   [ns_step=float]   [lambda_c=float]   [tch=float]
[tcl=float]   [--overwrite]  [--help]  [--verbose]  [--quiet]  [--ui]

πŸ’« Flags πŸ’«

  • -e β€” Estimate point density and distance and quit. more precisely: it estimates point density and distance in map units for the input vector points within the current region extents, then bounces. ✌️
  • --overwrite β€” Allow output files to overwrite existing files. no cap, this one lets your new files body the old ones.
  • --help β€” Print usage summary. your bestie when you're lost πŸ₯Ί
  • --verbose β€” Verbose module output. she will NOT stop talking (affectionate).
  • --quiet β€” Quiet module output. shhh era 🀫
  • --ui β€” Force launching GUI dialog. point-and-click main character energy πŸ–±οΈβœ¨

πŸ“ Parameters πŸ“

  • input=name [required] β€” Name of input vector map. this is your input observation vector map name, aka the output of v.lidar.growing. πŸ’–
  • output=name [required] β€” Output classified vector map name.
  • terrain=name [required] β€” Name for output only ’terrain’ points vector map. yes, only the terrain ones got the invite to this party.
  • ew_step=float β€” Length of each spline step in the east-west direction. Default: 25 * east-west resolution.
  • ns_step=float β€” Length of each spline step in the north-south direction. Default: 25 * north-south resolution.
  • lambda_c=float β€” Regularization weight in reclassification evaluation. Default: 1.
  • tch=float β€” High threshold for object to terrain reclassification. Default: 2.
  • tcl=float β€” Low threshold for terrain to object reclassification. Default: 1.

🌈 DESCRIPTION 🌈

so v.lidar.correction is the last of three steps to filter LiDAR data. the whole ~filter's vibe~ is to recognize and extract attached and detached objects (think buildings, bridges, power lines, trees, etc. β€” the whole urban zoo πŸ™οΈ) so that you can build a Digital Terrain Model. periodt.

the module β€” and yes, you can iterate her several times, she's built different β€” makes a comparison between the LiDAR observations and a bilinear spline interpolation with a Tychonov regularization parameter performed on the TERRAIN SINGLE PULSE points only. the gradient is minimized by that regularization parameter. slay.

analysis of the residuals between the observations and the interpolated values results in four cases (and the next classification is referred to that of the v.lidar.growing output vector):

a) Points classified as TERRAIN differing more than a threshold value are interpreted and reclassified as OBJECT, for both single and double pulse points.

b) Points classified as OBJECT and closed enough to the interpolated surface are interpreted and reclassified as TERRAIN, for both single and double pulse points.

the length (in mapping units) of each spline step is defined by ew_step for the east-west direction and ns_step for the north-south direction. we love a configurable grid bestie πŸ’«


πŸ‘‘ NOTES πŸ‘‘

your input should be the output of the v.lidar.growing module, or the output of this v.lidar.correction itself. which means: this module could be applied more times (although, ngl, two are usually enough) for a better filter solution. diminishing returns said what she said. πŸ™ˆ

the outputs are:

  • a vector map with a final point classification as TERRAIN SINGLE PULSE, TERRAIN DOUBLE PULSE, OBJECT SINGLE PULSE or OBJECT DOUBLE PULSE
  • an vector map with only the points classified as TERRAIN SINGLE PULSE or TERRAIN DOUBLE PULSE

the final result of the whole procedure (v.lidar.edgedetection, v.lidar.growing, v.lidar.correction) will be a point classification in four categories:

  • TERRAIN SINGLE PULSE (cat = 1, layer = 2)
  • TERRAIN DOUBLE PULSE (cat = 2, layer = 2)
  • OBJECT SINGLE PULSE (cat = 3, layer = 2)
  • OBJECT DOUBLE PULSE (cat = 4, layer = 2)

🧚 EXAMPLES 🧚

πŸŽ€ Basic correction procedure πŸŽ€

v.lidar.correction input=growing output=correction out_terrain=only_terrain

πŸ’– Second correction procedure πŸ’–

v.lidar.correction input=correction output=correction_bis terrain=only_terrain_bis

⭐ REFERENCES ⭐

  • Antolin, R. et al., 2006. Digital terrain models determination by LiDAR technology: Po basin experimentation. Bolletino di Geodesia e Scienze Affini, anno LXV, n. 2, pp. 69-89.
  • Brovelli M. A., Cannata M., Longoni U.M., 2004. LIDAR Data Filtering and DTM Interpolation Within GRASS, Transactions in GIS, April 2004, vol. 8, iss. 2, pp. 155-174(20), Blackwell Publishing Ltd.
  • Brovelli M. A., Cannata M., 2004. Digital Terrain model reconstruction in urban areas from airborne laser scanning data: the method and an example for Pavia (Northern Italy). Computers and Geosciences 30 (2004) pp.325-331
  • Brovelli M. A. and Longoni U.M., 2003. Software per il filtraggio di dati LIDAR, Rivista dell’Agenzia del Territorio, n. 3-2003, pp. 11-22 (ISSN 1593-2192).
  • Brovelli M. A., Cannata M. and Longoni U.M., 2002. DTM LIDAR in area urbana, Bollettino SIFET N.2, pp. 7-26.
  • Performances of the filter can be seen in the ISPRS WG III/3 Comparison of Filters report by Sithole, G. and Vosselman, G., 2003.

🌟 SEE ALSO 🌟

  • v.lidar.edgedetection
  • v.lidar.growing
  • v.surf.bspline
  • v.surf.rst
  • v.in.pdal
  • v.in.ascii

πŸ’… AUTHORS πŸ’…

Original version of program in GRASS 5.4:

Maria Antonia Brovelli, Massimiliano Cannata, Ulisse Longoni and Mirko Reguzzoni

Update for GRASS 6.X:

Roberto Antolin and Gonzalo Moreno

legends, all of them πŸ‘‘πŸ«Ά


🫧 SOURCE CODE 🫧

Available at: v.lidar.correction source code (history)

Latest change: Friday Apr 17 01:04:26 2026 in commit: 32a143358df26b2e518b03c7e0d79541e8d1e5b1

Main index | Vector index | Topics index | Keywords index | Graphical index | Full index


okay that's the whole page, bestie β€” go filter some LiDAR and make a DTM that eats. πŸ’–βœ¨πŸŒŠ

Β© 2003-2026 GRASS Development Team, GRASS 8.5.0 Reference Manual. love that for us. πŸŽ€

πŸ“¦ where this page comes from