Bagaimana cara memfilter pencilan dari point cloud di LIDR?

Aug 18 2020

Saya memiliki cloud titik ALS. Saya telah berhasil menormalkan ketinggian, tetapi bertanya-tanya apakah ada cara untuk menghapus / memfilter beberapa titik yang jelas merupakan kesalahan / pencilan (poin di bawah 0 dan beberapa yang 30-50m atau bahkan 100m di atas pohon tertinggi). Data yang saya gunakan diunduh dari Peta Nasional USGS dengan hanya titik tanah yang sudah diklasifikasikan.

Jika saya menormalkan dengan tin()algoritma dan membuat chm saya langsung dari titik cloud normalisasi, nilai chm min / max saya adalah:

values     : -5.23, 129.98  (min, max)

dan jika saya menormalkan dengan dtm:

values     : -14.65, 129.91  (min, max)

Pada akhirnya, saya mencoba untuk menyegmentasikan pohon dan menghasilkan produk dari tinggi pohon, tutupan kanopi, kerapatan pohon, dll. Tetapi saya tidak dapat menjalankan analisis saya ketika saya mengetahui bahwa tinggi pohon maksimal adalah <30m di seluruh lokasi studi saya.

Jika saya mencoba untuk mengklasifikasikan ulang tanah, apakah itu akan membantu dengan poin di bawah 0? Tapi itu tidak akan membahas max 129m ...

Saya berpikir mungkin lebih baik saya merapikan chm saya dan menggunakan chm / puncak pohon untuk menyegmentasikan pohon karena saya kesulitan menemukan cara yang baik untuk menggunakan li2012()algoritme.

Jawaban

3 JRR Aug 18 2020 at 19:55

Tidak ada 'canggih' outlier penyaringan di lidR belum . Tetapi untuk kasus sederhana, Anda dapat membuat sendiri metode sederhana. Berikut adalah beberapa petunjuk dan Anda dapat memodifikasi contoh agar sesuai dengan kebutuhan Anda.

Filter tempat menarik menggunakan ambang batas

las <- filter_poi(las, Z >= 0, Z <= 30)

Filter pencilan tinggi menggunakan persentil ke-95 CHM

Ini adalah contoh yang diambil dari sketsa ini . Itu membangun raster persentil ke-95 dan menghapus apa yang relatif terlalu tinggi untuk peta ketinggian ini.

filter_noise = function(las, sensitivity)
{
  p95 <- grid_metrics(las, ~quantile(Z, probs = 0.95), 10)
  las <- merge_spatial(las, p95, "p95")
  las <- filter_poi(las, Z < p95*sensitivity)
  las$p95 <- NULL
  return(las)
}

las <- filter_noise(las, sensitivity = 1.2)

Filter pencilan menggunakan metrik berbasis titik

Tidak ada contoh yang diberikan tetapi di akhir bab ini terdapat bagian yang menjelaskan cara membuat metode filter pencilan yang cukup canggih denganpoint_metrics()

classify_noise () di v3.1.0

Saya meletakkan informasi ini di sini untuk pembaca yang akan datang. Mulai dari v3.1.0 lidRakan memiliki (atau 'sudah memiliki' tergantung pada saat Anda membaca) fungsi classify_noise()dengan beberapa kemungkinan algoritme.