图像处理与边缘检测的前景

2013-12-11 16:54:41 jungleli3 阅读数 2309
  • 图像特征提取运动估计

    认真学习本门课程后,学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用,同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听:...

    303人学习 AI100讲师
    免费试看


边缘检测和图像分割的联系:         

边缘检测后的图像是二值图像,对二值图像可以运用形态学操作来分割目标,所以边缘检测是图像分割的一个前提。但分割不一定非要用边缘检测。


图像分割:

概念:

        图像分割是将图像划分成若干个互不相交的小区域的过程,所谓小区域是某种意义下具有共同属性的像素的连通集合。
        从集合的观点看:它应该是具有如下性质的一种点集,集合R代表整个区域,对R的分割可看作将R分成N个满足以下五个条件的非空子集R1,R2,…,RN:


目的:
无论是图像处理、分析、理解与识别,其基础工作一般都建立在图像分割的基础上;
将图像中有意义的特征或者应用所需要的特征信息提取出来;
图像分割的最终结果是将图像分解成一些具有某种特征的单元,称为图像的基元;
相对于整幅图像来说,这种图像基元更容易被快速处理。


图像分割的特征:
分割出来的各区域对某种性质例如灰度,纹理而言具有相似性,区域内部是连通的的且没有过多小孔。
区域边界是明确的
相邻区域对分割所依据的性质有明显的差异

图像分割的方法:

一、基于像素灰度值的分割方法:阈值(门限)方法
二、基于区域的分割方法:通过直接确定区域间的边界来实现分割的边界方法;
三、基于边缘的分割技术:首先检测边缘像素, 再将边缘像素连接起来构成边界形成分割。


图像分割包含的内容:
边缘检测

边缘跟踪 :
从图像中一个边缘点出发,然后根据某种判别准则搜索下一个边缘点以此跟踪出目标边界。
阈值分割 :
原始图像——f(x,y)
灰度阈值——T
阈值运算得二值图像——g(x,y)
区域分割:
阈值分割法由于没有或很少考虑空间关系,使多阈值选择受到限制
于区域的分割方法可以弥补这点不足,它利用的是图像的空间性质,该方法认为分割出来的属于同一区域的像素应具有相似的性质,其概念是相当直观的。
传统的区域分割算法有区域增长法和区域分裂合并法。该类方法在没有先验知识可以利用时,对含有复杂场景或自然景物等先验知识不足的图像进行分割, 也可以取得较好的性能。但是,空间和时间开销都比较大。
区域生长法主要考虑象素及其空间邻域象素之间的关系
开始时确定一个或多个象素点作为种子,然后按某种相似性准则增长区域,逐步生成具有某种均匀性的空间区域,将相邻的具有相似性质的象素或区域归并从而逐步增长区域,直至没有可以归并的点或其它小区域为止。
区域内象素的相似性度量可以包括平均灰度值、纹理、颜色等信息。

区域生长:

主要考虑像素及其空间邻域像素之间的关系
开始时确定一个或多个像素点作为种子,然后按某种相似性准则增长区域,逐步生成具有某种均匀性的空间区域,将相邻的具有相似性质的像素或区域归并从而逐步增长区域,直至没有可以归并的点或其它小区域为止。
区域内像素的相似性度量可以包括平均灰度值、纹理、颜色等信息。
主要步骤:

选择合适的种子点
确定相似性准则(生长准则)
确定生长停止条件

区域分裂:

条件:如果区域的某些特性不满足一致性准则
开始:从图像的最大区域开始,一般情况下,是从整幅图像开始
注意:
确定分裂准则(一致性准则)
确定分裂方法,即如何分裂区域,使得分裂后的子区域的特性尽可能都满足一致性准则值


图像分割的基本原理:

图像分割是将图像划分成若干个互不相交的小区域的过程,小区域是某种意义下具有共同属性的像素的连通集合。
如不同目标物体所占的图像区域、前景所占的图像区域等;
连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径;
对于离散图像而言,连通有4连通和8连通之分。

    图像分割有三种不同的途径:
    1.是将各像素划归到相应物体或区域的像素聚类方法, 即区域法;
    2.是通过直接确定区域间的边界来实现分割的边界方法;
    3.是首先检测边缘像素,再将边缘像素连接起来构成边界形成分割。
   
    在图像分割技术中,最常用的是利用阈值化处理进行的图像分割。
    在图像的阈值化处理过程中,选用不同的阈值其处理结果差异很大;
    阈值过大,会提取多余的部分;
    阈值过小,又会丢失所需的部分;
    因此,阈值的选取非常重要。


边缘检测:

         在视觉计算理论框架中,抽取二维图像上的边缘、角点、纹理等基本特征,是整个系统框架中的第一步。这些特征所组成的图称为基元图。
         在不同“尺度”意义下的边缘点,在一定条件下包含了原图像的全部信息。
定义:
目前,具有对边缘的描述性定义,即两个具有不同灰度的均匀图像区域的边界,即边界反映局部的灰度变化。
局部边缘是图像中局部灰度级以简单(即单调)的方式作极快变换的小区域。这种局部变化可用一定窗口运算的边缘检测算子来检测。

