三维立体视觉的提取
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三维立体视觉信息的提取
一、问题背景 (1)
一、实现方法 (1)
1.图像的获取与预处理 (1)
2.边缘信息提取 (2)
3.边缘检测与轮廓连结 (3)
4.利用线条分类识别三维物体 (4)
二、从二维图像中提取三维特征的局限性 (6)
一、问题背景
机器视觉是机器人感知周围环境的主要途径之一。
所谓机器人视觉即:使机器人具有视觉感知功能的系统。
机器人视觉可以通过视觉传感器获取环境的二维图像,并通过视觉处理器进行分析和解释,进而转换为符号,让机器人能够辨识物体,并确定其位置。
为了判断一个物体在空间的位置和形状,机器人往往需要获取两类信息,即明暗信息和距离信息。
目前成熟的光电成像技术都只能捕获二维明暗信息,而不能获得距离信息,所以直接通过这种途径获得的机器视觉也只能是二维的。
随着科学技术的发展,三维立体视觉的解决方案也如雨后春笋般涌出,其中就包括双目立体视觉(多镜头法),狭缝光投影法,时间差法等,但是如果能够要通过对二维图像(准确地说是2.5维图像,即含有透视关系的二维图像)的特征进行提取,并进而得到三维信息的话,无疑可以大幅度降低系统的复杂度。
本文将论述一种从二维图像中提取三维信息的方法。
这种方法对二维图像的边缘进行识别的处理,通过边缘的连接模式判断出视野中物体的三维特征。
这种方式输出的输出结果是一种与物体的三维结构相对应的二维特征组,后续处理也较为方便。
一、实现方法
1.图像的获取与预处理
用于进行三维特征提取的图像是一幅常规的二维灰度图,所以使用一个常规的CCD或CMOS图像传感器即可满足要求。
图像需要进行量化处理,即把图像信息分成许多像素点,这些亮点经过A/D转换后即可输入计算机进行处理。
大多数情况下,图像传感器获得的图像并不完美,其中难免会出现暗点或亮点。
图像中的这些暗点和亮点统称“噪点”。
噪点不仅降低了图像的分辨率,还会对后期的特征提取等处理造成很大的干扰,甚至引起识别错误。
此外由于外界光线强度的变化,图像的亮度分布也时刻在变化,为了给形态学处理的图像提供统一的条件,计算机在把获得图像进行形态学处理前,必须先对其进行预处理。
降噪是一种常见的预处理形式,与其对应的算法成为滤波算法。
常见的滤波算法分为线性滤波和非线性滤波,线性滤波又分为均值滤波和高斯滤波等。
线性滤波器的主要原理是二维卷积,也就是把某一像素点的亮度用周围一定范围的像素的亮度的某种运算组合来表示,下式就表示了一个3x3的均值滤波器的算子:
非线性滤波器(如中值滤波器)虽然没有采用卷积运算,但它也类似的在原始图像中取出一个范围,并对这个把处于这个范围的中心的像素的亮度用这个范围内
所有像素的亮度的某种关系表示。
这些滤波器都能够在很大程度上降低噪点的出现频率,为后期的形态学处理提供条件。
亮度均衡化则是用来弥补获取的图像曝光错误的一种方式。
众所周知,图像如果曝光不足会导致信息不明确,而曝光过度则会导致细节丢失,这都是形态学处理时不愿意遇到的情况。
亮度均衡化算法就是统计一幅图像的灰度直方图,并对其做一定的变换,使其曝光正确。
2.边缘信息提取
二维图像的信息量非常大,直接处理的难度非常大,所以我们必须从一副图像中提取出部分有用的信息,再对这些信息进行处理。
边缘轮廓信息是图像中非常重要的一种信息,所以往往被作为形态学处理的第一步。
所谓边缘提取算法就是把一副灰度图像转化为二值图像,灰度图像中的轮廓在二值图像中用1表示,而非轮廓位置用0表示。
边缘提取算法的种类非常地多,《机器人技术基础》一书中提到的算法称为Robert算子卷积法。
Robert算子可以表示为:
把Robert算子与二维图像卷积,可以得到图像的梯度图。
实际应用中,Robert算子边缘定位准,但是对噪声敏感。
适用于边缘明显且噪声较少的图像分割。
Roberts 边缘检测算子是一种利用局部差分算子寻找边缘的算子,Robert算子图像处理后结果边缘不是很平滑。
由于Robert算子通常会在图像边缘附近的区域内产生较宽的响应,故采用上述算子检测的边缘图像常需做细化处理,边缘定位的精度不是很高。
图2所示为利用Robert算子提取出的图1边缘的图像(使用MATLAB处理)。
图1:图像传感器拍摄到的原始图像
图 2:用ROB ER T 算子提取边缘的结果
3. 边缘检测与轮廓连结
边缘检测方法的基本思想是先检测图像的边缘点,再按照一定的策略连接成轮 廓,从而构成分割区域。
边缘检测主要采用各种算子来发现、强化图像中那些可能存在
边缘的像素点。
边缘检测算子除了有Roberts 算子外,还有Sobel 算子和Prewitt 算子、高斯偏导
滤波器以及Canny 边缘检测器等。
这里采用了一种简单的梯度边缘检测算法。
首先利用Y(亮度分量)构建256级灰度图像,再通过设定一阈值将该图像化成只有0和1的二值图像,然后根据一个
图像中有一个点P(i,j) ,灰度为f(i,j),与它相邻的3个点分别为P(i,j+1)、P(i+1,j) 、P(i+1,j+1) ,灰度分别是f(i,j+1) f(i+1,j) f(i+1,j+1)。
这些点的灰度非0即1,则该四个点的灰度梯度为
时,认为P 点为非轮廓点,而当D(i,j) = 0时,认为P 点为轮廓点。
计算机对图像中的每一点均按此算法予以处理后,便可知哪些点在轮廓上,哪些点不在轮廓上。
把判断出在轮廓上的点连结起来,即成为物体的轮廓。
在数字图像上每一像素可以和它周围的8个像素发生联系,如果中心点判定是轮廓点,而8个点中有一个被判定也是轮廓点,那么就把这两个连结起来。
接着再去判断被连结的那个点和它周围8个点的关系,如此类推,便可将整个轮廓连结起来。
下图为该种算法的Matlab 仿真图:
4. 利用线条分类识别三维物体
提取出二维图像的轮廓信息,还不足以分析出其中的三维特征,我们必须对轮廓信息进行进一步的模式化处理。
从轮廓中提取特征。
为此,可以将线条进行分类一
种方法是将线条分成以下五种类型,我们把轮廓的连接点分为如图3所示的5种类型:
图3:五种轮廓连接点类型
一幅二维图像的三维特征往往使用轮廓连接点的拓扑图表示,
然后再把图4中的轮廓连接点归类到这五种类型下,结果如图4所示:
图4:轮廓图中连接点的分类
最后,我们在根据各个轮廓节点之间的连接关系,把图4中所示的节点归纳成一个拓扑的形式:
图5:轮廓连接点拓扑图
计算机中可以储存有多种物体的拓扑图模板,计算出这个拓扑图后,程序只需把这幅拓扑图与内存中的各种拓扑进行比较,即可得知这是一个立方体的物体。
二、从二维图像中提取三维特征的局限性
虽然从二维图像中提取图像的三维特征的算法对设备的要求低,处理的数据量相对较小,输出地结果也比较规整。
但是这种算法也有其局限性。
首先,这种机器视觉智能识别由各种边缘组成的较有规则的物体,而对于一些圆滑的物体,如球等的识别效果就很不理想了。
其次,这种机器视觉依赖于特定的透视角度,如果机器人的视角发生变化,处理得到的节点拓扑图可能也会发生巨大的变化,适应性不强。
最后,这种算法虽然能够识别三维物体,但仍然无法获得深度信息。
也就是说,机器人虽然认出了这是一个立方体,但仍然无法获知它的厚度。
由此可见,二维图像提取三维特征的算法的确能够区别少数几个物件,但若要进一步获得物体的三维信息,还是需要结合一些其他的三维立体视觉算法。