文件交换

图像缩略图

CSF(织物模拟滤波器)

1.2.2.2版(2.68 MB)通过 wpqjbzwm wpqjbzwm
激光雷达点云地面滤波/分割(裸土萃取)的基础上布模拟方法。
5.0
9评级

13个下载

更新2020年6月4日

GitHub查看GitHub上牌照

将点云分离为地面和非地面测量是从激光雷达(光探测和测距)数据生成数字地形模型(DTMs)的重要步骤。许多滤波算法已经被开发出来。然而,即使是最先进的滤波算法,也需要精心设置一些复杂的参数,以达到较高的精度。
为了减少用户需要设置的参数,促进过滤算法的发展,我们提出了一种新的过滤方法,该方法只需要几个易于设置的整数和布尔参数。该方法基于三维计算机图形学算法布料模拟,在计算机程序中模拟布料。我们的过滤算法叫做布料模拟过滤,CSF。
CSF及其参数的更多信息可以被发现在http://www.cloudcompare.org/doc/wiki/index.php?title=CSF_(plugin)
CSF实现由提出“张宽,齐Ĵ,万P,王H,谢d,王X,闫G.一个易于使用机载激光扫描数据滤波方法研究织物仿真遥感算法2016; 8(6):501“,其可从以下地址下载。https://www.researchgate.net/profile/Wuming_Zhang2。请引用本文,如果你在工作中使用这个软件。
用法很简单。[groundIndex,nonGroundIndex] = csf_filtering(点云,typeofscene,后处理,gridsize);有时,仅需要场景的类型由用户来设置。更多细节可以在演示中找到。
CSF已被集成到用于点云处理的两个自由软件。如果你想使用图形用户界面(GUI)使用它,你可以从这里下载CloudComparehttp://www.cloudcompare.org/或点云从魔术http://lidar.radi.ac.cn(用中文(表达)。

引用作为