边缘的描述:
1) 边缘法线方向——在某点灰度变化最剧烈的方向,与边缘方向垂直;
2) 边缘方向——与边缘法线方向垂直,是目标边界的切线方向;
3) 边缘强度——沿边缘法线方向图像局部的变化强度的量度。
 


        边缘检测的基本思想是通过检测每个像素和其邻域的状态,以决定该像素是否位于一个物体的边界上。如果一个像素位于一个物体的边界上,则其邻域像素的灰度值的变化就比较大。假如可以应用某种算法检测出这种变化并进行量化表示,那么就可以确定物体的边界。

 边缘检测算法有如下四个步骤:

滤波:边缘检测算法主要是基于图像强度的一阶和二阶导数,但导数的计算对噪声很敏感,因此必须使用滤波器来改善与噪声有关的边缘检测器的性能.需要指出,大多数滤波器在降低噪声的同时也导致了边缘强度的损失,因此,增强边缘和降低噪声之间需要折衷.

增强:增强边缘的基础是确定图像各点邻域强度的变化值.增强算法可以将邻域(或局部)强度值有显著变化的点突显出来.边缘增强一般是通过计算梯度幅值来完成的.

检测:在图像中有许多点的梯度幅值比较大,而这些点在特定的应用领域中并不都是边缘,所以应该用某种方法来确定哪些点是边缘点.最简单的边缘检测判据是梯度幅值阈值判据.

定位:如果某一应用场合要求确定边缘位置,则边缘的位置可在子像素分辨率上来估计,边缘的方位也可以被估计出来.

    在边缘检测算法中,前三个步骤用得十分普遍。这是因为大多数场合下,仅仅需要边缘检测器指出边缘出现在图像某一像素点的附近,而没有必要指出边缘的精确位置或方向.边缘检测误差通常是指边缘误分类误差,即把假边缘判别成边缘而保留,而把真边缘判别成假边缘而去掉.边缘估计误差是用概率统计模型来描述边缘的位置和方向误差的.我们将边缘检测误差和边缘估计误差区分开,是因为它们的计算方法完全不同,其误差模型也完全不同.


边缘检测的三个共性准则:
•好的检测结果,或者说对边缘的误测率尽可能低,就是在图像边缘出现的地方检测结果中不应该没有;另一方面不要出现虚假的边缘;
•对边缘的定位要准确,也就是我们标记出的边缘位置要和图像上真正边缘的中心位置充分接近;
•对同一边缘要有尽可能低的响应次数,也就是检测响应最好是单像素的。

几种常用的边缘检测算子主要有Roberts边缘检测算子,Sobel算子、Prewitt算子、Krisch边缘算子,高斯-拉普拉斯算子。


==================================

图像特征:

图像特征是指图像中可用作标志的属性,它可以分为统计特征和视觉特征两类。
图像的统计特征是指一些人为定义的特征,通过变换才能得到,如图像的直方图、矩、频谱等;
图像的视觉特征是指人的视觉可直接感受到的自然特征,如区域的亮度、纹理或轮廓等

轮廓提取:

二值图像轮廓提取的算法非常简单, 就是掏空内部点: 如果原图像中有一点为黑,且它的8个邻点都是黑色时,说明该点是内部点, 将该点删除(置为白色像素值255)。对图像中所有像素点执行该操作便可完成图像轮廓的提取。

模板匹配:
模板匹配是指用一个较小的图像,即模板与源图像进行比较, 以确定在源图像中是否存在与该模板相同或相似的区域, 若该区域存在, 还可确定其位置并提取该区域。

形状匹配:
        形状也是描述图像内容的一个重要特征, 利用形状进行匹配需要考虑三个问题。首先,形状常与目标联系在一起,所以相对于颜色, 形状特征可以看作是更高层次的图像特征。要获得有关目标的形状参数,常常要先对图像进行分割, 所以形状特征会受图像分割效果的影响。其次,目标形状的描述是一个非常复杂的问题,至今还没有找到能与人的感觉相一致的图像形状的确切数学定义。最后,从不同视角获取的图像中目标形状可能会有很大差别,为准确进行形状匹配,需要解决平移、 尺度、 旋转变换不变性的问题。
标的形状常常可以用目标的轮廓来表示,而轮廓是由一系列边界点所组成的。一般认为,在较大尺度下常常能较可靠地消除误检并检测到真正的边界点, 但在大尺度下对边界的定位不易准确。相反,在较小尺度下对真正边界点的定位常比较准确,但在小尺度下误检的比例会增加。所以,可考虑先在较大尺度下检测出真正的边界点,再在较小尺度下对真正边界点进行较精确的定位。小波变换和分析作为一种多尺度、 多通道分析工具,比较适合对图像进行多尺度的边界检测。

2019-11-15 13:57:37 BOTAK_ 阅读数 506
  • 图像特征提取运动估计

    认真学习本门课程后,学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用,同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听:...

    303人学习 AI100讲师
    免费试看

图像分割与边缘检测

图像分割在整个图像处理过程中的作用
1
一些概念:前景,背景

三大类方法

  1. 根据区域间灰度不连续搜寻区域之间的边界(奇异性检测,边缘连接,边界检测)
  2. 以像素性质的分布进行阈值处理(阈值处理)
  3. 直接搜寻区域进行分割(基于区域的分割)

奇异性检测

奇异性

