1、Ch 图像分析基础,1.图像分割 2.图像检测 3.数学形态学,本章讲解特点:结合大量的实际例子,弱化理论讲解; 但本章是一个完整的图像处理系统最重要的部分之一; 本章所讲到的一些名字,同学们要自己下去查资料理解。,图像分析系统的构成,知识库,图像分割的目的是理解图像的内容,提取出我们感兴趣的对象。图像分割按照具体应用的要求和具体图像的内容将图像分割成一块块区域。图像分割是模式识别和图像分析的预处理阶段。通常图像分割采用聚类方法,假设图像中组成我们所感兴趣对象的像素具有一些相似的特征,如相同的灰度值、相同的颜色等。,1.图像分割,(1)概论,分割对象灰度图像、彩色图像遥感图像、红外图像、X光成
2、像、超声图像以 及核磁共振成像等。分割与识别的关系 没有对物体或其局部的认识,分割就无法进行。没有分割,物体识别也是不可能的? 分割可视为一种特殊的识别问题。,传统的图像分割技术:基于像素灰度值的分割技术 基于区域的分割技术 基于边界的分割技术,图像的描述,包括边界和区域的描述对图像区域的操作数学形态学,(1)概论,1.图像分割,特征空间聚类方法(clustering)阈值化、尺度空间聚类、均值迁移.对含噪图像以及纹理图像分割的鲁棒性较好 但特征选取依赖一定的先验和统计知识 基于边缘的方法梯度法、Snake模型方法直观,分割结果比较美观简单,但边缘检测受噪声影响大,不能保证边缘的封闭性,1.图
3、像分割(最近新方法),3. 基于区域的方法区域生长法、分裂合并法保证得到边缘封闭的区域,缺点是边缘复杂,没有统一标准描述区域 4. 全局优化方法(global optimization)Bayes方法、最小描述长度(MDL)、最小割算法.计算量大,技巧性强,1.图像分割(最近新方法),5. 混合方法形态学方法、表面拟合法、边缘-区域法 6. 基于识别的方法通过识别结果的反馈实现分割,灰度阈值分割法是最古老的分割技术 只能应用于图像中组成感兴趣对象的灰度值是均匀的,并且和背景的灰度值不一样。 事先决定一个阈值,当一个像素的灰度值超过这个阈值,我们就说这个像素属于我们所感兴趣的对象;反之则属于背景
4、部分。这种方法的关键是怎样选择阈值,一种简便的方法是检查图像的直方图,然后选择一个合适的阈值。,(2)灰度阈值分割法,1.图像分割,单一阈值方法也不适合于由许多不同纹理组成一 块块区域的图像。,如果图像适合这种分割法,那么图像的直方图在表示对象和背景的小范围灰度值附近出现一个高峰值。适合这种分割法的图像的直方图应是双极模式,我们可以在两个峰值之间的低谷处找到一个合适的阈值。,(2)灰度阈值分割法,1.图像分割,若T为图像的一个阈值,它应具备的条件: (1)T应介于目标/背景灰度之间 (2)近似于T的象素应是少数。 T位于直方图谷点 (3)若T为阈值,则分割出的背景和目标都应均匀, 错分率低,类
5、内方差小 (4)若T为阈值, 则分割出的背景和目标之间的类间 方差大,1.图像分割,(2)灰度阈值分割法,用如下所示的循环迭代策略得到阈值,假设图像中处于四个角的像素是属于背景部分,其它像素属于感兴趣对象,然后定义一个背景灰度和对象灰度的初始值。 通过下面的公式循环迭代直至前后两次循环得到的阈值Ti+1和Ti相差非常小,循环过程停止。,1.图像分割,(2)灰度阈值分割法,uibackground和uiobject分别是循环第i次得到的背景灰度值和对象灰度值。,这种单一阈值分割方法一种拓展就是将图像分成一个个子区域,不同的子区域采用不同的阈值。,将图像分成6464重叠的子区域,并在每个子区域中检
6、测区域的直方图是不是双极模式,如果一个区域的直方图不是双极模式,则判定该区域完全属于背景部分或对象部分。,原始图像,分割结果(T=170),OTSU算法以最佳门限将图像灰度直方图分割成两部分, 使两部分类间方差取最大值,即分离性最大. 设图像灰度级1M,第i 级象素ni个,总象素: 则第i 级灰度出现的概率为Pi= ni/N.设灰度门限值为k,则图像像素按灰度级被分为两类: C0=1,2,.,k, C1=k+1,.,M,图像总平均灰度级 :,(3) OTSU算法,C0类的平均灰度级为:,像素数为:,C1类的平均灰度级为: -(k), 像素数为: N-N0 两部分图像所占比例分别为:,w1=1-
7、w(k);,对C0,C1均值作处理:0=(k)/w(k)1=(k)/1-w(k),图像总均值可化为: =w00+ w11 类间方差: 2(k)=w0(0)2+w1(1)2=w0w1(01)2,化为: 2(k)=w(k)(k)2/w(k)1w(k) k从1M变化,使2(k)最大的k*即为所求之最佳门限. 2(k)称为目标选择函数.,实例:黑夜车灯检测(直接阈值分割) 缺点:阈值不好确定;误差较大;,同学们自己察看资料:OTSU算法,level = graythresh(I),MATLAB使用OTSU算法得到图像的全局阈值:,N. Otsu, “A Threshold Selection Meth
8、od from Gray-Level Histograms,“ IEEE Transactions on Systems, Man, and Cybernetics, vol. 9, no. 1, pp. 62-66, 1979.,Watershed(分水岭算法),(4)最小误差分割,设目标的像点数占图像总点数的百分比为,背景点占1, 混合概率密度为:p(z)=p1(z)+(1)p2(z),当选定门限为T时,目标点错划为背景点的概率为:,把背景点错划为目标点的概率为:,则总错误概率为:E(T)=E1(T)+(1)E2(T),1.图像分割,(4)区域生长法,什么是区域,图像中属于某个区域的像素点
9、必须加以标志,当应用区域生长法来分割图像时,最终应该不存在没有被标注的像素点。 在同一区域的像素点必须相连。这就意味着我们可以从现在所处的像素点出发,按照某种连接方式到达任何一个邻近的像素点。常用的有两种各向同性连通方式:四连通和八连通。 区域之间不能重叠,也就是说一个像素只能有一个标注。 在区域Ri中每一个像素点必须遵从某种规则P(Ri)。例如我们说P(Ri)为真,当区域Ri中所有像素具有相似的灰度(相似性在一定的范围内)。两个不同的区域Ri和Rj具有的规则不同。,最简单的区域生长法是将像素聚类,为了达到这一目的,我们从一个种子像素点出发,按照某种连通方式和规则P来检查周围邻近的像素点,如果
10、具有和种子像素点相似的性质,就说明它们属于同一区域,这种算法有点类似于计算机图形学中的多边形种子填充算法。,区域生长法的程序伪码,procedure label_region_of(I,x,y,label,intensity);if I(x,y)=intensity thenI(x,y):=label;label_region_of(I,x,y-1,label,intensity);label_region_of(I,x,y+1,label,intensity);label_region_of(I,x-1,y,label,intensity);label_region_of(I,x+1,y,l
11、abel,intensity);,这是一个在高层编程实现递归调用很好的方式 不过这种方法的一个主要缺点是怎样获得初始的种子像素点。 我们可以重新回到基于直方图的方法上来,为每一个区域寻找一个种子像素,找到具有图像直方图中峰值的像素点作为种子像素。,1.图像分割,(4)区域生长法,将图像分割成越来越小的区域直至每个区域中的像素点具有相似的数值。 这种方法的一个优点是不再需要前面所说的种子像素 但是它有一个明显的缺点是会使分割后的区域具有不连续的边界。,if current region homogeneous test is FALSEthen split into four quadrants
12、attempt to merge these quadrantsrecursively call the procedure for each subdivisionfind any remaining merges,一种简单直接实现算法,1.图像分割,(4)区域分割与合并,图像分割:图像分割是图像分析的第一步,是所有分析和识别 的基础,如果这一步做好,将大大提高分析能力;缺乏有力的统一的理论指导,算法繁多;可和其他学科交叉应用。,() 图像边缘检测:,使用图像增强一章中所讲的各种图像锐化算子,然 后进行自适应阈值分割,得到二值图像,一般为黑 底白边缘的图像。,I = imread(rice.
13、tif); BW1 = edge(I,sobel); BW2 = edge(I,canny); imshow(BW1) figure, imshow(BW2),.图像检测,图像分析例子一:米粒个数检测,米粒边缘检测,RiceTest.m,() 图像边缘检测:,.图像检测,(2)线检测: Hough变换,Hough变换问题的提出 在找出边界点集之后,需要连接,形成完整的边界图形描述,(2)线检测: Hough变换,在xy坐标系中的一条直线,若用 分别表示法线 的距离及法线与x轴的夹角,则:,(2)线检测: Hough变换,Hough变换的性质:,()在(x,y)域中的一条直线对应着变换域中 的一
14、个点( );,()(x,y)域中的一个点对应着变换域中的一条 正弦曲线;,()变换域中一条曲线上的n点对应于(x,y)于中过 一个公共点的n条直线。,(2)线检测: Hough变换,Hough变换的性质:,(2)线检测: Hough变换,Hough变换的性质:,在参数平面上相交最多的交点,对应的xy 平面上的直线就是我们的解,()(x,y)域中一条直线上的n个点对应于变换 域中经过一个公共点的n条曲线。,若该直线为y=ax+b,则变换域的公共点为:,使用交点累加器,或交点统计直方图,找出相交线段最多的参数空间的点(, )然后找出该点对应的xy平面的直线线段,(2)线检测: Hough变换,Ho
15、ugh变换的实现:,参数空间分成小格,每格上有计数器,峰值检测,,参数空间分成小格,每格上有计数器,峰值检测, 最大值点即为变换空间的参数( , );根据,求出a,b,Hough变换的问题: 计算量大: 每个点对应一条曲线, , 的范围怎 么确定?占用内存大:随着精度的增加,占用内存 容量会大大增加,.峰值不明显,Hough变换的优缺点:,Hough变换的优点: 不受不连续点的影响,对噪声不敏感,(2)线检测: Hough变换,MATLAB.0以上版本提供hough变换的函数 hough houghlines houghpeaks,.图象的检测常见算法:,()投影法,()差影法,在银行金库内,
16、摄像头每隔一小段时间,拍摄一幅图, 与上一幅图做差影;如果差别超过了预先设置的阈值, 说明有人,这时就应该拉响警报。,.图象的检测常见算法:,()模板匹配,.图象的检测常见算法:,利用模板匹配可以在一幅图象中找到已知的物体。,所谓模板匹配,其实想法很简单:拿已知的模板 和原图象中同样大小的一块区域去对。,最开始时,模板的左上角点和图象的左上角点是重 合的,拿模板和原图象中同样大小的一块区域去对 比,然后平移到下一个象素,仍然进行同样的操作, 所有的位置都对完后,差别最小的那块就是我们 要找的物体。,我们用平方误差之和来衡量原图中的块和模板之 间的差别。,3.数学形态学,形态学的用途主要是获取物
17、体拓扑和结构信息, 它通过物体和结构元素相互作用的某些运算,得 到物体更本质的形态。在图象处理中的应用主要 是:(1)利用形态学的基本运算,对图象进行观察 和处理,从而达到改善图象质量的目的;(2)描述 和定义图象的各种几何参数和特征,如面积、周 长、连通度、颗粒度、骨架和方向性等。,1. 诞生于1964年,法国巴黎Matheron的纹理分析器 2. 法国枫丹白露数学形态学研究中心 3. 发展过程,60年代:孕育和形成 1964诞生,Matheron指导下的Serra做岩相学分析,击中击不中变换开闭运算、纹理分析器。1966年命名Mathematical Morphology。1968年成立枫
18、丹白露数学形态学研究中心。 70年代: 纹理分析器商业应用,理论方面Mathron随机集和积分几何,数学形态学的核心内容,灰度。 未引起信号图像处理方面重视,多为自然科学家,独立思维开拓图像分析一个新的领域。,3.数学形态学,80年代: Serra 1982完成图像分析于数学形态学,形态学走向美国及世界。 在格论框架上建立的数学形态学基础。 算法开发。 90年代至今 在模式识别,编码,运动分析,运动景物描述等方面取得进展。 用于数值函数的形态学算子开发 “如果证明,在某些时候,形态学方法闭其他方法在模式识别方面更有效,那是因为它更好地把握了景物的几何特点,仅此而已” Serra 在把握自然景物
19、含义,人类思维的符号描述方面显得不够有力有待发展。,3.数学形态学,(1)一些基本符号和关系。,10. 元素 设有一幅图象X,若点a在X的区域以内,则称a为X的 元素,记作aX,如图1所示。,20. B包含于X 设有两幅图象B,X。对于B中所有的元素i,都有iX, 则称B包含于(included in)X,记作B X,3.数学形态学,30. B击中X 设有两幅图象B,X。若存在这样一个点,它既是 B的元素,又是X的元素,则称B击中(hit)X,记作 BX,如图3所示。,40. B不击中X 设有两幅图象B,X。若不存在任何一个点,它既 是B的元素,又是X的元素,即B和X的交集是空, 则称B不击中
20、(miss)X,记作BX=;其中是集合 运算相交的符号,表示空集。如图4所示。,3.数学形态学,50. 补集 设有一幅图象X,所有X区域以外的点构成的集合称 为X的补集,记作Xc,如图6.5所示。显然, 如果BX=,则B在X的补集内,即B Xc。,3.数学形态学,60. 结构元素 设有两幅图象B,X。若X是被处理的对象,而B是用来 处理X的,则称B为结构元素(structure element),又被形 象地称做刷子。结构元素通常都是一些比较小的图象。, 的定义结构元素的函数:strel,3.数学形态学,10 腐蚀 把结构元素B平移a后得到Ba,若Ba包含于X,我们记 下这个a点,所有满足上述
21、条件的a点组成的集合称做 X被B腐蚀(Erosion)的结果。用公式表示为: E(X)=a| Ba X=X B,(2) 数学形态学的基本运算(黑白图像),3.数学形态学,bw = imread(text.tif); se = strel(line,11,90); bw2 = imerode(bw,se); imshow(bw), title(Original) figure, imshow(bw2), title(Eroded),原点,3.数学形态学,20 膨胀,膨胀(dilation)可以看做是腐蚀的对偶运算,其定义是: 把结构元素B平移a后得到Ba,若Ba击中X,我们记下 这个a点。,所有
22、满足上述条件的a点组成的集合称做X,被B膨胀的结果。用公式表示为:,D(X)=a | BaX=X B,,膨胀的方法是,拿B的中心点和X上的点及X周围的 点一个一个地对,如果B上有一个点落在X的范围内, 则该点就为黑;右边是膨胀后的结果。可以看出, 它包括X的所有范围,就象X膨胀了一圈似的,(2) 数学形态学的基本运算(黑白图像),3.数学形态学,0 膨胀,(2) 数学形态学的基本运算(黑白图像),3.数学形态学,0 膨胀,(2) 数学形态学的基本运算(黑白图像),原点,原图,膨胀后结果,3.数学形态学,0 膨胀,(2) 数学形态学的基本运算(黑白图像),先腐蚀后膨胀称为开,3.数学形态学,30
23、 开运算,(2) 数学形态学的基本运算(黑白图像),左边是被处理的图象X(二值图象,我们针对的是黑点), 右边是结构元素B,下面的两幅图中左边是腐蚀后的结 果;右边是在此基础上膨胀的结果。可以看到,原图经 过开运算后,一些孤立的小点被去掉了。,3.数学形态学,3 0 开运算,1)消除细小对象 2)在细小粘连处分离对象 3)在不改变形状的前提下,平滑对象的边缘,(2) 数学形态学的基本运算(黑白图像),3.数学形态学,0 闭运算,先膨胀、再腐蚀,(2) 数学形态学的基本运算(黑白图像),1)填充对象内细小空洞。 2)连接邻近对象 3)在不明显改变面积前提下,平滑对象的边缘,左边是被处理的图象X(
24、二值图象,我们针对的是黑点), 右边是结构元素B,下面的两幅图中左边是膨胀后的结 果,右边是在此基础上腐蚀的结果可以看到,原图经 过闭运算后,断裂的地方被弥合了。,3.数学形态学,0 闭运算,(2) 数学形态学的基本运算(黑白图像),结果:在不破坏连通性的前提下,细化图像 算法实现: 1)做腐蚀操作,但不立刻删除像素,只打标记 2)将不破坏连通性的标记点删掉。 3)重复执行,将产生细化结果,3.数学形态学,0 细化,所谓细化,就是从原来的图中去掉一些点,但仍要 保持原来的形状。实际上,是保持原图的骨架。,(2) 数学形态学的基本运算(黑白图像),3.数学形态学,0 细化,1,2,4,6,7不能
25、删,其他可删,(1)内部点不能删除;(2)孤立点不能删除; (3)直线端点不能删除;(4)如果P是边界点,去掉P后, 如果连通分量不增加,则P可以删除。,(2) 数学形态学的基本运算(黑白图像),BW1 = imread(circles.tif); figure;imshow(BW1); BW2 = bwmorph(BW1,remove); BW3 = bwmorph(BW1,skel,Inf); figure, imshow(BW2) figure, imshow(BW3).,I=imread(m1.bmp); BW3 = bwmorph(1-I,skel,Inf);figure;imsho
26、w(BW3),MATLAB演示:,I=imread(m2.bmp); BW3 = bwmorph(1-I,skel,Inf);figure;imshow(BW3),3.数学形态学,(3) 数学形态学的基本运算(灰度图像),1o腐蚀运算:,+,2o膨胀运算,开先腐蚀再膨胀 闭先膨胀再腐蚀,3.数学形态学,(3) 数学形态学的基本运算(灰度图像),3.数学形态学,(3) 数学形态学的基本运算(灰度图像),运用一个交叉结构元素进行开运算。,通过开运算检测电路板,轮廓跟踪、连通域标记、,一个简单二值图象闭合边界的轮廓跟踪算法很简单: 首先按从上到下,从左到右的顺序搜索,找到的第一个 黑点一定是最左上方
27、的边界点,记为A。它的右,右 下,下,左下四个邻点中至少有一个是边界点,记 为B。从开始B找起,按右,右下,下,左下,左, 左上,上,右上的顺序找相邻点中的边界点C。如果 C就是A点,则表明已经转了一圈,程序结束;否则 从C点继续找,直到找到A为止。判断是不是边界点 很容易:如果它的上下左右四个邻居都是黑点则不 是边界点,否则是边界点。,其他二值图像处理算法:,bmlabel,5 特征表示与描述的基本概念,基本概念 特征表示与描述的定义:把图像分割后,为了进一步的处理,分割后的图像一般要进行形式化的表达和描述 解决形式化表达问题一般有两种选择: 1)根据区域的外部特征来进行形式化表示 2)根据
28、区域的内部特征(比较区域内部的象素值)来来进行形式化表示,链码 定义:1)链码是一种边界的编码表示法。2)用边界的方向作为编码依据。为简化边界的描述。一般描述的是边界点集。,0,1,2,3,0,1,4,6,7,2,3,5,4-链码,8-链码,表示法设计:链码,链码举例:,4-链码:000033333322222211110011,表示法设计:链码,链码 算法: 给每一个线段边界一个方向编码。 有4-链码和8-链码两种编码方法。 从起点开始,沿边界编码,至起点被重新碰到,结束一个对象的编码。,表示法设计:链码,链码 问题1: 1)链码相当长。 2)噪声会产生不必要的链码。 改进1: 1)加大网格
29、空间。 2)依据原始边界与结果的接近程度,来确定新点的位置。,表示法设计:链码,链码举例:,4-链码:003332221101,表示法设计:链码,链码 问题2: 1)由于起点的不同,造成编码的不同 2)由于角度的不同,造成编码的不同 改进2: 1)从固定位置作为起点(最左最上)开始编码 2)通过使用链码的首差代替码子本身的方式,表示法设计:链码,链码 应用背景: 如果边界的本身对于旋转和比例修改来说是无变化的,使用链码才是正确的。一般来说这是不可能的,实际应用时还需要改进。 用链码后,对象只要用1)起点坐标,2)周长(边界点数)3)链码,4)对象编号,就可以描述。 链码一般用于一幅图像中有多个对象的情况,对单个对象不适用。,表示法设计:链码,