点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

本次介绍一个发表于Computer Vision and Image Understanding的经典三维点云描述子RCS。

论文地址:Jiaqi Yang, Qian Zhang, Ke Xian, Yang Xiao, Zhiguo Cao, “Rotationalcontour ignatures for both real-valued and binary feature representations of 3Dlocal shape”, Computer Vision and Image Understanding, vol. 160, pp. 133–147,2017.

程序地址:https://github.com/TaylorAmy1995/3D-feature-description.git

1.引言

虽然上一次介绍的 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):

其中,d(p,˜ qk 0 (θi)) = kp− ˜ qk 0 (θi)k 的取值范围为 [0, r]。通过这个流程,我们可以为所有的旋转曲面计算一个子特征并得到 Nθ 个子特征。最终的 RCS 特征由将这些经过归一化后的子特征串接所得,即:

这里优先考虑操作的便捷性和时效性所以采用串接操作来融合多视角下的轮廓签名(签名即带有空间信息的特征表达,和直方图一起为最常见的两种点云局部特征表达方式)特征。RCS 特征因此由 Nθ × Nc 个浮点数组成。目前,只有距离特征值(关键点到轮廓点之间的距离)被赋予给轮廓点,其它特征例如纹理和曲率也能同时加入轮廓点的属性集内。这将进一步增强 RCS 的描述性和特征对于 RGB-D 数据的扩展性。

3.RCS 的二值化变种

本节将上一节介绍的浮点型 RCS 特征扩展为多个二值化特征。其中,我们提出了三种转化方法包括基于最大信息熵的二值化、量化以及几何二值化编码。图 3 给出了三种转化方法的示意图,下面我们将详述各个方法。

3.1.基于最大信息熵的二值化

阈值转化法可能是一种最直接的二值转化方法,所以我们首先尝试这种方法。由于RCS 最初由一系列轮廓签名特征形成,我们将逐次转化每个子特征,例如 θi 旋转角下对应的 fθi 签名特征,并将它们串接成一个位串。令 |fθi| 为归一化后的 fθi 特征,f(i) 表示特征 f 的第 i 个特征值,我们根据如下方法从 |fθi| 中计算一个位串 fθB i_threshold:

图 3 RCS 二值化的方法。(a)基于最大信息熵的二值化。(b)量化,我们采用 2 位-量化作为示例。(c)几何二值化编码。上述二值化编码过程被应用于所有轮廓签名(图 2)。

这里,t∗ 为一个待定的阈值,其可以从一些训练集中学习或调参得到。图像阈值转化法中的最大信息熵准则已被成功应用于如何决定合适的分割阈值。RCS将其应用于 t∗的取值从而获得最大的信息熵。应用场景中,最大信息熵对应的情况为位串中 0 的数量等于 1 的数量。该方法有两个优点:首先,我们能避免繁琐的调参工作从而使得 RCS充分自动化;其次,特征描述子的目的即充分描述隐含在局部曲面中的信息,所以转换后的位串需要最大化信息量。基于最大信息熵的二值化方法,我们能够最大化最后位串的信息量。如图 3(a)所示,在一维的情况下,最佳 t∗ 的取值将是|fθi| 所有元素的中值:

其中 Nc 为子特征维度,即轮廓点的数量。

3.2.量化

最初始的 RCS 特征中每一维度值由一浮点数来表达。在归一化的基础上,我们可以用多个位来表征一个浮点数从而减少内存占用。阈值转化法是将 N 个浮点数转化为 N个位,而量化方法不同的是其需要 NB(NB>1)位来表征一个浮点数。不可否认的是,用更多的位来拟合浮点数可以达到更精准的效果。然而当初始浮点型特征包含噪声的时候,适当减少位数将得到更好的效果。将考察 NB 分别为 2、4 和 6 位情况下的量化性能。图 3(b)展示了 2 位-量化的示意图。

3.3.几何二值化

目前为止已经介绍了阈值转化法和量化两种方法来转换浮点型 RCS。这里我们尝试将 RCS 具有的独特几何属性结合进二值化编码方法当中。回顾 RCS 中轮廓签名的计算过程,我们利用了轮廓点到距离点的距离来描述轮廓,从而生成了一系列线段(图 3(e)),线段长度的变化即能反映该轮廓签名的几何特征。在二值化条件的限定下,我们可以很直观地通过比较相邻的线段长度来反映线段长度的变化。因此,提出如下二值化方法:

其中 |fθi| 的第一个维度(当 i =1 时)将和最后一个维度比较从而形成一个闭环。由于包含了对比轮廓几何信息,我们将该方法命名为几何二值化方法。和阈值转化法一样,该方法将 N 个浮点数转化为 N 个位。

以上就是RCS描述子的算法过程以及对应的二值化方法,具体的实验效果与扩展应用读者们可以详细的阅读对应论文。

本文仅做学术分享,如有侵权,请联系删文。

推荐阅读:

  • 专辑|相机标定

  • 专辑|点云后处理

  • 专辑|SLAM从入门到精通

  • 专辑|事件相机

  • 专辑|OpenCV从理论到实践

  • 专辑|深度学习在3D视觉上的应用

  • 专辑|招聘与项目对接

  • 专辑|读书笔记

  • 专辑|学习资源&求职&编程

  • 专辑|结构光

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

基于旋转轮廓的点云局部浮点型和二值化特征描述(RCS)相关推荐

  1. [转载+原创]Emgu CV on C# (五) —— Emgu CV on 局部自适应阈值二值化

    局部自适应阈值二值化 相对全局阈值二值化,自然就有局部自适应阈值二值化,本文利用Emgu CV实现局部自适应阈值二值化算法,并通过调节block大小,实现图像的边缘检测. 一.理论概述(转载自< ...

  2. 【Zedboard】FPGA边缘提取 图像处理 基于ZYNQ完成 灰度图像 在VGA显示与 边缘提取 二值化 Verilog代码实现

    [Zedboard]FPGA边缘提取 图像处理 基于ZYNQ完成 灰度图像 在VGA显示与 边缘提取 二值化 Verilog代码实现 在项目开始到目前为止已经完成了在Zedboard的PL部分即FPG ...

  3. 基于C++(QT)的车牌识别实现——二值化处理

    文章目录 拟采用的技术路线 车牌图片打开 图片二值化 窗口UI实现 拟采用的技术路线 本次设计计划以最快的速度实现一个清晰车牌的识别,后续再增加识别精确度,故采取以下技术路线本篇文章主要讲述图像二值化 ...

  4. C#,图像二值化(24)——局部阈值算法的NiBlack算法及源程序

    1.局部阈值算法的NiBlack算法 摘要-医学图像的处理最为复杂人和计算机.磁性捐赠的脑组织共振成像(MRI)在许多领域是非常重要的问题例如手术和治疗.最常见的分割图像的最简单方法是使用阈值.在这项 ...

  5. opencv 轮廓放大_基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析...

    title: [python]基于openCV,PIL的深色多背景复杂验证码图像转灰度二值化,并去噪降噪处理分析 type: categories copyright: true categories ...

  6. 【图像处理】——图像的二值化操作及阈值化操作(固定阈值法(全局阈值法——大津法OTSU和三角法TRIANGLE)和自适应阈值法(局部阈值法——均值和高斯法))

    目录 一.二值化的概念(实际上就是一个阈值化操作) 1.概念: 2.实现方法 3.常用方法 二.阈值类型 1.常见阈值类型(主要有五种类型) (1)公式描述 (2)图表描述 2.两种特殊的阈值算法(O ...

  7. 基于堆栈二值化自动编码器和二值化神经的无约束人脸表情识别算法(An efficient unconstrained FERa based on BAEs and BNN)

    摘要(abstract) 虽然深度学习在许多模式识别任务中都取得了良好的效果,但对于含有大量参数集.标记数据有限的深度网络,过拟合问题仍然是一个严重的问题.在这项工作中,二进制自动编码器(BAEs)和 ...

  8. opencv 二值化_Python-OpenCV获取图像轮廓的图像处理方法

    一.引言 在<OpenCV阈值处理函数threshold处理32位彩色图像的案例>介绍了threshold 函数,但threshold 的图像阈值处理对于某些光照不均的图像,这种全局阈值分 ...

  9. Opencv全局二值化和局部二值化(python实现)

    文章目录 1.前置知识 (1).什么是形态学处理 (2).形态学图像处理 2.二值化 (1)全局二值化 1)函数 2)阈值类型 3)代码实战 (2)局部二值化(自适应阈值) 1)函数 2)阈值类型 1 ...

最新文章

  1. 吴恩达等ML大神对话:如何用机器学习应对气候变化 | NeurIPS 2019
  2. finished with exit code -1073740791 (0xC0000409)
  3. 零基础编程入门python视频-编程零基础应当如何开始学习 Python?
  4. Fedora14 yum 安装源的地址配置到官方归档地址
  5. python向量机使用方法_Python中支持向量机SVM的使用方法详解
  6. Qt Creator导出QML
  7. MFC关键技术-命令传递机制
  8. Java 最常见的 200+ 面试题全解析
  9. python linux调试_linux怎么调试python
  10. 大一c语言期末考试编程题
  11. android ts合并_ts视频合并工具安卓版
  12. [转]库存那些事儿_8_盘点
  13. 柠檬味百香果饮料怎么制作
  14. 编译过程 多个.c文件 . h文件 和main文件的 联系
  15. 你了解 JDK 8 Stream 数据流效率吗?千万级数据量性能如何?
  16. 利用感知机实现鸢尾花分类问题
  17. 读书笔记:[AWL]-2021.9.7
  18. 送书活动还有最后一本书,怎么办呢?
  19. inc si指令的作用_亲水作用色谱(HILIC)(二):可选的固定相有哪些?
  20. Python OpenCV 读取USB摄像头报错问题解决

热门文章

  1. 初学架构设计的第一步:需求、愿景与架构
  2. 九、OLTP 性能调整与优化--结语
  3. 打开线程 | 进程 | 协程的大门
  4. 程序员抱怨老婆追王一博入魔,长期被冷落想离婚
  5. 高德全链路压测——语料智能化演进之路
  6. 程序员网购18年不拆快递!意外离世后满屋快递被拆开,价值3500万!
  7. Java NIO Selector 详解
  8. 这些Java8官方挖的坑,你踩过几个?
  9. 实现容器的底层技术--云平台技术栈06
  10. 思岚M2M1~SLAM方案~导航