图像的奇异性是指图像局部像素的平滑程度,一般情况下,图像的局部区域的像素值是光滑的只有在边界的部分图像的像素值是不光滑的,也就是说是奇异的。
奇异性主要有:点脉冲(遥感图像与卫星成像),线,边缘

  • 点检测 就是用一个8邻域模版
  • 线检测 一般而言有四个模版 水平,正向45度,垂直,反向45度,四个模版算子同时进行,然后取较大值属于的方向
  • 边缘检测 (一阶导数与二阶导数)
    • 梯度是图像对应二维函数的一阶导数,可以用第一,第二,以及无穷范数来衡量梯度的值,梯度的方向为图像的二维函数像素值变化率最大的方向
    • 由于图像由离散的像素点构成,下面的算子用差分近似偏导数
    • Roberts算子
    • Sobel算子
    • Prewitt算子
    • LOG算子
    • Canny算子
Roberts算子

Gx=[1001]G_x = \begin{bmatrix}1 & 0 \\0 & -1\end{bmatrix}

Gy=[0110]G_y = \begin{bmatrix}0 & 1 \\-1 & 0\end{bmatrix}
然后,Roberts算子采用第一范数衡量梯度的幅度
G(x,y)=Gx+Gy|G(x,y)| = |G_x| + |G_y|
Roberts算子对具有陡峭的低噪声图像效果比较好

Sobel算子

Gx=[101202101]G_x = \begin{bmatrix}-1 & 0 & 1\\-2 & 0 & 2 \\-1 & 0 & 1 \end{bmatrix}

Gx=[121000121]G_x = \begin{bmatrix}1 & 2 & 1\\0 & 0 & 0 \\-1 & -2 & -1 \end{bmatrix}
然后,Sobel算子采用无穷范数衡量梯度的幅度
G(x,y)=max(Gx,Gy)|G(x,y)| = max(|G_x| , |G_y|)
Sobel算子对灰度渐变和噪声较多的图像处理的比较好

Prewitt算子

Gx=[101101101]G_x = \begin{bmatrix}-1 & 0 & 1\\-1 & 0 & 1 \\-1 & 0 & 1 \end{bmatrix}

Gx=[111000111]G_x = \begin{bmatrix}-1 & 1 & 1\\0 & 0 & 0 \\-1 & -1 & -1 \end{bmatrix}
然后,Prewitt算子采用无穷范数衡量梯度的幅度
G(x,y)=max(Gx,Gy)|G(x,y)| = max(|G_x| , |G_y|)
Prewitt算子对灰度渐变和噪声较多的图像处理的比较好

Canny算子

Canny算子的梯度是用高斯滤波器的导数计算的,检测边缘的方法是寻找图像梯度的局部极大值。
Canny算法步骤如下:
① 用高斯滤波器平滑图像;
② 计算滤波后图像梯度的幅值和方向;
③ 对梯度幅值应用非极大值抑制,其过程为找出图像梯度中的局部极大值点,把其他非局部极大值点置零以得到细化的边缘;
④ 用双阈值算法检测和连续边缘,使用两个阈值T1和T2(T1>T2),T1用来找到每条线段,T2用来在这些线段的两个方向上延伸寻找边缘的断裂处,并连接这些边缘。其中T1代表大于该值的肯定是边缘,T2表示小于该值的肯定不是边缘。

非极大值抑制:

沿幅角方向检测模值的极大值点,即边缘点,遍历8个方向图像像素,把每个像素偏导值与相邻像素的模值比较,取其MAX值为边缘点,置像素灰度值为0.

双阈值检测:

由于单阈值处理时,合适的阈值选择较困难,常常需要采用反复试验,因此采用双阈值检测算法。
对经过非极大值抑制后的图像作用两个阈值th1,th2,th1=0.4th2,两个阈值作用后得到两个图像1、2,较大阈值检测出的图像2去除了大部分噪声,但是也损失了有用的边缘信息。
较小阈值检测得到的图像1则保留着较多的边缘信息,以此为基础,补充图像2中的丢失的信息,连接图像边缘。

连接图像边缘

For Example
2
3

基于二阶导数的边缘检测

图像灰度二阶导数的过零点对应边缘点
4

Laplace算子

拉普拉斯(Laplace)算子是离散二维二阶导数的最简单形式

Marr算子

拉普拉斯-高斯边缘检测算子 LOG:Laplacian Of Gaussian;Marr算子
基本思想:由于拉普拉斯算子对于噪声比较敏感,因此采用先用高斯函数对图像滤波,然后对滤波后的图像进行拉普拉斯运算,算得的值等于零的点认为是边界点。(Marr和Hildreth 1980)
在实际使用中常常对LOG算子进行简化,使用差分高斯函数DOG代替LOG
各种边缘检测算子的比较

算子 特点
Roberts算子 利用局部差分算子寻找边缘,边缘定位精度较高,但容易丢失一部分边缘,同时由于图像没经过平滑处理,因此不具备抑制噪声能力。该算子用于具有陡峭边缘且噪声低的图像效果较好。
Sobel算子和Prewitt算子 都是对图像先作加权平滑处理,然后再作微分运算,所不同的是平滑部分的权值有些差异,因此对噪声具有一定的抑制能力,但不能完全排除检测结果中出现的虚假边缘。虽然这两个算子边缘定位效果不错,但检测出的边缘容易出现多像素宽度
Laplacian算子 是不依赖于边缘方向的二阶微分算子,对图像中的阶跃型边缘点定位准确,该算子对噪声非常敏感,它使噪声成分得到加强,这两个特性使得该算子容易丢失一部分边缘的方向信息,造成一些不连续的检测边缘,同时抗噪声能力比较差
LOG算子 该算子克服了Laplacian算子抗噪声能力比较差的缺点,但在抑制噪声的同时也可能将原有的比较尖锐的边缘也平滑掉了,造成这些尖锐边缘无法被检测到

