机器人视觉目标数字图像实时分割研究

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

前言
机器人技术综合了多学科的发展成果,集成了智能控制、人工智能、信息处理、图像处理、检测与转换等专业为一体,跨机械、电子、自动控制、计算机等多学科,代表了高技术的发展前沿,在工业制造、军事、航天等方面都得到了广泛的应用。

它在人类生活应用领域中已经不断扩大。

人类从外界获取信息,一般是通过视觉、触觉、听觉、嗅觉等感觉器官来实现的。

其中,60%--80%的信息是由人的眼睛,即视觉来获得。

让机器人具有视觉是人类的一个梦想。

长期以来,人类的视觉系统一直是学者们非常感兴趣的领域。

人们进行了大量的研究,希望通过某种人工的手段来实现人类的视觉功能。

计算机视觉正是在这些研究的基础上逐渐形成的一门新的学科。

它包括所有由人类设计并在计算机环境下实现的模拟人的某些视觉功能的技术。

计算机视觉是一个相当新且发展于分迅速的研究领域,并成为计算机科学和人工智能的重要研究领域之一。

计算机视觉是在20世纪50年代开始的,当时的工作主要集中在二维图像分析和识别上,如光学字符识别、工件表面、显微图片和航空图片的分析和解释等。

此时的视觉研究都是基于二维的,而且多数是采用模式识别的方法完成分类工作。

总之,视觉是一种感知周围环境最复杂的手段,也是最有效的手段,随着科学技术的发展,计算机视觉的应用范围日益扩大,无论是生物视觉系统,其最终的目的都是要帮助较大的系统来完成它的职责或生命的生存,这是非常重要的任务。

因此视觉系统必须能够从景物图像中提取对完成这些任务十分有用的信息。

机器人视觉的目的,是使用机器人能够像人眼一样对环境进行感知、解释和理解。

现代信息社会的发展方向是数字化、网络化和智能化。

信息技术的创立和发展的轨迹就是人脑信息处理过程的模仿。

我们需要计算机与人之间可以没有障碍的交流沟通,这样才是信息智能化的最大的体现。

但是目前人机对话的问题是妨碍信息智能化最大的障碍。

计算机的图像识别,语音识别,文字识别等都难以尽如人意。

机器人在对目标进行识别时,首先要对目标进行分割。

目标分割对于机器人视觉处理来说有着至关重要的作用。

他处于处理系统的最底层,是其他高级应用如目标跟踪、目标识别的基础。

只有正确地检测并分割出运动目标才能进行后面的工作,否则就会产生很大的偏差和错误,以致后面的工作无法开展。

运动目标的图像分割是当前国内外研究的热门课题,国外许多重要的期刊如optical Engineering,IEEE
Transaction on Pattern Analysis and Machine Intelligence以及AD 报告等,经常刊登有关该领域的学术论文。

国内一些学者也在该领域做了大量的工作,并取得了一些成果,有的己经得到实际应用。

图像分割自20世纪70年代起一直受到人们的高度重视,至今已提出上千种分割算法.但因尚无通用的分割理论,现提出的分割算法大都是针对具体问题的,并没有一种适合所有图像的通用分割算法。

因此对机器人图像分割研究具有很大的研究价值。

第1章视觉机器人概况
§1.1 机器人视觉的概念
机器人视觉系统是指用计算机来实现人的视觉功能,也就是用计算机来实现对客观的三维世界的识别。

机器人视觉主要研究用计算机来模拟人的视觉功能从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制。

人类视觉系统的感受部分是视网膜,它是一个三维采样系统。

三维物体的可见部分投影到视网膜上,人们按照投影到视网膜上的二维成像来对该物体进行三维理解。

如果把三维客观世界到二维投影像看作是一种正变换的话,则机器人视觉系统所要做的是从这种二维投影图像(灰度阵列)到三维客观世界的逆变换,也就是根据这种二维投影图像去重建三维的客观世界。

§1.2机器人视觉的发展及应用
机器人视觉系统按其发展可分为三代。

第一代机器人视觉的功能一般是按规定流程对图像进行处理并输出结果。

这种系统一般由普通数字电路搭成,主要用于平板材料的缺陷检测。

第二代机器人视觉系统一般由一台计算机,一个图像输入设备和结果输出硬件构成。

视觉信息在机内以串行方式流动,有一定学习能力以适应各种新情况。

第三代机器人视觉系统是目前国际上正在开发使用的系统。