wpqjbzwm wpqjbzwm(2020)。CSF(织物模拟滤波器)(https://github.com/jianboqi/CSF),GitHub的。检索

张宽,齐Ĵ,万P,王H,谢d,王X,闫G.一个易于使用机载激光扫描数据滤波方法研究织物仿真。遥感。2016年8(6):501。

评论和评分(37)

文祺旺

嗨wpqjbzwm,
我有同样的问题,因为花,当我运行您在sample.ply提供数据demo_with_toolbox,它工作正常!
但是,当我在我的层文件运行它,MATLAB崩溃,给了我这个例外:
分割违反发现!你知道为什么吗?

谢谢大家

北京师范大学是在我的心脏最好的大学

嗨,
您列表是正确的。第七是时间步长。一般情况下,前五个参数是不够的。请参考演示.m文件。

嗨,

我有一个关于输入参数的问题。在MATLAB中,有7个输入(包括数据输入)。http://ramm.bnu.edu.cn/projects/CSF/document/“文件,只有5个。你能告诉我哪个是哪个,还有什么是额外的输入吗?据我所知,如有错误请纠正(按输入顺序编号):
1.点云输入
2.场景1,2,3?
3.坡后处理:真/假?
4.布决议?
5.分类阈值?
6.最大迭代?
7.? ? ? ? ? ?

嗨,哈哈,
你可以在这里找到参数的解释http://ramm.bnu.edu.cn/projects/CSF/document/
关于你的问题,能否上传你的数据,我们可以测试一下。

刘荷娜

嗨wpqjbzwm wpqjbzwm,
谢谢你!
我刚才您在sample.txt的提供数据demo_mex后运行您的MATLAB演示(demo_without_toolbox)和它的工作好!
但是,当我在我的点(XYZ),这是我从雷达看,Matlab的崩溃,给了我这个异常运行:
分割违反发现!
不知道如何解决这个问题?并使用你的代码?
还有一个问题,你在演示提供参数调用(csf_filtering),如何选择适合他们适当的值?
我使用Ubuntu 16.04, Matlab 2018a

谢谢大家

马修Parkan

感谢您的更新,wpqjbzwm wpqjbzwm。一切似乎都很好,现在在Matlab r2019a和倍频5.1.0工作。

嗨马修Parkan,
请尝试新版本1.2.2.0,它应该工作。

马修Parkan

嗨wpqjbzwm wpqjbzwm,

感谢这个漂亮的贡献。

你知道是否有可能编译csf_filtering与Octave Octave 5.1.0和Matlab r2019a?我试过用Matlab r2019a(用Microsoft Visual c++ 2017编译器)和Octave 5.1.0(用Mingw64编译)在Windows上编译:“mex csf_filters .cpp c2cdist.cpp Cloth.cpp CSF.cpp Particle.cpp point_cloud.cpp rasteriz.cpp XYZReader.cpp”。两个构建都成功了,但是执行失败了(在Matlab中出现“()是什么:分配错误”的错误消息,在Octave中崩溃)。有什么建议吗?

你好,丽贝卡·布朗,

作为错误信息,编译器的版本是不正确的。( '_MSC_VER':值 '1800' 不匹配值 '1900')
您可以下载预编译的mex文件。https://github.com/jianboqi/CSF/blob/master/matlab_all_params/csf_filtering.mexw64

我无法得到这个工作......首先,我不能让代码编译与“墨西哥”。
使用MEX错误
找到MSIL .netmodule或用/GL编译的模块;重新启动链接/LTCG;添加/LTCG到链接命令
线,以改善性能连接器
csf.lib(CSF.obj):错误LNK2038:关于 '_MSC_VER' 错配检测:值 '1800' 在csf_filtering.obj不匹配值 '1900' 的
csf.lib(c2cdist.obj):错误LNK2038:关于 '_MSC_VER' 错配检测:值 '1800' 中不匹配值 '1900' 的
csf_filtering.obj
csf.lib(XYZReader.obj):错误LNK2038:关于 '_MSC_VER' 错配检测:值 '1800' 中不匹配值 '1900' 的
csf_filtering.obj
等等...

我源文件移动到文件夹,并得到了它与“MEX csf_filtering.cpp c2cdist.cpp cloth.cpp CSF.cpp Particle.cpp point_cloud.cpp Rasterization.cpp XYZReader.cpp”编译现在我无法得到csf_filter功能工作,我有一个“从MEX file.What意外标准异常()是:坏分配”。有什么建议吗?

嗨,卡洛斯·卡波。
目前,布网不能出口。您可以使用Cloudcompare的CSF插件代替,这可以导出布网。或者你也可以建立基于过滤的点云网。这些命令可以是有用的:三角测量,德洛奈,trisurf。

伟大的算法!
我们怎样才能获得网或布点(而不是来自布距离内的点)?
谢谢!

汪称磨

张涛

嗨塔克Whitesides的,
CSF。lib是从VS2013构建的,因此不能在linux下直接构建它。如果您想这样做,您可以从源代码构建它,这应该是没有问题的。去https://github.com/jianboqi/CSF,下载整个项目,选择文件夹“matlab_all_params”,并运行以下命令“MEX csf_filtering.cpp ../CSFDLL/c2cdist.cpp ../CSFDLL/Cloth.cpp ../CSFDLL/CSF.cpp ../CSFDLL/Particle.cpp ../CSFDLL/point_cloud.cpp ../CSFDLL/Rasterization.cpp ../CSFDLL/XYZReader.cpp”在MATLAB。由于我没有linux下的RightNow公司的MATLAB,我不立即尝试,但它应该工作,因为CSF已经在Linux之前被编译。你可以试试这个,如果你有问题,让我知道。

嘿wpqjbzwm wpqjbzwm,

我在想,如果你编写了Linux中的功能?我试图说,现在和一直没能成功。

在Matlab R2016a用gcc-4.7编译器。我得到多个“未定义的引用”的错误,这使得EM认为页眉或库不加载。我也看到,在#pragma注释被忽略。

错误:
在功能`csf_filtering(双*,INT,BOOL,双,双,INT,双,INT,
std::vector >&, std::vector &, int&, int&)':
。csf_filtering.cpp :(文本+ 0x54):未定义参考`CSF CSF ::()”
。csf_filtering.cpp :(文本+ 0x67)中:未定义参考`CSF :: setPointCloud(双*,INT)”

警告:
警告:忽略#pragma comment [-Wunknown-pragmas]

任何援助将不胜感激!

嗨wpqjbzwm wpqjbzwm,

那很棒。非常感谢。我觉得是这样更好。

嗨,伊利亚·卡赞,

CSF mex从V1.0更新到V1.1。还有三个选项可用作输入参数。

[groundIndex,nonGroundIndex] = csf_filtering(PointCloudMatrix,刚性,isSmooth,clothResolution,class_threshold,迭代time_step)

class_threshold是指阈值,以原来的点云分类成基于原始点云和模拟的地形之间的距离地面和非接地部分。0.5适合于大多数场景。
迭代次数是地形模拟的最大迭代次数。500对大多数场景来说已经足够了。
time_step控制粒子在每次迭代过程中的重力位移。0.65对大多数场景进行了优化。

预编译MEX文件可以从以下网址下载https://github.com/jianboqi/CSF/blob/master/matlab_all_params/csf_filtering.mexw64

嗨wpqjbzwm wpqjbzwm,

我没有一个参数组现在。我只是问了好奇了。我只是希望,当数据从无人机未来不同的“class_threshold”是必要的。再一次非常感谢你 :)

嗨,伊利亚·卡赞,
我们想改善它。但它需要时间来尝试不同的编译器。
在此之前,我们可能会为您编译一个新的mex文件。您希望在.cpp文件中更改哪些参数(class_threshold或interations) ?

嗨wpqjbzwm wpqjbzwm,
它现在运行良好。非常感谢。
我想问问你,如果你正计划修复编译版本。我问,因为这将是很好能够与预编译的版本更改的参数在.cpp文件中原因,现在,只有默认值可用。

在任何情况下很好的工作。感谢您的上传。

伊利亚·卡赞

嗨,伊利亚·卡赞,
我刚刚发现预编译的MEX文件的链接是变化https://github.com/jianboqi/CSF/blob/master/matlab/csf_filtering.mexw64
请下载并重试。
希望它可以工作这段时间。

嗨wpqjbzwm wpqjbzwm,
我已经给你发一封电子邮件,你问。我在这里评论的情况下,你没有检查:)

伊利亚·卡赞

嗨,伊利亚·卡赞,
这真的很奇怪。我刚刚运行了demo_without_toolbox,它运行得很好。
能否请您捕获错误消息的屏幕和保存工作区到垫文件,然后将这些文件发送给wpqjbzwm@126.com?

嗨wpqjbzwm wpqjbzwm,
谢谢回复。预编译的版本似乎工作,但我得到的,当我试图运行demo_without_toolbox版本错误:
调用“csf_filtering”中的一个或多个输出参数不分配。

误差在demo_without_toolbox(线44)
[groundIndex,nonGroundIndex] = csf_filtering(ptCloud,3,真,1);

嗨,伊利亚·卡赞,
有一个预编译的mex文件(https://github.com/jianboqi/CSF/raw/master/csf_filtering.mexw64)。你可以先试试它。

嗨wpqjbzwm wpqjbzwm,
谢谢回复。当我运行demo_mex.m我得到这个错误。
编译:MinGW的-W64编译器的Windows(GCC 4.9.2版)
Matlab的版本:R2016a
让我知道如果我可以提供一些更多的信息。
谢谢
埃利亚斯

嗨,伊利亚·卡赞,
我们从来没有遇到过这个问题,这步骤产生这个错误。和PLS提供更多的信息,比如什么在MATLAB MEX的编译器版本comfigured。而您使用的是什么版本的MATLAB。事实上,我们所提供的CSF.lib是与Visual Studio 2013编译。

嗨wpqjbzwm wpqjbzwm,
谢谢你的上传。然而,我得到这个错误时,我运行mex文件:

\应用程序数据\本地的\ Temp \ mex_38351935561148_12080 \ csf_filtering.obj:csf_filtering.cpp :(文字+ 0x32):
未定义的参考`CSF CSF ::()”
\应用程序数据\本地的\ Temp \ mex_38351935561148_12080 \ csf_filtering.obj:csf_filtering.cpp :(文字+ 0×41):
未定义的参考`CSF :: setPointCloud(双*,INT)”
\应用程序数据\本地的\ Temp \ mex_38351935561148_12080 \ csf_filtering.obj:csf_filtering.cpp :(文字+ 0×83):
未定义的参考`CSF :: do_filtering(标准::矢量<整型,性病::分配器的>&,性病::矢量的std ::分配器的>&,布尔)”
\应用程序数据\本地的\ Temp \ mex_38351935561148_12080 \ csf_filtering.obj:csf_filtering.cpp :(文字+ 0XB0):
未定义的参考`CSF ::〜CSF()”
\应用程序数据\本地的\ Temp \ mex_38351935561148_12080 \ csf_filtering.obj:csf_filtering.cpp :(文字+ 0xbe):
未定义的参考`CSF ::〜CSF()”
collect2.exe:错误:LD返回1个退出状态

collect2.exe:错误:LD返回1个退出状态

对Chuyen阮
我们曾经使用CSF过滤Riegl VZ1000的点云,它工作得很好。

Chuyen阮

你好,

这个过滤器对地面激光雷达有效吗?我们使用Reigl Z400。
谢谢

嗨,abuzer。
要使用CSF,必须使用demo_mex.m编译MEX文件。之后是一个名为csf_filtering的文件。生成mexw64(在Windows 64位上)。有一个预编译的mex文件(https://github.com/jianboqi/CSF/raw/master/csf_filtering.mexw64)。你可以试试,然后通过自己编译。
期待更多的反馈和意见。谢谢。

abuzer

怎么办好呢?演示不工作

未定义函数或变量'csf_filtering'。

误差在demo_without_toolbox(线44)
[groundIndex,nonGroundIndex] = csf_filtering(ptCloud,3,真,1);

请帮助..

开彦

一个很漂亮的和新的算法!它的最好的部分是“易于使用”。与其他开放或商业法规相比,这个人是更易于使用,其结果甚至更好。

更新

1.2.2.2

标题和摘要的微小变化。

1.2.2.0

使用CSF用Matlab时修正了一些小错误

1.2.1.0

我们收到了来自世界各地不同用户的反馈,新版本增强了:
1.提高准确性为高度坚固terains
2.修补一些小bug。

1.2.0.0

我们得到了很多来自世界各地的不同用户的反馈,新版本已得到增强方式:
1.改善高度起伏地形精度。
2.修复了一些小错误。

1.1.0.0

3个选项被添加到输入参数。
[groundIndex,nonGroundIndex] = csf_filtering(PointCloudMatrix,刚性,isSmooth,clothResolution,class_threshold,迭代time_step)