边缘连接和边界检测

why?为什么要进行边缘连接

自然物体是实体,边缘必须连续切封闭,由于噪声、照明等产生边缘间断,使得一组像素难以完整形成边缘,因此,在边缘检测算法后,使用连接过程将间断的边缘像素组合成完整边缘

  • 局部处理
    分析图像中每个边缘点(x,y)的一个邻域内的像素,根据某种准则将相似点进行连接,由满足该准则的像素连接形成边缘,如何确定边缘像素的相似性,边缘像素梯度算子的响应强度,边缘像素梯度算子的方向(Canny 算子)
  • 整体处理之霍夫变换
    对于边界上的n个点的点集,找出共线的点集和直线方程。
    6

阈值处理

基本思想

7

基本全局阈值

计算基本全局阈值算法

  1. 选择一个T的初始估计值
  2. 用T分割图像,生成两组像素:G1由所有灰度值大 于T的像素组成,而G2由所有灰度值小于或等于T的 像素组成
  3. 对区域G1和G2中的所有像素计算平均灰度值µ1和µ2
  4. 计算新的阈值 T = (µ1+µ2)/2
  5. 重复步骤2到4,直到逐次迭代所得的T值之差小于 事先定义的参数T0
    8

基本自适应阈值

单一全局阈值存在的问题:
不均匀亮度图像无法有效分割

将图像进一步细分为子图像,并对不同的子图 像使用不同的阈值处理
解决的关键问题:如何将图像进行细分和如何为得到的子图像估计阈值
自适应阈值:取决于像素在子图像中的位置
9

最佳全局和自适应阈值

它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小

通过边界特性选择阈值

通过边界特性选择阈值
基本思想:
如果直方图的各个波峰很高、很窄、对称,且被很深的波谷分开时,有利于选择阈值
为了改善直方图的波峰形状,我们只把区域边缘的像素计算进直方图,而不考虑区域中间的像素
用微分算子,处理图像,使图像只剩下边界中心两边的值

这种方法有以下优点:
1)在前景和背景所占区域面积差别很大时, 不会造成一个灰度级的波峰过高,而另一 个过低
2)边缘上的点在区域内还是区域外的概率是相等的,因此可以增加波峰的对称性
3)基于梯度和拉普拉斯算子选择的像素,可以增加波峰的相对高度(对比度较大)

基于不同变量的阈值

RGB

基于区域的分割

区域生长的基本概念

区域生长的基本思想是将具有相似属性的像素集合起来构成区域。
具体先对每个需要分割的区域找一个种子像素作为生长的起始点,然后将种子像素周期邻域中与种子像素有相同或相似性质的像素合并到种子像素所在的区域。
将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素。

四叉树分解的分割法

将方形的原始图像分成四个相同大小的方块,判断每个方块是否满足一致性标准;如果满足就不再继续分裂,如果不满足就再细化成四个方块,并对细分得到的方块继续应用一致性经验。
这个迭代重复的过程直到所有的方块都满足一致性标准才停止。
最后,四叉树分解的结果可能包含多种不同尺寸的方块。

用平均灰度分割

基于PDE的图像分割

偏微分方法(Partial Differential Equations, PDE)的图像分割
优点:
1)直接对图像进行分析,是一种连续的模型,连续的微分算子代替了原始的离散滤波,更易于实现网格的划分和局部非线性分析。
2)分割提取的边缘是闭合的连续曲线,很好的避免传统方法先检查出边缘点在进行边缘连接的过程。
3)能在模型中引入图像的曲率、梯度等几何信息,同时还能够融入图像的先验知识和形状信息来指导模型分割

2014-04-10 14:39:13 baimafujinji 阅读数 6421
  • 图像特征提取运动估计

    认真学习本门课程后,学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用,同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听:...

    303人学习 AI100讲师
    免费试看
  • 基于梯度的方法
  • Roberts, Sobel, Prewitt
  • 带方向的边缘检测
  • Prewitt, Kirsch, Robinson
  • 基于多次求导的方法
  • 拉普拉斯算子,(高斯拉普拉斯)LoG,(高斯差分)DoG
  • 多级边缘检测
  • Canny算法

任何一个学科或者一门学问从提出到发展,再到完善,都是一个漫长而循序渐进的过程。这个过程可能是几十年,也可能是上百年。但后人在学习的时候可能只需要几天的时间。如何在这样有限的时间里最大程度汲取前人几十年的思想精髓应当是一个值得思索的问题。如果仅仅只是零星的学到了几个知识点,那么这些离散的知识点终不能构筑起稳健和完备的知识体系。要真正学到精华,首先就必须要着力理清这门学问的发展脉络,然后从它的一次一次具有重大意义的改进中深入考察先贤们当初所面对的问题是什么,他们又是如何思考,以及如何解决问题的。如果能够把这个脉络整理清楚,不仅说明你对相关理论的认识已经有了质的飞跃,而且更是为你后续的进一步创新奠定了坚实的基础。

