用不起双回波,要是有错误欢迎指正。
思路:
两个滤波器
第一个: 计算滑窗内的标准差来定位玻璃的位置 (距离的标准差????)
先手动取一帧穿过玻璃的点云,用距离算一下标准差计为 PC0G
再手动取一帧不过玻璃的点云,用距离算一下标准差计为 PC0O
PC0G 和 PC0O 要作为两个队列不停的维护
取 PC0G和PC0O中的所有值的一半作为判断是否过玻璃的阈值t ,应该也是可以确定一个t为常量以后就不管了
用的时候就把滑动窗口写成10,每拿到一个点云计算一次
计算每个窗口的标准差,如果该窗口的标准差大于阈值t,则认为有可能是PC0G也就是点云中包含玻璃,否则这真激光一定不包含玻璃。
主要用来区分每个点云中有没有玻璃
第二个: 以第一个滤波器的输出为输入(找第一个滤波器输出的最新的有可能有玻璃的数据
当点云中有玻璃时,第一个穿过的点相对于上一个点距离增加强度降低 且最后一个穿出玻璃的点相对于前一个点距离减少且强度增加
做法,遍历每一个点i和后一个点i+1,如果 disten(i+1)> distance(i) && intensity(i+1)<intensity(i) ,记下这个点为第一个穿过玻璃的点 退出遍历 记下这个点的index为 k
(注意: 这里找到第一个点就退出的话应该是有 bug的比如一帧点云中有两块玻璃,玻璃中间有不透明的墙)
从k 开始往后遍历
遍历每一个点i 和后一个点 i+1 ,如果 distance(i+1)< distance(i) && intensity(i+1)> intensity(i) ,结束遍历,记录这个点的 index 为 k1,中间剩下的点
将k到k1中点的所有距离都插值覆盖
应该是可以考虑只对最新的帧进行操作的。