没有合适的资源?快使用搜索试试~ 我知道了~
三维场景表示是机器视觉的又一个关键技术.为了理解场景并与场景中的物体交互作用,必须将场景的三维数据进行有效的表示.三维场景表示包含有两个基本问题:场景重建和场景分割.场景重建(reconstruction)是指使用插值或拟合方法从采样点(稠密深度测量值或稀疏深度测量值)计算曲面的连续函数,实际中通常使用许多三角片或小平面片构成的网面来近似表示场景深度测量值;场景分割是将表示场景的网面分割成若干部分,每一部分表示一个物体或一个特定的区域,这样有利于物体识别、曲面精确估计等后处理算法的实现
资源推荐
资源详情
资源评论
第十三章 三维场景表示
三维场景表示是机器视觉的又一个关键技术.为了理解场景并与场景中的物体交互作用 ,
必须将场景的三维数据进行有效的表示.三维场景表示包含有两个基本问题:场景重建和
场景分割.场景重建(reconstruction)是指使用插值或拟合方法从采样点(稠密深度测量值或
稀疏深度测量值)计算曲面的连续函数,实际中通常使用许多三角片或小平面片构成的网面
来近似表示场景深度测量值;场景分割是将表示场景的网面分割成若干部分,每一部分表
示一个物体或一个特定的区域,这样有利于物体识别、曲面精确估计等后处理算法的实现.
本章从曲面的几何特征开始,讨论场景曲面重建和分割的一些基本方法.这些方法可
以将双目立体测距、主动三角测距、激光雷达测距等成像系统的输出值转换成简单的曲面
表示.这些基本方法包括把测量点转变成三角片网面、把距离测量值分割成简单的曲面片、
把测量点拟合成一个光滑曲面以及用测量点匹配一个曲面模型等.
13.1 三维空间曲线
讨论三维空间曲线的原因主要有两个,一是一些物体或物体特征可以直接用三维空间
曲线表示,二是三维空间曲线表示可以推广到三维空间曲面表示。曲线表示有三种形式:
隐式、显式和参数式。在机器视觉领域中,曲线的参数表示比隐式和显式表示更为常用。
三维曲线的参数形式为:
t t t
0 1
(13.1)
上 式 说 明 曲 线 上 的 一 点 可 由 参 数
t
表 示 的 三 个 函 数 来 定 义 , 曲 线 的 起 点 为
, 终 点 为 。 比 如 , 从 到
的直线段的参数方程为:
(13.2)
空间曲线的最通常的表示形式是三次多项式,下面我们将详细讨论.
13.1.1 三次样条曲线
物体表面上的线条可以是直线、弧线或是任意的曲线.曲线上的每一点位置可以表示成
参数形式 .一般的三维曲线都可以方便地用样条函数来表示,这和前
面讨论的平面曲线表示类似.三次样条函数是一系列首尾相连的表示复杂曲线的三次多项
式曲线,每一段三次样条函数的参数表示形式为:
(13.3)
其中
0 1 t
.三次多项式允许曲线通过确定的相切点,三次多项式是对于非平面曲线的
最低阶的多项式.将上式的系数表示成如下系数矢量:
(13.4)
而且 ,则三次多项式曲线可以重写为如下形式:
1
(13.5)
更复杂的曲线可以表示为一系列首尾相连的三次多项式:
(13.6)
其中 .如果定义第 个三次多项式段在单位区间
i t i 1
上,那么整个区间则
为
0 t n
.可以认为,这个三次多项式序列是起点为 ,终点为 的单一参数
曲线.这个三次多项式序列叫做一个三次样条函数,它是机器视觉和计算机图形学中表示
任意曲线的常用方式.
13.1.2 三维 B 样条曲线
三维 B 样条曲线很适合表示由点序列构成的曲线,因此可以将二维 B 样条的定义扩展
到控制点位于三维空间的三维 B 样条。例如对已知三维点序列 ,由等式
(7.28)给出第 阶三次多项式,而 由等式(7.31)给出.三维 B 样条曲线也不通
过控制点.
13.2 三维空间曲面的表示
本节将讨论机器视觉中常用的几种曲面表示.
13.2.1 多边形网面
平面多边形,也叫平面片(planar patch),可以组成复杂的网面(polygon mesh),以表
示各种物体的形状.图 13.1 三角形网面和四边形网面示意图。本节将介绍如何用平面片进
行物体多边形网面表示.
图 13.1 物体表面的网面表示,(a) 三角形网面表示,(b)四边形网面表示
第七章讨论了如何用若干个直线段端点(顶点)坐标表来表示一个多直线段,这一方法
也可推广到平面多边形,即平面多边形网面也可以用一系列平面多边形顶点坐标表来表示.
一个顶点常常是三个或三个以上多边形的公共顶点,因此,一个顶点在表中重复出现多次.
为了使多边形网面的每一个顶点在表中仅出现一次,可以使用一种间接的顶点坐标表示方
法,即对这些顶点从 1 到 进行编号,并按这一顺序将每一个顶点的坐标存入表中.每一
2
个多边形可用其顶点编号表表示.不过这种顶点表不能明显地表示相邻表面的边界,对于
一给定顶点,也不能有效地发现所有包含此顶点的表面.这些问题可以用翼边缘数据结构
(Winged Edge Data Structure)来解决.
翼边缘数据结构是一种网络数据结构,它具有三种类型数据记录:顶点、边和面.沿
着数据结构包含的数据指针可以找到所有元素的邻接关系,而无须搜索整个网面,也无须
将每一元素的所有邻接元素都存储起来.在多边形网面中,每一个顶点对应数据结构中的
一个顶点记录,每一个面对应一个面记录、每一条边对应一个边记录。这样,可以直接查
询一条边对应的两个顶点和两个多边形面,也可以直接查询一个顶点对应的所有多边形面
(或边),查询时间正比于该顶点对应的多边形面(或边)的数量.
翼边缘数据结构可以有效地表示三角面网面及其它具有多条边的多边形网面,并且不
要求各个多边形面的边数相等.由于各顶点坐标包含在顶点记录中,因此,多边形面(或
边)的位置可以由顶点的坐标计算出来.
每一个面记录指向该面的某一个边记录,每一个顶点记录指向该顶点对应的边记录。
因此,边记录包含将多边形面及其顶点连结成多边形网面的指针,并且允许对多边形网面
顶点进行快速的扫描.具体地说,每一个边记录包含有两个端点指针,其两侧的两个多边
形面指针和 4 个邻接翼指针,如图 13.2 所示。其中的面、顶点和边是用指南针的方向表
示的,这样做只是为了方便,实际上,多边形网面上的方向与地球方位没有任何关系.每
一条翼边允许对其对应的多边形顶点进行扫描,例如,可沿着东北翼边按顺时针方向扫描
东多边形面各顶点.
图 13.2 多边形网面翼边示意图
确定多边形面是在东面还是西面取决于进入翼边缘数据结构中多边形面的顺序.当扫
描一个多边形面时,必须首先检查此面是在边缘的东面还是西面.如果此面在这条边的东
面,则沿着东北翼顺时针扫描或沿着东南翼逆时针扫描;如果此面在此边的西面,则沿着
西南翼顺时针扫描或沿着西北翼逆时针扫描.顺时针、逆时针方向是以观察者为中心的.
顺时针方向是这样确定的:左手大拇指指向此平面的法线方向,左手的其它手指方向就是
沿此面的顺时针方向;右手大拇指指向此面的法线方向,右手的其它手指方向就是沿此面
的逆时针方向.如果多边形网面表示一个物体完整表面,则所有面的法线都向外.如果此
多边形网面表示一个曲面,则所有法线都指向此曲面的同一边.如果此曲面是图形曲面,
则 法 线 指 向 图 形 空 间 坐 标 的 正 坐 标 轴 方 向 , 例 如 , 如 果 多 边 形 网 面 为 图 形 表 面
,则此表面法线指向正 轴.
在多边形网面上增加一个多边形面的方法见算法 13.1,沿某一方向扫描多边形面各顶
3
剩余17页未读,继续阅读
资源评论
danielwang628
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 面向初学者的 Java 教程(包含 500 个代码示例).zip
- 阿里云OSS Java版SDK.zip
- 阿里云api网关请求签名示例(java实现).zip
- 通过示例学习 Android 的 RxJava.zip
- 通过多线程编程在 Java 中发现并发模式和特性 线程、锁、原子等等 .zip
- 通过在终端中进行探索来学习 JavaScript .zip
- 通过不仅针对初学者而且针对 JavaScript 爱好者(无论他们的专业水平如何)设计的编码挑战,自然而自信地拥抱 JavaScript .zip
- 适用于 Kotlin 和 Java 的现代 JSON 库 .zip
- AppPay-安卓开发资源
- yolo5实战-yolo资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功