最远点采样(Farthest Point Sampling)
简介
以下我们将最远点采样(Farthest Point Sampling)简记为FPS。这种采样方法我觉得非常有趣。个人觉得比随机采样得到的数据能够表现更多的“轮廓性”,其次用的数据集也不像随机采样那么多。首先我们来介绍FPS的算法原理。
算法原理
1. 点与集合的距离
假设 S = { x 1 , ⋯ , x N } ⊂ R n S=\left\{x_1,\cdots,x_N\right\}\subset \mathbb{R}^n S={x1,⋯,xN}⊂Rn 中的一个有限点集合。一般情况,这里的 n n n等于1,2, 3。点与点的距离我们知道可以用坐标来表示。比如假设 a = ( a 1 , ⋯ , a n ) , b = ( b 1 , ⋯ , b n ) a=(a_1,\cdots,a_n),b=(b_1,\cdots,b_n) a=(a1,⋯,an),b=(b1,⋯,bn)是 R n \mathbb{R}^n Rn中的两个点,则 a , b a,b a,b之间的距离 d ( a , b ) d(a,b) d(a,b)可以定义成
d ( a , b ) = ( a 1 − b 1 ) 2 + ⋯ + ( a n − b n ) 2 d(a,b)=\sqrt{(a_1-b_1)^2+\cdots+(a_n-b_n)^2} d(a,b)=(a1−b1)2+⋯+(an−bn)2
类似地,我们可以定义点与集合的距离。假设点的坐标为 y = ( y 1 , ⋯ , y n ) y=(y_1,\cdots,y_n) y=(y1,⋯,yn),则 y y y到 S S S的距离 d ( y , S ) d(y,S) d(y,S)可以定义成
d ( y , S ) = min x i ∈ S d ( y , x i ) d(y,S)=\min_{x_i\in S}d(y,x_i) d(y,S)=xi∈Smind(y,xi)这其实也很好理解,说白了点到集合的距离就是这个点到这个集合里的点的最短的那个距离。这个这个定义不仅仅局限于有限集合,当 S S S 是一个无限集合时,只需把上面的 min \min min改成 inf \inf inf即可。比如当S是直线时候,点到直线的距离就被定义成所作垂线段的距离。
2. FPS算法步骤
FPS的目的是希望在有限集合 S S S里面找一个具有m个元素的子集合 { x i 0 , x i 1 , ⋯ , x i m } \left\{x_{i_0},x_{i_1},\cdots,x_{i_m}\right\} {xi0,xi1,⋯,xim}使得 x i j x_{i_j} xij到集合 { x i 0 , x i 1 , ⋯ , x i j − 1 } \left\{x_{i_0},x_{i_1},\cdots,x_{i_{j-1}}\right\} {xi0,xi1,⋯,xij−1}的距离最大。这里 x i 0 x_{i_0} xi0可以随意。
- 随机取一个点 x i 0 x_{i_0} xi0.
- 在 S − x i 0 S-x_{i_0} S−xi0这个集合里选取一点 x i 1 x_{i_1} xi1使得 d ( x i 1 , x i 0 ) d(x_{i_1},x_{i_0}) d(xi1,xi0)达到最大。
- 我们已经选好了 x i 0 , x i 1 x_{i_0},x_{i_1} xi0,xi1,下面我们开始选择 x i 2 x_{i_2} xi2.记 S 1 = { x i 0 , x i 1 } S_1=\left\{x_{i_0},x_{i_1}\right\} S1={xi0,xi1}。 x i 2 x_{i_2} xi2定义成使得 d ( x , S 1 ) d(x,S_1) d(x,S1)最大的 S − S 1 S-S_1 S−S1中的点。
- 以此类推,我们可以定义 x i 3 , ⋯ , x i m x_{i_3},\cdots,x_{i_m} xi3,⋯,xim.
最远点采样(Farthest Point Sampling)相关推荐
- 最远点采样(Farthest Point Sampling)介绍
最远点采样(Farthest Point Sampling)是一种非常常用的采样算法,由于能够保证对样本的均匀采样,被广泛使用,像3D点云深度学习框架中的PointNet++对样本点进行FPS采样再聚 ...
- 最远点采样(Farthest Point Sampling,FPS)算法详解
最远点采样(FSP)是一种常用的采样算法,主要用于点云数据(如激光雷达点云数据.分子坐标等)的采样. 一:算法原理 最远点采样的研究对象是点云数据,即一堆离散的坐标点.广义上其它许多样本数据类型也可以 ...
- FPS(farthest_point_sample) 最远点采样并可视化(附open3d python代码)
最远点采样(Farthest Point Sampling)是一种非常常用的采样算法,由于能够保证对样本的均匀采样,被广泛使用. 一句话概括就是不断迭代地选择距离已有采样点集合的最远点. FPS算法原 ...
- 图解点云深度学习中FPS(Farthest Point Sampling)--最远点采样算法
一.回忆Farthest Point Sampling算法过程(建议详细看完) 我们选取一个点云,我们假设整个点集为一共有n个点,来进行算法的讲解. 随机在整个点集中选取一个点作为起始点,并且放入集合 ...
- Farthest Point Sampling(最远点采样)
Farthest Point Sampling 作用:是一种非常常用的采样算法,由于能够保证对样本的均匀采样,被广泛使用. 直观化的解释图片: 其他还有,自适应采样,参考连接 https://boug ...
- FPS(Farthest Point Sampling)——最远点采样
1.算法流程 假设点个数为N,N = {P1,P2,-,Pn},经过采样后点的集合为S,初始时S = {},采样c个点 <1> 在N个点中随机选择1个点Pk1,放入S,S = {Pk1} ...
- 计算机视觉知识点整理:PointNet++之最远点采样(farthest point sample, FPS)代码理解
# farthest_point_sample函数完成最远点采样: # 从一个输入点云中按照所需要的点的个数npoint采样出足够多的点, # 并且点与点之间的距离要足够远. # 返回结果是npoin ...
- Farthest Point Sampling on 2d image
Farthest Point Sampling的原理是,先随机选一个点,然后呢选择离这个点距离最远的点(D中值最大的点)加入起点,然后继续迭代,直到选出需要的个数为止 其主要代码如下: %main.m ...
- 【最远点采样FPS】点云采样方式(一) — 最远点采样
本文为博主原创文章,未经博主允许不得转载. 本文为专栏<python三维点云从基础到深度学习>系列文章,地址为"https://blog.csdn.net/suiyingy/ar ...
最新文章
- WPF Viewport3D 解决透视模式时窗体模糊
- 我对编程中常见名词的理解
- 神策 2020 数据驱动用户大会报名开启
- MyBatis源码分析-IDEA新建MyBatis源码工程
- javascript-操作符
- 习题6-3 使用函数输出指定范围内的完数 (20 分)
- mysql 提交乱码问题_mysql数据库乱码问题
- 【白皮书分享】工业互联网平台新模式新业态白皮书.pdf
- 软考(一):迎战软考
- 三十二 、K8s审计
- 创业/商业计划书10大禁忌
- apkg格式怎么打开_pdf转图片怎么转?分享最简单的PDF转图片方法
- 矩阵微分与向量函数Taylor展开
- 基于java斗地主_码云推荐开源项目丨 用 Java 写了一个控制台玩的斗地主
- 土豆网终于忍不住了,开始了影视站转型。
- vue + scss,文本超过多行需要省略号,不起作用
- 亿图图示----流程图模块---样例展示
- python 通达信板块_[python]沪深龙虎榜数据导入通达信的自选板块,并标注于K线图上...
- python实用大全pdf_超级实用干货|九大技巧,带你用Python玩转PDF
- 税控服务器信息维护,税控服务器管理系统操作介绍(IE6版).ppt