上世纪六十年代到八十年代末是边缘检测理论发展最为迅猛的黄金时段。我们现在所学习的主要理论和方法几乎都诞生在那段时期。Prewitt是关于梯度的边缘检测理论的集大成者和主要代表人物,他的主要理论都收录在1970年出版的文献[6]中,这部文献在后续涉及边缘检测内容的图像处理著作中被引用率极高。Prewitt和Kirsch已经开始对带有方向性的边缘检测技术有所涉足,但是为这一部分内容发展和应用起到至关重要作用的人当属后来的Robinson,Robinson总结并发展了Prewitt和Kirsch的有关成果,他最重要的理论贡献主要被收录在1977年的文章[5]中。当然,值得一提的是上面这些人当中Kirsch的名气其实是最大的。早在1947至1950年间他所领导研究小组就曾创造出了美国的第一台内部可程序化计算机(SEAC),他同时是扫描仪的发明人,他也是创造了第一张数字图像的人。他的突破性成果成为了后来卫星成像,以及诺贝尔奖获得者豪斯费尔德的CT扫描技术等众多科技创新的基础。

利用梯度的方法对灰度值变化强烈的边缘进行检测效果非常明显,但是对于过度的和缓的边缘则力不从心。考虑到基于多次求导(拉普拉斯算子)所得的边缘图像中噪声的影响非常大,Marr在1980年发表的文章[4]中提出了LoG算法,通过引入高斯滤波的方法来降低噪声的影响。Marr本来是一位英国神经科学家和心理学家,他最初引入高斯滤波的想法其实主要是从人类视觉特性的角度出发考虑的。Marr创造性地将神经生理学、心理学和人工智能融入到新的视觉处理模型中,并当之无愧地成为视觉计算理论的创始人。可惜天妒英才,Marr在35岁时因病英年早逝。就本书所涉及的内容而言,许多经典算法在设计上都明显受到Marr学术思想的影响。在Marr的LoG算法之后提出的边缘检测算法中,高斯滤波都是必选项(例如经典的Canny算法中也保留了高斯滤波的处理过程)。甚至到后面本书会讲到的SIFT算法中,通过高斯滤波构建多尺度空间表达的做法,也是从人类视觉生理特性角度考虑的。

到了1986年,站在众多巨人肩上的美国计算机科学家John Canny系统地对过往的一些边缘检测方法和应用做了总结,提出了当前被广泛使用的Canny边缘检测算法,更重要的是他还提出了后来被称为Canny准则(Canny's Criteria)的边缘检测三准则。Canny准则的目的在于:在对信号和滤波器做出一定假设的条件下利用数值计算方法求出最优滤波器并对各种滤波器的性能进行比较。

Canny准则的具体内容包括3个方面。

1)好的检测效果

好的检测效果应当首要满足对边缘的错误检测率要尽可能低这个条件。这也就意味着在图像上边缘出现的地方检测结果中不应该没有,同时没有出现边缘的地方也不应当存在虚假的结果。尽管边缘检测是存在一定误差的,但边缘检测的最终要求应当是使误差尽可能的减小,并最终收敛在一个实际中可以允许的范围内。

2)对边缘的定位要准确

也就是要求检测结果所标记的边缘位置要和图像上真正边缘的中心位置充分接近。

3)对同一边缘要有低的响应次数

这一点是出于对检测速度的考虑。

Canny不但首次明确而全面地提出了这三条准则,更重要的是Canny给出了这三条准则的数学表达式。由此寻找给定条件下最优算子的工作转化为一个泛函的优化问题。从而为寻找给定条件下最优滤波器开辟了新的更有效的道路。上述这些工作的重要意义就在于由Canny创立的计算理论解释了边缘检测这项技术是如何工作的。


参考文献及推荐阅读材料

[1] Muthukrishnan R., M. Radha. Edge DetectionTechniques for Image Segmentation. International Journal of ComputerScience & Information Technology,Vol. 3, No. 6, Dec. 2011

[2] William K. Pratt.Digital Image Processing: PIKSInside, Third Edition.John Wiley & Sons, Inc.,2001

[3] John Canny.Computational Approach To Edge Detection.IEEE Transactionson Pattern Analysis and Machine Intelligence,Vol. 8, No. 6,Nov. 1986

[4] D. Marr, E. Hildreth.Theory of Edge Detection.Proceedingsof the Royal Society of London, Vol. 207, No. 1167, Feb. 1980

[5] G. S. Robinson.Edge Detection by Compass GradientMasks.Computer Graphics and Image Processing,Vol. 6, No. 5, Oct. 1977

[6] J. M.S. Prewitt.Object Enhancement and Extraction, in PictureProcessing and Psychopictorics (B.S. Lipkin and A. Rosenfeld, eds).Academic Press, 1970



2019-09-15 16:56:00 weixin_30724853 阅读数 152
  • 图像特征提取运动估计

    认真学习本门课程后,学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用,同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听:...

    303人学习 AI100讲师
    免费试看

 

原文链接:边缘检测与图像分割

作者:HUSTLX

1图像分割原理

图像分割的研究多年来一直受到人们的高度重视,至今提出了各种类型的分割算法。Pal把图像分割算法分成了6类:阈值分割,像素分割、深度图像分割、彩色图像分割,边缘检测和基于模糊集的方法。但是,该方法中,各个类别的内容是有重叠的。为了涵盖不断涌现的新方法,有的研究者将图像分割算法分为以下六类:并行边界分割技术、串行边界分割技术、并行区域分割技术、串行区域分割技术、结合特定理论工具的分割技术和特殊图像分割技术。而在较近的一篇综述中,更有学者将图像分割简单的分割数据驱动的分割和模型驱动的分割两类。下面将图像分割方法主要分以下几类:基于阈值的分割方法、基于区域的分割方法、基于边缘的分割方法、基于数学形态的分割方法以及基于特定理论的分割方法等,对其中主要的分别进行简要介绍。

