File: CSF.h

package info (click to toggle)
cloudcompare 2.13.2%2Bgit20240821%2Bds-1
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 151,152 kB
  • sloc: cpp: 687,217; ansic: 165,269; python: 31,109; xml: 25,906; sh: 940; makefile: 509; java: 229; asm: 204; fortran: 160; javascript: 73; perl: 18
file content (80 lines) | stat: -rw-r--r-- 3,576 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#pragma once

//#######################################################################################
//#                                                                                     #
//#                              CLOUDCOMPARE PLUGIN: qCSF                              #
//#                                                                                     #
//#        This program is free software; you can redistribute it and/or modify         #
//#        it under the terms of the GNU General Public License as published by         #
//#        the Free Software Foundation; version 2 or later of the License.             #
//#                                                                                     #
//#        This program is distributed in the hope that it will be useful,              #
//#        but WITHOUT ANY WARRANTY; without even the implied warranty of               #
//#        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the                 #
//#        GNU General Public License for more details.                                 #
//#                                                                                     #
//#        Please cite the following paper, If you use this plugin in your work.        #
//#                                                                                     #
//#  Zhang W, Qi J, Wan P, Wang H, Xie D, Wang X, Yan G. An Easy-to-Use Airborne LiDAR  #
//#  Data Filtering Method Based on Cloth Simulation. Remote Sensing. 2016; 8(6):501.   #
//#                                                                                     #
//#                                     Copyright                                      #
//#               RAMM laboratory, School of Geography, Beijing Normal University       #
//#                               (http://ramm.bnu.edu.cn/)                             #
//#                                                                                     #
//#                      Wuming Zhang; Jianbo Qi; Peng Wan; Hongtao Wang                #
//#                                                                                     #
//#                      contact us: 2009zwm@gmail.com; wpqjbzwm@126.com                #
//#                                                                                     #
//#######################################################################################

#include "wlPointCloud.h"
#include "Cloth.h"

//system
#include <vector>

class ccMainAppInterface;
class ccPointCloud;
class QWidget;
class ccMesh;

class CSF
{
public:

	//! Parameters
	struct Parameters
	{
		int k_nearest_points = 1;
		bool smoothSlope = true;
		double time_step = 0.65;
		double class_threshold = 0.5;
		double cloth_resolution = 1.0;
		int rigidness = 3;
		int iterations = 500;

		// constants
		const double clothYHeight = 0.05; // origin cloth height
		const int clothBuffer = 2; // cloth buffer (grid margin size)
		const double gravity = 0.2;
	};

	//! Main filtering routine
	static bool Apply(	const wl::PointCloud& csfPointCloud,
						const Parameters& params,
						std::vector<bool>& isGround,
						bool exportClothMesh,
						ccMesh* &clothMesh,
						ccMainAppInterface* app = nullptr,
						QWidget* parent = nullptr);

	//! Shortcut for CloudCompare
	static bool Apply(	ccPointCloud* cloud,
						const Parameters& params,
						ccPointCloud*& groundCloud,
						ccPointCloud*& offGroundCloud,
						bool exportClothMesh,
						ccMesh*& clothMesh,
						ccMainAppInterface* app = nullptr);
};