v.lidar.correction(1)

✨ v.lidar.correction ✨

okay bestie, gather round, because this is the final boss of the LIDAR filtering trilogy πŸ’… it's the v.lidar.correction module from the GRASS GIS User's Manual, and it does exactly what it says on the tin: it corrects the output of v.lidar.growing, and it's the last of the three algorithms for LIDAR filtering. no cap. πŸŽ€

🌸 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. Like, it figures out the point density and the distance in map units for the input vector points within the current region extents, and then it just… dips. πŸ‘‹
  • --overwrite β€” Allow output files to overwrite existing files. (iconic behaviour honestly)
  • --help β€” Print usage summary. your bestie when you're lost fr
  • --verbose β€” Verbose module output
  • --quiet β€” Quiet module output
  • --ui β€” Force launching GUI dialog

πŸ“ Parameters πŸ“

  • input=name [required] β€” Name of input vector map. Specifically the Input observation vector map name (aka the v.lidar.growing output).
  • output=name [required] β€” Output classified vector map name
  • terrain=name [required] β€” Name for output only 'terrain' points vector map
  • 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 step three of three in the LiDAR data filtering saga. the whole point of the filter is to recognize and extract attached and detached objects β€” think buildings, bridges, power lines, trees, all that β€” so you can build a Digital Terrain Model. πŸ”οΈ

here's the vibe: the module compares the LiDAR observations against a bilinear spline interpolation with a Tychonov regularization parameter, performed on the TERRAIN SINGLE PULSE points only. the gradient gets minimized by that regularization parameter. ✨

then it looks at the residuals β€” the gaps between the observations and the interpolated values β€” and that analysis lands you in four cases (and psst, the classification being referred to here is the v.lidar.growing output vector):

a) Points classified as TERRAIN that differ by more than a threshold value get interpreted and reclassified as OBJECT β€” for both single and double pulse points.

b) Points classified as OBJECT that are closed enough to the interpolated surface get 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. 🧚


πŸŽ€ NOTES πŸŽ€

The input should be the output of the v.lidar.growing module, or the output of this very module, v.lidar.correction, itself. Which means β€” yes bestie β€” this module can be applied more than once for a better filter solution (although, ngl, two times is usually enough).

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
  • a 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


🌟 SOURCE CODE 🌟

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

Accessed: Saturday Jan 17 05:41:23 2026

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


Β© 2003-2025 GRASS Development Team, GRASS GIS 8.4.2 Reference Manual

so yeah, that's the whole page β€” shoutout to the GRASS Development Team, Β© 2003-2025, GRASS GIS 8.4.2 Reference Manual, and this little number was accessed on Saturday Jan 17 05:41:23 2026 πŸ’– and the page footer reads GRASS 8.4.2 / v.lidar.correction(1). slay, go filter some LiDAR, bestie πŸ¦‹βœ¨

πŸ“¦ where this page comes from