1.1灰度阈值分割法

是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。阈值分割方法实际上是输入图像f到输出图像g的如下变换:

 

其中,T为阈值,对于物体的图像元素g(i,j)=l,对于背景的图像元素g(i,j)=0。

由此可见,阈值分割算法的关键是确定阈值,如果能确定一个合适的阈值就可准确地将图像分割开来。如果阈值选取过高,则过多的目标区域将被划分为背景,相反如果阈值选取过低,则过多的背景将被划分到目标区[7]。阈值确定后,将阈值与像素点的灰度值比较和像素分割可对各像素并行地进行,分割的结果直接给出图像区域。

阈值分割必须满足一个假设条件:图像的直方图具有较明显的双峰或多峰,并在谷底选择闭值。因此这种方法对目标和背景反差较大的图像进行分割的效果十分明显,而且总能用封闭、连通的边界定义不交叠的区域。

阈值分割法主要分为全局和局部两种,目前应用的闭值分割方法都是在此基础上发展起来的,比如最小误差法、最大相关法、最大嫡法、矩量保持法、Otsu最大类间方差法等,而应用最广泛的是Otsu最大类间方差法。

人们发展了各种各样的阈值处理技术,包括全局阈值、自适应阈值、最佳阈值等等。  全局阈值是指整幅图像使用同一个阈值做分割处理,适用于背景和前景有明显对比的图像。它是根据整幅图像确定的:T=T(f)。但是这种方法只考虑像素本身的灰度值,一般不考虑空间特征,因而对噪声很敏感。常用的全局阈值选取方法有利用图像灰度直方图的峰谷法、最小误差法、最大类间方差法、最大熵自动阈值法以及其它一些方法。在许多情况下,物体和背景的对比度在图像中的各处不是一样的,这时很难用一个统一的阈值将物体与背景分开。这时可以根据图像的局部特征分别采用不同的阈值进行分割。实际处理时,需要按照具体问题将图像分成若干子区域分别选择阈值,或者动态地根据一定的邻域范围选择每点处的阈值,进行图像分割。这时的阈值为自适应阈值。阈值的选择需要根据具体问题来确定,一般通过实验来确定。对于给定的图像,可以通过分析直方图的方法确定最佳的阈值,例如当直方图明显呈现双峰情况时,可以选择两个峰值的中点作为最佳阈值。

阈值分割的优点是计算简单、运算效率较高、速度快,在算法上容易实现,在重视运算效率的应用场合(如用于硬件实现),它得到了广泛应用。它对目标和背景对比度反差较大图像这种分割很有效, 而且总能用封闭、连通的边界定义不交叠的区域。但它不适用于多通道图像和特征值相关不大的图像,对图像中不存在明显灰度差异或各物体的灰度值范围有较大重叠的图像分割问题难以得到准确结果。另外由于阈值确定主要依赖于灰度直方图, 而很少考虑图像中像素的空间位置关系,因此当背景复杂,特别在是同一背景上重叠出现若干个研究目标时,或图像中噪声信号较多时,目标的灰度值与背景相差无几等情形下,容易丧失部分边界信息,按照固定的阈值进行分割所得到的结果就不准确,造成分割不完整,需要进一步的精确定位。

1.2基于区域的分割方法

  区域生长和分裂合并法是两种典型的串行区域技术,其分割过程后续步骤的处理要根据前面步骤的结果进行判断而确定。

(1)区域生长

  区域生长的基本思想是将具有相似性质的像素集合起来构成区域。具体先对每个需要分割的区域找一个种子像素作为生长的起点,然后将种子像素周围邻域中与种子像素有相同或相似性质的像素(根据某种事先确定的生长或相似准则来判定)合并到种子像素所在的区域中。将这些新像素当作新的种子像素继续进行上面的过程,直到再没有满足条件的像素可被包括进来。

区域生长需要选择一组能正确代表所需区域的种子像素,确定在生长过程中的相似性准则,制定让生长停止的条件或准则。相似性准则可以是灰度级、彩色、纹理、梯度等特性。选取的种子像素可以是单个像素,也可以是包含若干个像素的小区域。大部分区域生长准则使用图像的局部性质。生长准则可根据不同原则制定,而使用不同的生长准则会影响区域生长的过程。

区域生长法的优点是计算简单,对于较均匀的连通目标有较好的分割效果,对有复杂物体定义的复杂场景的分割或者对自然景物的分割等类似先验知识不足的图像分割, 效果均较理想,Wu H S等提出利用肺部癌细胞图像的均值、标准偏差构成的矢量作为细胞分割的特征, 提出的区域增长分割算法分割肺部癌细胞纹理图像, 取得较好结果[10]。它的缺点是需要人为确定种子点,虽然其抗噪性能优于边缘分割和直方图分割,但仍对噪声敏感,可能导致区域内有空洞;另外,它是一种串行算法,当目标较大时,分割速度较慢,因此在设计算法时,要尽量提高效率;而且在计算过程中引入的预定误差值选取不当时,还会引入误判,易受分析目标内部组织之间的重叠干扰影响。因此,基于区域生长的分割方法一般适合于边缘光滑、无重叠的细胞图象的分割。

