当前位置:网站首页>[point cloud series] pointfilter: point cloud filtering via encoder decoder modeling
[point cloud series] pointfilter: point cloud filtering via encoder decoder modeling
2022-04-23 13:18:00 【^_^ Min Fei】
List of articles
1. Summary
Published in TVCG2021 Periodical
Code :http://github.com/dongbo-BUAA-VR/Pointfilter
It basically uses the thinking of bilateral filtering
2. motivation
Learn the displacement vector , Denoised points = noise + Displacement vector
So the essential processing is to calculate The displacement vector here .
3. Method
Preprocessing :
Given a set of point clouds Real block P P P And noise block P ^ \hat{P} P^, r r r It's a block radius , Generally, it is the diagonal of the bounding box 5%

P P P: Clean point cloud
N N N: noise

Once the block is generated , Two problems need to be considered in point cloud filtering :
- How to avoid Unnecessary degrees of freedom in the observation domain ?
- How to protect Pointfilter Sensitive to some geometric transformations ?
about 1, You can transform the block to the origin ( With p i ^ \hat{p_i} pi^ Centered ), And make a telescopic transformation

In order to ensure the invariance of rigid body , Use PAC alignment , First of all Z Axis , then X Axis .
For the convenience of parameter adjustment , The default input is fast ∣ P ^ i ∣ = 500 |\hat{P}_i|=500 ∣P^i∣=500, The number of blocks is less than 500 Then fill , If it is greater than, conduct down sampling .
The overall framework :
According to the adjacent structure Project each noise onto the foundation surface , Therefore, the codec network is designed :

Encoder Encoder
Input :PCA Processed point cloud
Purpose : Or features represent information
Content :
- feature extraction : use MLP Realization , Different scale feature extraction
- Collector: In fact, that is max-pooling operation , Turn the feature into a 1024 Dimension characteristics .
The whole is basically PointNet+Batch Norm, Ensure that the characteristics of each layer are standard distribution .

The code description :
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
Decoder decoder
The decoder is directly FCN, Then convert to the coordinate domain .
Here we need to pay attention to , What we learned is the part of denoising , So the formula 7 r R − 1 f ( . ) r\mathbf{R}^{-1}f(.) rR−1f(.) This term is a displacement vector .

As shown in the figure , In fact, it's here n i n_i ni

The code description :
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
Loss function
There are two kinds of : Projection loss L p r o j a L^a_{proj} Lproja + Loss of similarity L r e p L_{rep} Lrep
Using the aggregation of exclusion penalty terms , The total loss is as follows 5 Shown . among η = 0.97 \eta=0.97 η=0.97

Projection loss : The formula 3

Gauss function : The formula 4



d i a g diag diag The size is P i P_i Pi The diagonal length of the bounding box , m = ∣ P ^ i ∣ m=|\hat{P}_i| m=∣P^i∣, The default angle is supported 15 degree . n \mathbf{n} n Is the normal vector .
analysis
Combined with the traditional denoising method loss, Compact expression ; But it is not very good to retain sharp noise .
4. experiment

版权声明
本文为[^_^ Min Fei]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/04/202204230611136878.html
边栏推荐
- Pyqt5 store opencv pictures into the built-in sqllite database and query
- Melt reshape decast long data short data length conversion data cleaning row column conversion
- 100 GIS practical application cases (53) - making three-dimensional image map as the base map of urban spatial pattern analysis
- web三大组件之Servlet
- 解决虚拟机中Oracle每次要设置ip的问题
- Async void provoque l'écrasement du programme
- AUTOSAR from introduction to mastery 100 lectures (52) - diagnosis and communication management function unit
- (个人)最近项目开发后存在的系统漏洞整理
- FFmpeg常用命令
- Brief introduction of asynchronous encapsulation interface request based on uniapp
猜你喜欢

MySQL 8.0.11下载、安装和使用可视化工具连接教程

51 single chip microcomputer stepping motor control system based on LabVIEW upper computer (upper computer code + lower computer source code + ad schematic + 51 complete development environment)

Kernel error: no rule to make target 'Debian / canonical certs pem‘, needed by ‘certs/x509_ certificate_ list‘

vscode小技巧

解决Oracle中文乱码的问题

9419 page analysis of the latest first-line Internet Android interview questions

【动态规划】221. 最大正方形

Example interview | sun Guanghao: College Club grows and starts a business with me
![[wechat applet] flex layout usage record](/img/ab/7b2392688d8a0130e671f179e09dce.png)
[wechat applet] flex layout usage record

FatFs FAT32 learning notes
随机推荐
Common interview questions and detailed analysis of the latest Android developers in 2020
[official announcement] Changsha software talent training base was established!
MySQL basic statement query
Scons build embedded ARM compiler
Translation of multi modal visual tracking: review and empirical comparison
[51 single chip microcomputer traffic light simulation]
【快排】215. 数组中的第K个最大元素
STM32 tracking based on open MV
async void 導致程序崩潰
Super 40W bonus pool waiting for you to fight! The second "Changsha bank Cup" Tencent yunqi innovation competition is hot!
The filter() traverses the array, which is extremely friendly
鸿蒙系统是抄袭?还是未来?3分钟听完就懂的专业讲解
MySQL -- 16. Data structure of index
100 GIS practical application cases (52) - how to keep the number of rows and columns consistent and aligned when cutting grids with grids in ArcGIS?
Proteus 8.10 installation problem (personal test is stable and does not flash back!)
这几种 VSCode 扩展是我最喜欢的
【微信小程序】flex布局使用记录
Lpddr4 notes
解决Oracle中文乱码的问题
vscode小技巧