采用高速图像处理芯片,并行算法,具有高度的智能和普通的适应性,能模拟人的高度视觉功能。

国外机器人视觉系统应用于很多方面,如用于海洋石油开采,海底勘查的水下机器人;用于医疗外科手术及研究的医用机器人;帮助人类了解宇宙的空间机器人;完成特殊任务的核工业机器人等。

虽然我国在机器视觉方面的发展与世界先进水平相比还有一定差距,但机器视觉系统的研制工作也取得了一定的成果。

我国视觉机器人应用主要有以下目的:用以代替人类从事危险、有害和恶劣环境、超净环境下的工作;把人从肮脏、繁重的劳动中解放出来;提高劳动生产率,改善产品质量,快速响应市场要求,加强在国际市场的竞争能力。

§1.3 机器人视觉目前存在的主要问题
目前的机器人视觉存在以下一些问题:
1. 如何准确、高速(实时)地识别出目标。

2.如何有效地构造和组织出可靠的识别算法,并且顺利地实现。

这期待着高速的阵列处理单元,以及算法(如神经网络法、小波变换等算法)的新突破,这样就可以用极少的计算量高度地并行实现功能。

3.实时性是一个难以解决的重要问题.图像采集速度较低以及图像处理需要较长时间给系统带来明显的时滞,此外视觉信息的引入也明显增大了系统的计算量,例如计算图像雅可比矩阵、估计深度信息等等.图像处理速度是影响视觉系统实时性的主要瓶颈之一。

4.稳定性是所有控制系统首先考虑的问题,对于视觉控制系统,无论是基于位置、基于图像或者混合的视觉伺服方法都面临着如下问题:当初始点远离目标点时,如何保证系统的稳定性,即增大稳定区域和保证全局收敛;为了避免伺服失败,如何保证特征点始终处在视场内。

第2章运动目标的图像分割原理图像分割是一种重要的图像技术,在理论研究和实际应用中都得到了人们的广泛重视。

图像分割的方法和种类有很多,有些分割运算可直接应用于任何图像,而另一些只能适用于特殊类别的图像。

有些算法需要先对图像进行粗分割,因为他们需要从图像中提取信息。

值得提出的是,没有唯一的标准的分割方法,不同类型的图像,有相对应的分割方法对其分割,同时,某些分割方法也只是适合于某些特殊类型的图像分割。

分割结果的好坏需要根据具体的场合及要求衡量。

图像分割是从图像处理到图像分析的关键步骤,可以说,图像分割结果的好坏直接影响对图像的理解。

§2.1图像的二值化
二值化是最常用的图像阈值分割处理,图像分割是一种特殊的图像技术,也是一种重要而关键的图像分析技术。

图像分割是进行图像分析关键步骤,也是进一步理解图像的基础。

图像二值化是数字图像处理技术中的一项最基本的变换方法,即选择一个阈值,将图像转换为黑白二值图像,将所需要的目标部分从图像的背景中分离出来,用于图像分割及边缘跟踪等预处理。

假设一幅灰度图像的灰度值为,设有一阈值为,则
(2-1)
通常,用二值图像中的1来表示目标予图,用0来表示背景子图。

如果图像中某个像素的灰度值小于该阈值,则该像素的灰度值置为0,否则将其灰度值置为1。

其变换函数曲线如图2-1所示
图 2-1 二值化曲线示意图
二值化的方法很多,关键在于阈值T的选取,而T的取值方法又取决于二值化的技术,T的选择有基于由点的像素灰度值单独决定的、有由像素的局部特征决定的、也有基于全局像素决定的。

阈值可以分为两类:全局阂值和局部阈值。

全局阂值是对整个图像采用一个阈值进行划分,例如非零像素置l化、固定阈值二值化、判断分析二值化、基于灰度直方图的阈值法等。

局部阈值法是将图像分成一些子块,对于每一块选定一个阂值,如动态阈值法,如果已知正确的图像的一些特征,那么阈值确定只要试验不同的值,看是否满足特征即可,如果前景物体的内部具有均匀一致的灰度值,并分布在另一个灰度值的均匀背景上,那么图像的灰度直方图有明显双峰。

这种情况下可选择两峰之间的谷点作为门限值。

该方法的优点是比较简单,但不适用于两峰值相差比较大、有宽且平的谷底的图像。

二值化的关键是寻找一个分割阈值,选用不同的阈值其处理结果差异很大。