(2)区域分裂合并

区域生长是从某个或者某些像素点出发,最后得到整个区域,进而实现目标提取。分裂合并差不多是区域生长的逆过程:从整个图像出发,不断分裂得到各个子区域,然后再把前景区域合并,实现目标提取。分裂合并的假设是对于一幅图像,前景区域由一些相互连通的像素组成的,因此,如果把一幅图像分裂到像素级,那么就可以判定该像素是否为前景像素。当所有像素点或者子区域完成判断以后,把前景区域或者像素合并就可得到前景目标。在这类方法中,最常用的方法是四叉树分解法。设R代表整个正方形图像区域,P代表逻辑谓词。基本分裂合并算法步骤如下:

①       对任一个区域,如果H(Ri)=FALSE就将其分裂成不重叠的四等份;

②       对相邻的两个区域Ri和Rj,它们也可以大小不同(即不在同一层),如果条件H(Ri∪Rj)=TRUE满足,就将它们合并起来。

③       如果进一步的分裂或合并都不可能,则结束。  

分裂合并法的关键是分裂合并准则的设计。这种方法对复杂图像的分割效果较好,但算法较复杂,计算量大,分裂还可能破坏区域的边界。

 1.3基于边缘的分割方法

图像分割的一种重要途径是通过边缘检测,即检测灰度级或者结构具有突变的地方,表明一个区域的终结,也是另一个区域开始的地方。这种不连续性称为边缘。不同的图像灰度不同,边界处一般有明显的边缘,利用此特征可以分割图像。图像中边缘处像素的灰度值不连续,这种不连续性可通过求导数来检测到。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测[11]

常用的一阶微分算子有Roberts算子、Prewitt算子和Sobel算子,二阶微分算子有Laplace算子和Kirsh算子等。在实际中各种微分算子常用小区域模板来表示,微分运算是利用模板和图像卷积来实现。这些算子对噪声敏感,只适合于噪声较小不太复杂的图像。由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。因此用微分算子检测边缘前要对图像进行平滑滤波。

Roberts算子有利于对具有陡峭边缘的低噪声图像的分割;laplacian算子具有各向同性的特点;Roberts算子和laplacian算子在实施过程中大大增强了噪声,恶化了信噪比。Prewitt算子、Sobel算子等有利于对具有较多噪声且灰度渐变图像的分割。Log算子和Canny算子是具有平滑功能的二阶和一阶微分算子,边缘检测效果较好。其中Log算子是采用Laplacian算子求高斯函数的二阶导数,Canny算子是高斯函数的一阶导数,它在噪声抑制和边缘检测之间取得了较好的平衡。Marr算法对有较多噪声的图像具有平滑作用,且其边缘检测效果优于以上几种算子,但Marr算法在平滑的同时导致图像对比度下降[7]。Kirch算法利用对梯度图像适当的阈值进行二值化, 使得目标和背景像素点低于阈值, 而大多数边缘点高于阀值, 同时为了提高性能, 在该类算法中可引入分水岭算法以进行准确分割[1]

Hough变换法利用图像全局特性而直接检测目标轮廓,将边缘像素连接起来组成区域封闭边界的一种常见方法。在预先知道区域形状的条件下,利用哈夫变换可以方便地得到边界曲线而将不连续的边界像素点连接起来。它的主要优点是受噪声和曲线间断的影响较小。

对于灰度变化复杂和细节较丰富图象,边缘检测算子均很难完全检测出边缘,而且一旦有噪声干扰时,上述算子直接处理效果更不理想。这一方法用来分割显微图象的例子不多,因为显微图象中的许多纹理或颗粒会掩盖真正的边缘,虽然可以通过有关算法改进,但效果并不太好。

拟合算子( 即参数模型匹配算法)原理:用边缘的参数模型对图像的局部灰度值进行拟合, 再在拟合的参数模型上进行边缘检测。优缺点:此类算子在检测边缘的同时, 还平滑了噪声, 对有较大噪声和高纹理细胞图像处理效果较好, 但由于参数模型记录着更多的边缘结构信息, 计算开销很大, 算法复杂, 而且对边缘类型要求较高。

以上三种方法中,基于边缘分割的最常见的问题是在没有边界的地方出现了边缘以及在实际存在边界的地方没有出现边界, 这是由图像噪声或图像中的不适合的信息造成的[24]。基于区域增长方法分割后的图像,时常是由于参数的设置非最优性造成, 不是含有太多的区域就是含有过少的区域。阈值化是最简单的分割处理, 计算代价小, 速度快, 用一个亮度常量即阈值来分割物体和背景。

 

转载于:https://www.cnblogs.com/-wenli/p/11523397.html

2017-04-19 19:54:00 The_star_is_at 阅读数 9136
  • 图像特征提取运动估计

    认真学习本门课程后,学员可以掌握计算机视觉技术的基本原理和应用方式。可在实际项目、创新项目、创业实践中应用,同时可供感兴趣同学作为以后深入学习计算机视觉知识的基础。公开课试听:...

    303人学习 AI100讲师
    免费试看

实验三   图像轮廓提取与边缘检测


一、实验目的:

理解并掌握对二值图像进行轮廓提取的相关算法(比如,掏空内部点法),以及用于图像边缘检测和提取的典型微分算子(梯度算子和拉普拉斯算子)。

二、实验环境:

计算机、Windows XP操作系统,Matlab7.0

