【点云系列】Pointfilter: Point Cloud Filtering via Encoder-Decoder Modeling
发布时间
阅读量:
阅读量
文章目录
-
1. 概要
-
2. 动机
-
3. 方法
-
- 预处理:
- 整体框架:
- 编码器Encoder
- Decoder 解码器
- 损失函数
- 分析
-
4. 实验
1. 概要
发表在TVCG2021 期刊
代码:http://github.com/dongbo-BUAA-VR/Pointfilter
基本使用到了双边滤波的思考
2. 动机
学习位移矢量, 去噪后的点 = 噪声 + 位移矢量
所以本质的处理就是去计算出 这里的位移矢量。
3. 方法
预处理:
给定一组点云 真实块P和噪声块\hat{P},r是块半径,一般为包围盒对角线5%

P:干净的点云
N: 噪声

一旦生成了块,在点云滤波中需要考虑两个问题:
- 如何避免 观察域中不必要的自由度?
- 如何保障Pointfilter对某些几何变换敏感?
对于1, 可以将块变换到原点(以\hat{p_i}为中心),并且进行一下伸缩变换

为了保障刚体不变性,使用PAC对齐,先对其Z轴,然后X轴。
为了方便调参,默认输入快|\hat{P}_i|=500,块的点数小于500则进行填充,大于的话则进行下采样。
整体框架:
根据相邻结构 将每个噪声投影到基础表面上,因此设计编解码网络:

编码器Encoder
输入:PCA处理后的点云块
目的:或则特征表示信息
内容:
- 特征提取:用MLP实现,提取不同尺度的特征
- Collector:其实就是max-pooling操作,将特征转为一个1024维的特征。
整体基本就是PointNet+Batch Norm,保障每一层特征都是标准分布。

代码描述 :
class pointfilter_decoder(nn.Module):
def __init__(self):
super(pointfilter_decoder, self).__init__()
self.fc1 = nn.Linear(1024, 512)
self.fc2 = nn.Linear(512, 256)
self.fc3 = nn.Linear(256, 3)
self.bn1 = nn.BatchNorm1d(512)
self.bn2 = nn.BatchNorm1d(256)
self.dropout_1 = nn.Dropout(0.3)
self.dropout_2 = nn.Dropout(0.3)
def forward(self, x):
x = F.relu(self.bn1(self.fc1(x)))
# x = self.dropout_1(x)
x = F.relu(self.bn2(self.fc2(x)))
# x = self.dropout_2(x)
x = torch.tanh(self.fc3(x))
return x
bash

Decoder 解码器
解码器就直接是FCN,然后转换到坐标域。
这里需要注意,学习到的是去噪去掉的部分,那么其中公式7 r\mathbf{R}^{-1}f(.)这一项就是一个位移矢量。

如图所示,其实就是这里的n_i

代码描述 :
class pointfilter_decoder(nn.Module):
def __init__(self):
super(pointfilter_decoder, self).__init__()
self.fc1 = nn.Linear(1024, 512)
self.fc2 = nn.Linear(512, 256)
self.fc3 = nn.Linear(256, 3)
self.bn1 = nn.BatchNorm1d(512)
self.bn2 = nn.BatchNorm1d(256)
self.dropout_1 = nn.Dropout(0.3)
self.dropout_2 = nn.Dropout(0.3)
def forward(self, x):
x = F.relu(self.bn1(self.fc1(x)))
# x = self.dropout_1(x)
x = F.relu(self.bn2(self.fc2(x)))
# x = self.dropout_2(x)
x = torch.tanh(self.fc3(x))
return x
bash

损失函数
包含两种: 投射损失L^a_{proj} + 相似性损失L_{rep}
利用排斥惩罚项的聚合,总体损失如下公式5所示。其中\eta=0.97

投射损失:公式3

高斯函数:公式4



diag大小为P_i的包围盒的对角线长度,m=|\hat{P}_i|, 支持角度默认15度。\mathbf{n}是法向量。
分析
结合传统去噪方法设计loss,紧凑表达;但对尖锐噪声保留不是很好。
4. 实验

全部评论 (0)
还没有任何评论哟~