在确定阈值时,如果阈值定的过高,偶然出现的物体点就被认作背景,丢失所需的部分;反之,如果阈值定的过低,则会提取多余的部分(注意:当前背景为白色,目标对象为黑色时刚好相反)。

精确阈值的选取一般是在多次试验的结果下完成的。

§2.2边缘检测
图像的边缘是图像最基本的特征。

所谓边缘(或边沿),是指其周围像素灰度有阶跃变化或屋顶变化的那些像素的集合。

边缘广泛存在与物体与背景之间、物体与物体之间、基元与基元之间。

因此,它是图像分割所依赖的重要特征。

图像的边缘有方向和幅度两个特性。

通常,沿边缘走向的像素变化平缓,而垂直于边缘走向的像素变化强烈。

这种变换可能呈现阶跃型、屋顶性、和凸缘型,如图2-2所示。

这些变化分别对应景物中不同的物理状态。

例如,阶跃型变化常常对应目标的深度或反射边界,而后两者则常常反映表面法线方向的不连续。

图 2-2 灰度变化的几种类型
§2.2.1边缘检测的概述
边缘检测(Edge detection)是图像处理中的一个重要的环节。

经典的边缘检测方法是对原始图像按像素的某个邻域构造边缘检测算子。

边缘检测算子(Edge detector)是一组用于在亮度函数中定位变化的非常重要的局部图像预处理方法,边缘是亮度发生急剧变化的位置。

在微积分学中是用导数来描述连续函数的变化的,图像函数依赖于两个变量,即图像平面坐标,因此,描述边缘的检测算子使用偏导数。

我们给出一个模板和一幅图象。

不难发现原图中左边暗,右边亮,中间存在着一条明显的边界。

进行模板操作后的结果如下:。

可以看出,第3、4列比其他列的灰度值高很多,人眼观察时,就能发现一条很明显的亮边,其它区域都很暗,这样就起到了边沿检测的作用。

为什么会这样呢?仔细看看那个模板就明白了,它的意思是将右邻点的灰度值减左邻点的灰度值作为该点的灰度值。

在灰度相近的区域内,这么做的结果使得该点的灰度值接近于0;而在边界附近,灰度值有明显的跳变,这么做的结果使得该点的灰度值很大,这样就出现了上面的结果。

这种模板就是一种边沿检测器,它在数学上的涵义是一种基于梯度的滤波器,又称边沿算子,你没有必要知道梯度的确切涵义,只要有这个概念就可以了。

梯度是有方向的,和边沿的方向总是正交(垂直)的,例如,对于上面那幅图象的转置图象,边是水平方向的,我们可以用梯度是垂直方向的模板检测它的边沿。

例如,一个梯度为45度方向模板,可以检测出135度方向的边沿。

边缘检测技术对于数字图像是非常重要的,提取出边缘是将目标和背景区分开来的基础。

§2.2.2索贝尔算子
索贝尔算子(Sobel operator)是图像处理中的算子之一,主要用作边缘检测。

在技术上,它是一离散性差分算子,用来运算图像亮度函
数的梯度之近似值。

在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量。

核心公式:该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。

如果以A代表原始图像,Gx及Gy分别代表经横向及纵向边缘检测的图像,其公式如下:
and (2-2)
图像的每一个像素的横向及纵向梯度近似值可用以下的公式结合,来计算梯度的大小。

(2-3)
然后可用以下公式计算梯度方向。

(2-4)
在以上例子中,如果以上的角度等于零,即代表图像该处拥有纵向边缘,左方较右方暗。

Sobel 算子有两个,一个是检测水平边沿的 ;另一个是检测垂直平边沿的 。

与 和 相比,Sobel算子对于象素的位置的影响做了加权,因此效果更好。

Sobel算子另一种形式是各向同性Sobel(Isotropic Sobel)算子,也有两个,一个是检测水平边沿的 ,另一个是检测垂直平边沿的 。

各向同性Sobel算子和普通Sobel算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。

下面的几幅图中,图2-3为原图;图2-4为普通Sobel算子处理后的结果图;图2-5为各向同性Sobel算子处理后的结果图。

可以看出Sobel算子确实把图象中的边沿提取了出来。

图2-3 原图
图2-4 普通Sobel算子处理后的结果图
图2-5 各向同性Sobel算子处理后的结果图
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数,简单有效,因此应用广泛。

§2.3图像的膨胀操作
在获取的视频中,由于光照、背景与目标像素相近等的原因,在进行边缘检测,轮廓提取时,往往会出现断线的问题。

