

基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)
source link: https://mp.weixin.qq.com/s/W14AMl-hxRQ93NAnvEPr9g
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
虽然上一次介绍的 TOLDI 描述子具有稳定、鉴别能力强的优点,但是 TOLDI 维度很高(1200 维)而且是浮点型描述子,这将不利于高效率的特征匹配和存储。在图像分析中,轮廓是一种稳定且具有一定描述能力的特征,而且解码图像轮廓所占用的维度资源远低于利用图像全部像素的方式。因此,这一次本文介绍基于轮廓签名描述的特征表达并借助旋转投影机制增强轮廓对于形状的描述能力,形成旋转轮廓特征(RCS)。
随着传感器技术的发展,例如微软 Kinect、谷歌 Tango 手机和平板的出现,点云数据的获取变得和图像一样便捷,人们可以利用电脑、手机和平板设备获得点云数据。在这些移动设备上的点云处理对于存储和时效性有着苛刻的要求。因此,点云的局部特征一方面需要具有一些本征属性例如抗刚体变换、局部模式鉴别能力以及在常见干扰下能保持稳定,另一方面需要使自身轻量化(快速、低维)来适应移动设备上的点云处理应用。传统的点云局部特征描述子可以按照是否基于 LRF 分为两类,目前非基于 LRF 的特征面临着描述性不足的问题。尽管基于 LRF 的特征鉴别能力强,但是维度相对较高,将占用大量内存空间并导致特征匹配耗时巨大。因此,实际应用中对于低维且描述能力、鲁棒性强的局部点云特征有着迫切的需求。
另一个强调的问题就是点云局部二值化特征表达。二值化特征和浮点型特征相比有诸多优势,例如极为快速的特征匹配(二值化特征可直接由异或操作完成特征相似度计算)以及占用内存少。二值化特征对于机器人以及嵌入式平台尤为重要,因为这些平台对于计算实时性要求很高。在二维计算机视觉领域,图像局部描述子按照数据类型可以分为浮点型和二值化两类。浮点型的图像局部特征包括 SIFT(scale invariant feature transform)和 HOG(histogram of gradients)等。二值化图像局部特征包括 BRIEF(binary robust independent elementaryfeatures)和FREAK (fast retinakeypoint)等。然而在三维计算机视觉领域,目前只有B-SHOT(Binary SHOT)特征为点云局部二值化特征。遗憾的是,B-SHOT 特征仍然存在 SHOT 特征对于点云数据分辨率变化敏感的问题并且特征鉴别能力有限。因此 B-SHOT难以得到令人满意的特征匹配结果。
图 1 RCS 特征描述机制示意图
在以上分析的促使下,本论文提出了旋转轮廓特征(rotationalcontour signatures,RCS)来同时达到对局部曲面的浮点型和二值化特征描述。图 1 展现了 RCS 特征描述的基本机制:我们首先不断地旋转一个三维物体来获得多视角的信息,然后在每个视角下观察三维形状在该视角投影下具有的二维轮廓来感知三维几何信息。RCS利用该机制来“看”局部形状。因此,作者提出了利用二维轮廓来表征三维形状。我们表明二维投影图的轮廓线索能够有效地、鲁棒地对局部三维曲面进行描述。不可避免的是,仅仅利用二维轮廓来表征整个投影图将丢失许多信息。为了解决该问题,我们将局部曲面在局部坐标系LRF 内不断旋转来捕获多视角信息。此外,提出了 RCS 的多个二值化变种,分别由基于最大信息熵的二值化、量化以及几何二值化编码计算得出。这些 RCS 二值化特征一方面和大多数二值化特征一样具有轻量级的优点,另一方面表现出了良好的描述性和鲁棒性。在三个数据库中展开的实验以及和大量现有描述子的对比验证了RCS 特征的有效性。
贡献主要包括以下两点:
• 一个基于多视角机制、二维轮廓特征表达的RCS 点云局部特征。RCS 具有描述性强、时效性高以及很强的抗噪声、点云分辨率变化、嘈杂和遮挡的能力;
• 基于初始提出的浮点型 RCS,该论文提出了多个 RCS 的二值化变种。和现存的 BSHOT不同的是,我们的 RCS 二值化特征具有很强的鉴别能力和鲁棒性并且极为紧凑。
图 2 RCS 特征描述机制示意图
2.旋转轮廓特征(RCS)
本节中,我们将介绍旋转轮廓特征 RCS 的浮点型版本。RCS 的计算流程如图 3-2 所示,包括 LRF 建立、局部曲面旋转、轮廓签名计算、子特征归一化和特征融合。
2.1局部坐标系建立
令 P 为输入的三维模型(点云数据),如果输入模型为三维网格,我们仅仅利用网格模型的顶点数据来计算 RCS 因为 RCS 的计算对象为三维无序点云。这也说明 RCS 特征的计算不需要对初始三维数据进行复杂的曲面重构例如三角化。对 P 中的任一关键点 p,计算其球形邻域点集为 Q = {qi : kqi − pk ≤ r},其中 r 为球形邻域的支撑半径。为了抗刚体变换和充分利用局部空间信息,我们采用和TOLDI 类似的方法为 Q 计算一个局部坐标系 LRF。在点 p 的局部坐标系可表达为L(p) = {x(p), x(p) × z(p), z(p)},其中 x(p) 和 z(p) 分别为 LRF的 x 轴和 z 轴。
因此,LRF 的计算主要包括 z 轴和 x 轴的计算。研究表明使用 p 周围的一小部分邻域点来计算 z 轴、Q 的边缘区域来计算 x 轴可以获得更高的可重复性。因此,我们选取一小部分邻域点集,来计算 z 轴。对于 x 轴,考虑到仅仅在 Q的边缘区域选取一个点将易受噪声干扰,则考虑 Q 边缘区域的所有点。令Qx = {qi x : 0.85 × r ≤ kqi x − pk ≤ r} 为 Q 的边缘的区域,x 轴的定义为:
其中 kx 为Qx 内点数,vi 是向量 pqx i 在 z(p) 切平面上 T 的投影。wi 是关于 qi x 在平面 T 上投影距离的一个权重,被定义为:
值得注意的是,wi 决定着 Qx 内点对于 x 轴计算的贡献,因为投影距离可以在几何信息较弱的区域内也提供很高的可重复性。最后,y 轴由 x 轴以及 z 轴之间的向量叉乘所得。
2.2. 局部曲面旋转
当LRF建立后,我们将局部曲面Q旋转至LRF坐标系内得到一个变换后的曲面Q0。为了解码Q0 的多视角信息,我们将Q0同时绕着L(p)中三个轴分别旋转{θi, i = 1, 2, . . . , Nθ}角度。算法中,旋转角度每次递增 30◦,因为该角度数值被证明能在特征冗余以及信息解码的全面性中取得一个较好的折中。
给定一个旋转角度θ,对应的旋转矩阵为:
所以,Nθ 个被旋转后的曲面可以由 Q0 · Rxyz(θ) 获得,记为 {Q0(θi), i = 1, 2, . . . , Nθ}。
2.3.轮廓签名编码和RCS 计算
目前,我们已经得到了 Nθ 个旋转后的局部曲面。对于曲面 Q0(θi) 我们需要设计一种合适的表征来描述当前视角反映的形状几何信息。相关的基于视角的特征描述方法包括Snapshots、RoPS 和TOLDI,它们利用所有邻域点的局部深度或点密度来进行特征编码。尽管这些方法能保证较高的鉴别能力,然而它们的稳定性不足因为局部曲面可能掺杂噪声等干扰。因此,仅仅利用局部曲面在当前视角投影下的轮廓区域进行特征编码。
具体来说,我们选定一个和 L(p) 的 xy 平面垂直的视点。首先,Q0(θi)中的所有点被投影在 xy 平面上从而产生一个二维图 M(θi)。其次,我们定义 Nc 条在 xy 平面上、关键点 p 为起点的射线。其中,射线和二维图 M(θi) 的交汇点被定义为轮廓点(如图 2(d)中黄色圆点所示)。值得注意的是,第一条射线和 x 轴重合而且任意两条相邻的射线之间的夹角是相等的。该规则的设定类似于 SIFT 中关于主方向的设定,以保证 RCS中每个轮廓签名特征在经历刚体变换时保持不变。最终,对于曲面 Q0(θi) 我们可以得到Nc个轮廓点 {˜qk 0 (θi), k = 1,2, . . . , Nc} 。
为了达到有效、快速的轮廓信息编码目的,RCS采用轮廓点到关键点 p 之间的距离来进行特征描述,得到子特征 f(θi):
其中 |fθi| 的第一个维度(当 i =1 时)将和最后一个维度比较从而形成一个闭环。由于包含了对比轮廓几何信息,我们将该方法命名为几何二值化方法。和阈值转化法一样,该方法将 N 个浮点数转化为 N 个位。
以上就是RCS描述子的算法过程以及对应的二值化方法,具体的实验效果与扩展应用读者们可以详细的阅读对应论文。
本文仅做学术分享,如有侵权,请联系删文。推荐阅读:Recommend
-
12
文 | 商汤 编 | 贾伟 在CVPR 2020上,商汤研究院链接与编译组和北...
-
32
文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读
-
36
前言 最近公司某小伙子做了一个商城的微信支付相关的接口,其中包含退款,在测试过程中发现部分单据没有退款,微信支付提示退款金额跟支付金额不匹配(大于支付金额),检查数据库和调试过程中,发现商品的单价和手工计算出来...
-
16
自适应采样非局部神经网络的点云鲁棒操作 Original...
-
7
基于正交投影的点云局部特征描述详解 Original...
-
5
果蝇(图片来自Google搜索) 可能有些读者最近会留意到ICLR2021的论文 《Can a Fruit Fly...
-
14
Python-基于OpenCV的轮廓填充 泛洪算法 孔洞填充 ...
-
5
python验证码识别1:灰度处理、二值化、降噪、tesserocr识别 2017-09-19编程技术 写爬虫有一个绕不过去...
-
4
局部和全局特征融合的点云显著性检测3D视觉工坊专注SLAM、点云、三维重建、结...
-
6
为什么计算机对浮点型数字计算存在误差? 我们输入的十进制小数在计算机中都是以二进制进行存储。比如: 我们把0.25转换为二进制 0.25 * 2 = 0.5 取0 0.50 * 2 = 1.0 取1 所以十进制0.25的二进...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK