点云重建过程中,经常遇到恶心的概念,读文献时候,尤其英文文献,看到这些东西完全读不下去。

吐槽一下,在学习时候,直接上来这些概念让人很蒙,对于概念,学习还是先有一个直观的形象比较好,要想明白为什么这样定义,以及在实际中运动。我很推崇知乎上关于傅里叶变换通俗讲解的那个帖子,今天按着这个思路来整理下自己遇到的疑惑。

首先,讲讲“重建”:1、指的是通过CT、MRI、PET等设备,把一些物理属性转变成我们通常看见的图像的过程,常见算法有FBP、迭代重建等,多属于生物医学工程范畴,这种“重建”与本文关系不大。

接着,讲讲三维投影。“三维投影”概念先不管它,真实世界点(x,y,z),显示屏坐标(x,y),“三维投影”就是把真实世界的点投影到显示器上。

而“三维重建”:1、把双目(多目相机)相机拍摄的两张图片,可以通过sift之类的方法,把二维图像的对应点匹配出来(二维点),并且反推出三维世界中点坐标,这个过程一般有摄像机标定,图像匹配,最后重建出三维坐标。这是计算机视觉方面内容,这方面讨论网上资料比较多,今天也不讨论这。

2. 今天所讲的三维重建,是通过点云拟合物体表面的过程。点云可以通过相机获取(前面所讲相机标定等过程),也可以通过其他扫描设备获取。这应该算计算机图形学范畴。大名鼎鼎的重建算法:MC(点云实际是通过切片图形获得,这个最基础和最经典的),hoppe的Surface reconstruction from unorganized points,泊松等。这些方法都很经典,随便一篇都够一大段,而且我自己也不太会,以后有机会在学习。今天主角是delaunay/voronoi一类的算法(有个重要事实,默认采样点全来源与物体表面)。 这类算法直接输入的数据就是点云坐标(不需要法向量),输出就是三角化后的网格。

二维下示例:

三维下示例:

图片来源文献《Reconstruction of Water-tight Surfaces through Delaunay Sculpting》,二维是用三角形填充,三维是用四面体填充。

相关概念,整理如下:

概念来源摘自维基百科。

单纯形(simplex):几何学上,单纯形或者n-单纯形是和三角形类似的n维几何体。精确的讲,单纯形是某个n维以上的欧几里得空间中的(n+1)个仿射无关【仿射无关http://blog.csdn.net/hqh45/article/details/49591403】(也就是每有m维平面包含m+1个点;这样的点集被称为处于一般位置,也就是没有退化情况,三维下是指不存在五点共球)的点的集合的凸包。例如,0-单纯形就是点,1-单纯形就是线段,2-单纯形就是三角形,3-单纯形就是四面体,而4-单纯形是一个五胞体(每种情况都包含内部)。

delaunay之类算法中,二维用三角形(2-单纯形),三维用四面体(3-单纯形)填充物体的。

单纯复形(simplicial complex)是拓扑学中的概念,指由点、线段、三角形等单纯形“粘合”而得的拓扑对象,由前文点云重建出来的鸟和兔子都是单纯复形

维基中定义:

需要注意的是,约定空集是任何单纯形的面,所以两个不相交的单纯复形也可以被看作是一个单纯复形。

这里必须解释一下“单纯形的面”:

任何n+1点集的非空子集的凸包定义了一个n-单纯形,称为该n-单纯形的面。面本身也是单纯形。(n+1点)的m+1子集的凸包是一个m-单纯形,称为n-单纯形的m-面。 0-面(也即,一个点构成的面)称为顶点,而1-面称为边,(n − 1)-面称为面片,而n-面就是n-单纯形本身。

通俗地讲,二维下,三角形是2-单纯形,其面是线段(1-面,为三角形的子集);三维,四面体,3-单纯形,其面是三角形(2-面,其四面体的子集)

还看这只鸟,(b)就是就是凸包。凸包内任意两个点的连线仍然在凸包内。并且,给定点集,其凸壳是唯一的。

这里,我还想扯一下“维度”这个概念。当初对n维空间剖分很不理解。通常我们理解,一维是数轴,二维是平面,三维是空间,四维是空间+时间。四维以上,就不好表示了。而在线性代数中,“n维线性空间”是指线性空间中,极大无关组的个数为n。其中,把“线性”去掉,n维空间与我们理解的一维是数轴,二维是平面,三维是空间其实是一致的。通俗说,一维空间,极大无关组个数就是1,任意一维向量lambda=k*1,"1"是基向量;二维空间,极大无关组个数是2,基向量取(1,0)和(0,1),任意二维向量lambda=a*(1,0)'+b*(0,1)……以此类推

voronoi图(voronoi diagram/Dirichlet tessellation),它是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。

对于点集

里的种子点

,它的Voronoi区域

定义为:(百度百科,维基解释有点复杂)

1.设p,q是平面上的两个点,L是pq的中垂线,L将平面分为两个部分【L左】和【L右】,在【L】左内的点r有特性|pr|<|qr|,即位于【L左】内的点比平面其他点更接近p,不妨记H(p,q)=【L左】,同理H(q,p)=【L右】
   2.给定平面上n个点的点集S={p1,p2,……pn}。定义V(pi)是所有j(i!=j)的H(pi,pj)的交集,即V(pi)表示比其他点更接近于pi的电的轨迹是n-1个半平面的交,这是一个不多于n-1条边的凸多边形区域,称为关联于pi的Voronoi多边形(域)