本文在进行边缘检测后增加一步膨胀操作,可以防止轮廓边缘断线的问题。

§2.3.1膨胀的基本原理
膨胀是数学形态学的一个基本运算。

数学形态学是一门建立在集论基础上的学科,是几何形态学分析和描述的有力工具。

由于其并行快速、易于硬件实现,已引起了人们的广泛关注。

目前,数学形态学己在计算机视觉、信号处理与图像分析、模式识别、计算方法与数据处理等方面得到了极为广泛的应用。

数学形态学可以用来解决抑制噪声、特征提取、边缘检测、图像分割、形状识别、纹理分析、图像恢复与重建、图像压缩等。

数学形态学是以形态结构元素为基础对图像进行分析的数学工具。

它的基本思想是用具有一定形态的结构元素去度量和提取图像中的对
应形状,以达到对图像分析和识别的目的。

数学形态学的应用可以简化图像数据、保持它们基本的形状特征、并除去不相干的结构。

数学形态学的基本运算有4个:膨胀、腐蚀、开启和闭合。

它们在二值图像中和灰度图像中各有特点,基于这些基本运算还可以推导和组合成各种数学形态学实用算法。

数学形态学的基本思想及方法适用于与图像处理有关的各个方面,如基于击中,击不中变换的目标识别,基于流域概念的图像分割,基于腐蚀和开运算的骨架抽取及图像编码压缩,基于测地距离的图像重建,基于形态学滤波器的颗粒分析等。

迄今为止还没有一种方法能像数学形态学那样既有坚实的理论基础,简洁、朴素、统一的基本思想,又有如此广泛的实用价值。

本文主要利用数学形态学中的膨胀的思想,实现目标区域的饱和,从而可以解决可能出现的轮廓断线问题。

膨胀可以看作是将图像X中的每一个点x扩大为B+x(其中B为结构元素),记作X⊕B。

若用集合语言,它的定义为
(2-5)
§2.3.2 结构单元的选取
在作形态变换运算时,首先必须选取结构单元(structure element)。

结构单元实际上是一个小窗口内的灰度“形态”,也就是当窗口大小一定时,只需要确定窗口内各点的数值大小。

一般来讲,结构单元的中心作为非边缘处的灰度差允许的值,而中心周围的元素主要在决定图像增强边缘运算时当前点与它周围的点之间“是否有边缘存在”起决定作用。

数值的确定一般根据特定的目的结合试验效果来进行。

利用大小不同的结构单元进行膨胀变换时,大尺度的结构单元会将一些错误的噪声信息并入到变换结果中,小尺度的结构单元又不能够完美的得到变换结果,使得膨胀变换失去意义,因此,结构单元大小的选取要恰到好处。

§2.4填充操作
虽然膨胀的二值图像可以比较精确地显示汽车的轮廓,但是在膨胀后的图像中,汽车内部仍有孔洞。

为了除去这些孔洞,我们需要对图像进行填充操作。

填充操作的一个用途就是对图像中的孔洞进行填充。

例如,对于一幅二值或者灰度图像,前景对象代表球体。

在图像中,这些对象应该是实心的,但是由于原始照片中存在反射现象而呈现圆环状态。

在对这幅图像作进一步的处理之前,可以先对其进行填充操作。

MATLAB中使用imfill函数进行此操作。

对于二值图像和灰度图像,
imfill函数规定的连通性决定了其处理过程中的边界。

Imfill函数与其他基于目标对象操作的函数不同,它对背景像素进行操作。

当用imfill函数指定连通性的时候,指定的是背景像素的连通性,而不是前景像素的连通性。

§2.5图像腐蚀
为了使分割后的图像看上去更自然,一般使用图像腐蚀操作使图像看上去更加光滑。

图像腐蚀是指删除图像中对象的边缘,删除的像素数码依赖于处理过程中使用的结构元素的大小和和形状腐蚀对Z中的集合A和B,B对A 进行腐蚀的整个过程如下:
⑴用结构元素B,扫描图像A的每一个像素
⑵用结构元素与其覆盖的二值图像做“与”操作
⑶如果都为1,结果图像的该像素为1。

否则为0
腐蚀处理的结果是使原来的二值图像减小一圈。

与图像膨胀类似,图像腐蚀的关键因素也是结构单元的选取,方法与原理与图像膨胀相同。

