如何使用 lidR 均匀化点以减少条纹伪影

How to homogenize points using lidR to reduce streaking artifacts

提问人:Kong_746 提问时间:11/8/2023 最后编辑:Kong_746 更新时间:11/14/2023 访问量:44

问:

我正在尝试对航空 LAS 目录进行均质化,以便在大型研究区域内实现一致的点密度。数据集的范围从每米不到 4 个点到每米大于 8 个点不等,许多区域在重叠的地带中具有极值点密度。我计算的某些栅格指标会生成条纹伪影,其中低值像素线出现在高点密度与低点密度的交汇处(请参阅输出 10m IQR 的屏幕截图)。我希望通过使用 中的均质化选项来稀释点以获得更均匀的一致性来解决这个问题。运行此函数时,遇到了另一个问题,即报告抽取成功,但输出文件与输入文件相同。lidR::decimate_points()summary()

我尝试了多种密度和分辨率组合,以确保我不会犯简单的美英尺到米的转换错误。R 书中提到,试图实现比原始更高的点密度将导致创建相同的文件,但我尝试了一些相当适度的密度/分辨率,但没有运气。

为了确保我的输入切片不会重叠并创建重复点,我还尝试将 调整为更高和更低的值。opt_chunk_size

综上所述:

  1. 均质化可以消除重叠点边缘的条纹吗?

更新:均质化点没有多大帮助,我怀疑校准/后处理中存在错误

  1. 为什么 R 表示同质化成功,而输出文件保持不变?

更新:我通过简单地重新启动PC并使用不同的工作目录重新运行代码来解决此问题。

10m 四分位距 [IQR],边缘有条纹,点云叠加,并按 Global Mapper 中可视化的点密度着色

在 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
R 点云 激光雷达 Lider

评论

0赞 JRR 11/8/2023
您的代码看起来正确。您是如何构建密度图的?我不明白你制作的密度图。我看到密度从 0 到 15 不等,这意味着抽取失败?请更具体地说明您做了什么以及您认为存在问题的原因。密度图的分辨率是多少?全局映射器是否使用缓冲区来构建密度映射?lidR 生成的密度图是什么样子的。我需要所有这些信息来提供帮助。
0赞 eJarvis99 11/9/2023
@JRR 就我所做的而言,我在 GM 中规范化/过滤掉了非蔬菜/非 grnd 点,并将所有内容重新平铺为 750m LAZ 文件并在 R 中打开。密度图是在 GM 中制作的,方法是从分配的输出文件夹中拖入图块,然后选择“按 Pt. Density 着色”(基于加载的完整 pt. 云)。我画了几块瓷砖的地块。 和。它们是相同的,并且具有相同的等级(0 到 1.2)。但是,在 lidR 图中,瓷砖边缘的变薄现在消失了(良好)。 显示较低的点,但点云看起来相同?opt_output_files(ctg)grid_density()ctgctg_thinnedsummary()
0赞 Chris 11/9/2023
虽然可能看起来很乏味,但@jrr建议你把上面的评论作为你的问题中使用的代码,而不是评论,因为你的方法变薄了边缘(好的结果),这将使他能够看到你的过程,并帮助其他人稍后将登陆这里搜索所使用的代码。
0赞 JRR 11/9/2023
@Kong_746 对不起,我什么都不懂。请编辑您的原始问题,尝试组织您的想法,显示图像,代码示例,不要假设我知道您的软件。到目前为止,我最好的猜测是 GM 错了,没有缓冲瓷砖。
0赞 eJarvis99 11/14/2023
@JRR 感谢您,并为您的困惑而道歉。我最终通过简单地重新启动并重新运行所有内容来解决我的同质化问题。所以是的,没什么大不了的。我认为我的条带工件将继续存在,并且需要与其他变量一起使用。

答: 暂无答案