(来源http://blog.csdn.net/wypblog/article/details/7246589)
delaunay三角剖分与voronoi图对偶关系,二维下,如图所示:
虚线为delaunay三角剖分,实线为voronoi图。对于pqr三个点,Vor(p)表示p点的voronoi区域,Vor(q)表示q点的voronoi区域,Vor(r)表示r点的voronoi区域。所谓对偶为:Vor(p)、Vor(q)、Vor(r)相交的voronoi顶点(红圈圈出的点),对于三角形pqr;Vor(p)、Vor(q)相交的voronoi边对应边三角剖分pq,Vor(p)对于点p。
百度百科定义:
尤其注意“空圆特性”(三维情况下空球准则,即四面体的外接球不包含其他点)

另外,我们希望重建出来的表面是“流形”,通俗地说,如果一个网格模型中存在多个(3个或以上)面共一条边,那么它就是非流形的(non-manifold),因为这个局部区域由于自相交而无法摊开展平为一个平面了。“流形”有几种说法,取一种较为简单的:

(http://www.sigvc.org/why/book/3dp/chap3.6.2.htm,《3D打印:三维智能数字化创造》)

其实,我们在三角剖分过程中,希望的“流形”就是对于每个三角形内部的边,该边只关联两个三角形;边界边只有一个关联的三角形。多面体(polyhedron)是没有边界边的,它也是封闭的流形表面。也就是说,每个三角形在其三个边上各邻接一个三角形。

并且,如果S(三角化的表面)中每个点是正则(regular)的,S是二维流形。所谓“正则”(regular),是指顶点在S中的领域在拓扑上是一个圆盘。

三维空间中,凸壳(剖分后外边界)是二维流形。二维空间中,凸壳是一维流形(前面那只鸟,(b)就是一维流形,外边界每点知识关联两条边)

上述概念中,“豪斯托夫空间”、“同胚”仍然很绕口。具体解释一下:

“拓扑空间”:

(http://ims.nju.edu.cn/~meijq/manifold.pdf,《流行与几何初步》)

再看网友对豪斯托夫空间的通俗解释:

“同胚”(homeomorphic)WIKI:

"同胚"例子:

“微分同胚”:

对维度{\displaystyle \leq 3}的流形,可证明同胚的流形必为微分同胚;换言之,此时流形上的拓扑结构确定了微分结构。在四维以上则存在反例

(来源WIKI)

三维重建中经常遇到的拓扑学概念的通俗解释相关推荐

  1. 拒绝“套话”,Android中基本概念的通俗解释

    前言 我在学习Android开发的过程中,会看到网上有人问类似这样的问题:什么是SDK?so文件是干什么的? 于是下面回答洋洋洒洒一大片,仔细一看,发现是维基,百度出来的标准答案,很全面,很正确.我时 ...

  2. 机器学习中目标函数、损失函数以及正则项的通俗解释

    目录: 前言: 1.什么是目标函数? 2.损失函数 3.正则化 总结: 目录: 前言: 今天看到一篇很精简的文章来说明目标函数.损失函数以及正则项是什么.以下是文章正文. 转自:https://xia ...

  3. 三维重建中旋转矩阵与平移矩阵思想误区(转载)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_34346607/article/details/52988221 三维重建中通常要解决 ...

  4. 【深度学习基础知识 - 28】三维重建中的点云、体素、mesh

    点云.体素和mesh都是三维重建中常用的三维物体的表示方法. 1. 点云 1.1 点云的概念 点云是不规则的数据结构,就是用一堆点来表示物体,这种方法的限制是点与点之间没有联系,缺乏物体的表面信息. ...

  5. 图解面向对象中的聚合与耦合概念

    图解面向对象中的聚合与耦合概念 简单理解聚合与耦合 在面向对象的设计中,我们经常会听到或用到聚合.耦合的概念.面向对象的目标就是设计出高聚合.低耦合的程序.然而,究竟什么是 聚合.什么是耦合,恐怕每个 ...

  6. oracle元数据存储在表空间,oracle db中数据和元数据的概念

    本帖最后由 warehouse 于 2014-8-10 11:58 编辑 02年研究dw相关的产品和业务时第一次听说了元数据的概念,很多资料上是这样描述元数据的概念的:元数据是定义或者描述数据的数据. ...

  7. 锁是网络数据库中的一个非常重要的概念

    锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体 实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我 ...

  8. Java中抽象类和接口在概念、语法和应用上的区别和关系

    2019独角兽企业重金招聘Python工程师标准>>> 春招开始了,盆友们都忙着准备笔试.准备面试,复习学过的知识点,当然我也不例外,在这里祝每一个"有心人"心想 ...

  9. 基于点云的三维重建_香港科技大学王煜教授:深度学习在物体三维重建中的应用...

    基于单幅图像的物体三维重建是计算机视觉领域的一个重要问题, 近十年来得到了广泛地关注. 随着深度学习的不断发展, 近年来逐渐成为一个新的学术研究热点问题. 计算机视觉研究的主要目标之一是从二维图像复原 ...

最新文章

  1. ubuntu websocket python2
  2. python opencv生成 html5 支持的mp4
  3. 【深度学习】一文看懂 (Transfer Learning)迁移学习(pytorch实现)
  4. 使用Solr 增加索引以及检索
  5. Pytorch(5)-梯度反向传播
  6. struts2中用interceptor实现权限控制
  7. 仿回收站效果的设计与实现
  8. STM8单片机定时器1编码器功能使用详解
  9. 未能加载文件或程序集“Oracle.DataAccess”或它的某一个依赖项。试图加载格式不正确的程序。...
  10. 史上速度最快!DNS 公共服务 1.1.1.1 正式发布
  11. k近邻算法_机器学习 第38集:k近邻算法k值过小和过大有什么危害?k值如何选取?( 含有笔记、代码、注释 )...
  12. Canvas API基础知识总结
  13. 计算机内存加速,电脑内存运行速度如何提升
  14. 原生js的animate方法
  15. open wrt 跟换主题_openwrt 更改默认主题
  16. 如何快速制作微信旅游相册?简单操作,效果精美!
  17. 利用PS实现图片的镜像处理
  18. 手机硬件组成学习总结
  19. win7计算机虚拟内存,Win7虚拟内存怎么设置最好?系统高手告诉你如何更好的设置虚拟内存...
  20. 保研边缘人如何自救(经管学姐)?

热门文章

  1. 11 wifi6速率_实测:华硕、华为、小米、水星,千元以内的wifi6路由器哪家强?...
  2. HTML入门基础(1)
  3. 计算机怎么配置IP地址,Windows系统如何给电脑设置IP地址
  4.  Meltdown论文翻译【转】
  5. 逻辑学自然科学教育计算机,科学网—【逻辑学知识】自然推理系统 - 黄荣彬的博文...
  6. Java job interview:WinForm界面特效设计案例导航图分享
  7. 超声波传感器--Arduino
  8. 【markdown】用markdown制作简历
  9. 2023-01-03 有关C++继承多态的一点想法
  10. 17岁少年找黑客攻击航司系统获刑4年