二、实验内容:

1、根据掏空内部点算法,运用Matlab编程实现二值图像的轮廓提取。

%以下适用于黑色背景白色前景的二值图像轮廓提取(以二值图像circles为例)

BW=imread('circles.png');     %二值图像circlesuint80黑,255

subplot(1,2,1);  imshow(BW);  title('二值图像');

[M, N]=size(BW);     %M行,N

BW_Buffer=BW;

for i=2: M-1

for j=2: N-1

if (BW(i, j)==255 & BW(i-1, j)==255 & BW(i+1, j)==255 & BW(i, j-1)==255 & BW(i, j+1)==255 & BW(i-1, j-1)==255 & BW(i-1, j+1)==255 & BW(i+1, j-1)==255 & BW(i+1, j+1)==255)    %说明BW(i, j)是前景中的一个内部点

       BW_Buffer(i, j)=0;    %掏空该内部点,即将该内部点置成与背景相同灰度

end

end

end

subplot(1,2,2);  imshow(BW_Buffer);  title('提取轮廓');


%以下适用于白色背景黑色前景的二值图像轮廓提取(以二值图像source为例)

BW=imread('source.bmp');      %二值图像sourceuint80黑,255

subplot(1,2,1);  imshow(BW);  title('二值图像');

[M, N]=size(BW);   %M行,N

BW_Buffer=BW;

for i=2: M-1

for j=2: N-1

if (BW(i, j)==0 & BW(i-1, j)==0 & BW(i+1, j)==0 & BW(i, j-1)==0 & BW(i, j+1)==0 & BW(i-1, j-1)==0 & BW(i-1, j+1)==0 & BW(i+1, j-1)==0 & BW(i+1, j+1)==0)      %说明BW(i, j)是前景中的一个内部点

       BW_Buffer(i, j)=255;   %掏空该内部点,即将该内部点置成与背景相同灰度

end

end

end

subplot(1,2,2);  imshow(BW_Buffer);  title('提取轮廓');

注意:使用掏空内部点的方法来提取二值图像的轮廓时,不能直接在原始二值图像矩阵上判断一个点掏空一个点,否则对前面像素的掏空操作会影响到对后面像素的判断结果。

解决方法:创建原始二值图像矩阵的副本(即图像矩阵BW_Buffer),在原始二值图像矩阵上执行判断操作,即依次判断每个像素点是否为前景中的内部点,如果是,则在图像矩阵BW_Buffer上执行掏空内部点的操作。

2、以灰度图像ricecameraman为例,利用Matlab图像处理工具箱中的edge函数,分别使用Roberts 算子、Sobel算子、Prewitt 算子对其进行边缘检测。

(1)函数格式: BW = edge(I, 'method', thresh)

(2)格式说明:edge函数输入灰度图像矩阵I,输出二值图像矩阵BW;参数'method'用于指定所使用的边缘检测算子,可以是'roberts''sobel''prewitt''log''canny';参数thresh用于指定梯度门限值(也称梯度阈值),图像中梯度值大于等于门限值thresh的像素用白色(1)表示,说明这些地方对应边缘,梯度值小于门限值thresh的像素用黑色(0)表示(edge function will ignore all edges that are not stronger than thresh)。若不指定参数thresh,则edge函数会自动选择阈值。所以edge函数最终将原始灰度图像中的边缘和背景用二值图像的形式展现出来,以突出边缘的位置,达到边缘检测的目的。

(3)程序如下:

I=imread('rice.png');

subplot(2,2,1);  imshow(I);  title('原始图像');

[BW1,thresh1]=edge(I,'roberts');  %进行Roberts算子边缘检测并返回门限值

[BW2,thresh2]=edge(I,'sobel');    %进行Sobel算子边缘检测并返回门限值

[BW3,thresh3]=edge(I,'prewitt');  %进行Prewitt算子边缘检测并返回门限值

subplot(2,2,2);  imshow(BW1);  title('Roberts算子边缘检测结果');

subplot(2,2,3);  imshow(BW2);  title('Sobel算子边缘检测结果');

subplot(2,2,4);  imshow(BW3);  title('Prewitt算子边缘检测结果');

若向原始图像中加入随机噪声(比如高斯噪声),之后再对噪声图像分别运用Roberts 算子、Sobel算子、Prewitt 算子、Log算子(高斯-拉普拉斯算子)进行边缘检测,观察检测结果,试比较4种边缘检测算子的抗噪声干扰能力。

I=imread('rice.png');

subplot(2,3,1);  imshow(I);  title('原始图像');

G=imnoise(I, 'gaussian');  %向原始图像中加入高斯噪声

subplot(2,3,2);  imshow(G);  title('噪声图像');

BW1=edge(G, 'roberts');  %进行Roberts算子边缘检测

BW2=edge(G, 'sobel');    %进行Sobel算子边缘检测

BW3=edge(G, 'prewitt');  %进行Prewitt算子边缘检测

BW4=edge(G, 'log');      %进行Log算子边缘检测

subplot(2,3,3);  imshow(BW1);  title('Roberts算子边缘检测结果');

subplot(2,3,4);  imshow(BW2);  title('Sobel算子边缘检测结果');

subplot(2,3,5);  imshow(BW3);  title('Prewitt算子边缘检测结果');

subplot(2,3,6);  imshow(BW4);  title('Log算子边缘检测结果');

边缘检测与图像分割

阅读数 30755