使用lidR均质化LAS点云:条纹伪影消除与处理异常排查
航空LAS目录均质化问题记录
背景
我正在尝试均质化航空LAS目录,以实现大研究区点密度的一致性。数据集点密度范围为每平方米不足4点至超过8点,重叠条带区域存在多处极端点密度区。我计算的部分栅格指标(如输出的10m IQR)出现条纹伪影,在高、低点密度交界处出现低值像素线(见Global Mapper中叠加点云并按点密度着色的10m四分位距[IQR]截图)。我希望通过使用lidR::decimate_points()中的homogenize选项抽稀点云,使其密度更均匀来解决该问题。但运行函数时遇到另一个问题:summary()显示抽稀成功,但输出文件与输入文件一致。
已尝试的排查步骤
- 尝试多种密度和分辨率组合,排除英尺与米单位转换错误。R相关文档提到若尝试实现高于原始数据的点密度,会生成与原文件相同的输出,但我尝试了相当适中的密度/分辨率仍未成功。
- 调整
opt_chunk_size为更高和更低的值,确保输入瓦片未重叠导致重复点。
问题总结
- 均质化能否消除重叠点边缘的条纹伪影?
更新:均质化点云效果不佳,怀疑是校准/后处理错误导致。 - 为何R显示均质化成功,但输出文件仍与原文件相同?
更新:通过重启电脑并更换工作目录重新运行代码解决了该问题。
用到的R代码
library(lidR) #lidR version 4.0.4 library(future) #load normalized LAZ tiles ctg <- readLAScatalog("path/", filter = "-drop_class 2") #drop ground classes from normalized tiles opt_chunk_buffer(ctg)<- 200 opt_chunk_size(ctg)<- 0 #maintain chunk size 750m = 2460.63ft summary(ctg) #input catalog # 输入目录摘要输出: # class : LAScatalog (v1.1 and 1.2 format 1) # extent : x1, x2, y1, y2 (xmin, xmax, ymin, ymax) # coord. ref. : NAD83 / New York Central (ftUS) # area : 2275.8 kus-ft² # points : 10.74 billion points # density : 4.7 points/us-ft² # density : 2.5 pulses/us-ft² # num. files : 422 # proc. opt. : buffer: 200 | chunk: 0 # input opt. : select: * | filter: -drop_class 2 # output opt. : on disk | w2w guaranteed | merging enabled plan(multisession, workers = 3L) opt_output_files(ctg)<- paste0("path/retile_{XLEFT}_YBOTTOM}") # select output and naming for tiles ctg_thinned = decimate_points(ctg, homogenize(density = 1, res= 10.76, use_pulse = FALSE)) #1 pt/~1m^2 in feet summary(ctg_thinned) #output catalog # 输出目录摘要输出: # class : LAScatalog (v1.1 and 1.2 format 1) # extent : x1, x2, y1, y2 (xmin, xmax, ymin, ymax) # coord. ref. : NAD83 / New York Central (ftUS) # area : 2257.83 kus-ft² # points : 1.69 billion points # density : 0.7 points/us-ft² # density : 0.5 pulses/us-ft² # num. files : 421 # proc. opt. : buffer: 5 | chunk: 0 # input opt. : select: * | filter: -drop_class 2
内容的提问来源于stack exchange,提问作者eJarvis99
相关产品推荐
相关产品推荐