§2.6 MATLAB循环计算
由于视频文件是由一帧一帧的图像按一定顺序连接而成,对图像的处理方法同样适用于对视频文件的处理,只不过是逐帧选取图像,然后对每一帧图像进行处理,最后再将处理后的每帧图像按原来的顺序连接成视频。

因此就要用到循环计算的方法。

循环计算可按给定的条件,重复执行指定的语句。

Matlab用于实现循环计算的语句有for语句和while语句。

对于循环的使用需要注意,为了最快得到执行速度,在for循环被执行前,应预先分配数组。

否则,在for循环内每执行一次命令,就对数组重新分配一次内存,这样会降低matlab的执行效率。

§2.7本章小结
本章主要介绍了本设计中运动目标分割的各个步骤的基本原理,首先介绍了边缘检测以及边缘检测中的sobel算子,然后介绍形态学中的图像膨胀,图像腐蚀以及图像填充的原理以及功能。

最后介绍了基于MATLAB的循环处理的方法。

第3章软件设计与实现
软件设计与实现本设计的灵魂。

说得具体一点软件设计就是用编写程序的方法来满足实际工作的需要。

而程序是算法与语言的融合.在前一章中已经详细叙述了本文在实现运动目标分割时所研究和应用的算法.本章的主要内容就是用程序语言实现算法的结果,进而满足设计要求.
§3.1 软件概述
本设计是结合视觉机器人平台,在Windows XP平台上采用MATLAB 语言开发。

MATLAB语言是一种高级的矩阵语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。

MATLAB语言语言是基于流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。

而且这种语言可移植性好、可拓展性强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

MATLAB具有出色的图形处理功能,能够将向量和矩阵用图形的形式表现出来,它对整个图形处理功能进行了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能方面更加完善,而且对于一些其他软件所没有的功能,MATLAB同样表现了出色的处理能力。

§3.2 基于本设计的MATLAB处理方法
§3.2.1关于matlab的边缘检测
Matlab图像处理工具箱使用edge函数来检测边界,这个函数寻找像素值剧烈变化的像素点。

Edge函数用来求边界的方法很多,其中有sobel、prewitt、roberts、log、zeroscross和canny方法。

在边沿检测中,常用的一种模板是Sobel 算子。

Sobel 算子有两个,一个是检测水平边沿的;另一个是检测垂直平边沿的。

由于Sobel算子对于象素的位置的影响做了加权,因此检测效果较好。

故本文采用sobel方法,在matlab中其常见用法为:
BW=edge(I, ‘sobel’)
BW=edge(I, ‘sobel’,thresh)
BW=edge(I, ‘sobel’,thresh,direction)
BW=edge(I, ‘sobel’,thresh,direction,options)
其中,I是输入的图像;‘sobel’指所用的边缘检测方法为sobel;thresh 指阈值,低于该阈值的像素值将被忽略;direction是指sobel方法的检测方向,可取值horizontal,vertical或者both;options是一个可选的输入,默认情况下为‘thinning’,即边缘细化,当取‘nothinning’的时候,边缘不细化,因此可以加快算法的速度;BW是返回的图像的边缘,像素值为1的像素构成了图像的边缘。

如图所示为Sobel 边缘检测效果,左边为原始图像,右边为sobel边缘检测后的图像。

原始图像 sobel边缘检测后的图像
图 3-1
§3.2.2关于matlab的图像形态学操作
对图像进行膨胀可以使用matlab图像处理工具箱中的imdilate函数,imdilate函数主要接收两个输入参数,一个是要处理的图像(灰度或二值图像),另一个是strel函数返回的结构元素图像,或者是定义了结构元素领域的二值矩阵。

Imdilate函数常见调用方法如下:
IM2=imdialate(IM,se)
IM2=imdialate(IM,NHOOD)
IM2=imdialate(…,shape)
其中:
·IM是输入的要处理的二值图像或灰度图像;
·SE是strel函数返回的结构元素;
·NHOOD是一个元素值只有0或1的矩阵,规定了结构元素的领域;·shape规定了输出图像的形状,有两种选择,一种为‘same’,即跟输入图像相同大小;一种为‘full’,是全膨胀后的结果;
·IM2是返回的膨胀后的图像。

图3-2所示是二值图像膨胀后的结果,图3-3所示是灰度图像膨胀后的结果。

其中,左边为原始图像,右边为膨胀后图像。

原始图像膨胀后图像
图 3-2。

相关文档
最新文档