860 likes | 1.15k Views
第八章 图像分析. 概述 表达 描述. 目标表达 目标描述. 概述. 图像分析的一个主要工作-要从图像中获得目标特征的量值 这些量值的获取常借助于对图像分割后得到的分割结果,对目标特征的测量利用分割结果进一步从图像中获取有用信息 两个关键问题:1、选用什么特征来描述目标 2、如何精确的测量这些特征. 图像分割之后,为了进一步对图像作分析和识别,就必须通过对图像中的物体(目标)作定性或定量的分析来作出正确的结论-这些结论是建立在图像物体的某些特征的基础上的 图像描述-就是用一组数量或符号(描述子)来表征图像中被描述物体的某些特征.
E N D
第八章 图像分析 • 概述 • 表达 • 描述 • 目标表达 • 目标描述
概述 • 图像分析的一个主要工作-要从图像中获得目标特征的量值 • 这些量值的获取常借助于对图像分割后得到的分割结果,对目标特征的测量利用分割结果进一步从图像中获取有用信息 • 两个关键问题:1、选用什么特征来描述目标 2、如何精确的测量这些特征
图像分割之后,为了进一步对图像作分析和识别,就必须通过对图像中的物体(目标)作定性或定量的分析来作出正确的结论-这些结论是建立在图像物体的某些特征的基础上的图像分割之后,为了进一步对图像作分析和识别,就必须通过对图像中的物体(目标)作定性或定量的分析来作出正确的结论-这些结论是建立在图像物体的某些特征的基础上的 • 图像描述-就是用一组数量或符号(描述子)来表征图像中被描述物体的某些特征
关心区域的反射性质如灰度、颜色、纹理等 图像中的区域(目标),可用其内部(如组成区域的象素集合)表示,也可用其外部(如组成区域边界的象素集合)表示 关心区域的形状等 选定了表达方法,还需要对目标进行描述,使计算机能充分利用所能获得的分割结果 表达是直接具体的表示目标,好的表达方法应具有节省存储空间、易于特征计算等优点 描述是较抽象的表示目标。好的描述应在尽可能区别不同目标的基础上对目标的尺度、平移、旋转等不敏感
图像目标的特征提取 • 幅度特征 -作为图像特征,一般应具备以下几个特点,(1)可区分性;(2)可靠性;(3)独立性;(4)数量要少。 • 图像象素灰度值、三色值、频谱值等表示的幅值特征是最基本的图像特征。也可以取确定邻域(如含有(2W+1)×(2W+1)个象素)中的平均灰度幅度
统计特征 • 直方图统计特征 • 图像振幅的一维概率密度可定义为 • 表示灰度整量电平。相应的一阶直方图为 • 其中:M表示以(i,j)为中心的测量窗内象素的总数,N(b)表示该窗内灰度值为b的象素数。对于一幅平稳图像而言,测量窗可取为整幅图像。
二维直方图是基于象素的二维联合分布密度定义得到的 • 设(i,j),(k,l)两任意象素点上的灰度值分别为f(i,j),f(k,l),则图像灰度值的联合分布密度可表示为 • 相应的二维直方图可表示为 • 其中M为测量窗口中象素总数,N(a,b)表示两事件f(i,j)=a,f(k,l)=b同时发生的概率。
目标表达 链码 多边形 边界段 标记 • 边界表达 • 区域表达 • 目标表达 骨架
链码Chain Code • 链码是对边界点的一种表示方法 • 特点-利用一系列具有特定长度和方向的相连的直线段来表示目标的边界,每个线段的长度固定,而方向数目取为有限,只要边界的起点用(绝对)坐标表示,其余点只用方向来代表偏移量 表示1个方向数比表示1个坐标值所需的比特数少,而且对每1个点又只需1个方向数就可以代替2个坐标值,因此链码表达大大减少边界表示所需的数据量
1 4-directional chain code Y 1 2 2 0 0 3 X 0 3 8-directional chain code 2 3 1 3 4 Y 5 2 4 0 6 1 7 7 0 5 X 0 6
1、如此产生的码串很长 2、噪声等干扰会导致小的边界变化,而使链码发生与目标整体形状无关的较大变动 • 实际中直接对分割所得的目标边界编码有可能出现2个问题: 常用的改进方法 对原边界以较大的网格重新采样,并把与原边界点最接近的大网格点定为新的边界点 这样获得的新边界具有较少的边界点,而且其形状受噪声等干扰的影响也较小 消除了目标尺度变化对链码的影响
使用链码时,起点的选择是很关键的,对同一边界,如用不同的边界点作为链码起点,得到的链码是不同的使用链码时,起点的选择是很关键的,对同一边界,如用不同的边界点作为链码起点,得到的链码是不同的 归一化处理 具体做法: 给定一个从任意点开始而产生的链码,可把它看作1个由各个方向数构成的自然数 将这些方向数依1个方向循环以使它们所构成的自然数的值最小,将这样转换后所对应的链码起点作为这个边界的归一化链码的起点,如图所示 4邻域 0 原链码 归一化链码 1 3 1 3 0 0 01033221 10103322 1 3 1 3 起点归一化 2 2 2 2
用链码表示给定目标的边界时,如果目标平移,链码不会发生变化,而如果目标旋转,则链码将会发生变化用链码表示给定目标的边界时,如果目标平移,链码不会发生变化,而如果目标旋转,则链码将会发生变化 相邻2个方向按反方向相减 用链码的1阶差分来重新构造1个序列(1个表示原链码各段之间方向变化的新序列),相当于把链码进行旋转归一化 (2) 1 0 1 0 3 3 2 2 1 3 0 3 3 1 3 3 0 3 0 1 3 左转90度 2 2 0 0 为最右1个方向数循环到左边 3 1 (3) 2 1 2 1 0 0 3 3 2 3 1 3 3 1 3 3 0 3 0 2 目标旋转后,原链码发生变化,但差分码没有变化
4邻域 8邻域 Chain code: 0 0 0 0 3 3 0 3 3 3 2 1 2 3 2 3 3 Chain code: 0 0 0 7 6 7 6 6 4 2 4 6 5 6 0 6 4 4 4 0 3 2 2 2 1 2 1 2 1 1 2 1 0 1 1 0 0 1 3 3 2 4 3 2 1 0 0 1
边界段boundary segments • 链码对边界的表达是逐点进行的,而一种表达数据量更节省的方法是把边界分解成若干段分别表示,可以减少边界的复杂度,并简化描述过程 • 将边界分解为多个边界段,一般借助凸包的概念来进行
如图(a)是1个任意的集合S,它的逼近凸包H是包含S的最小凸形,如图(b)黑线框内部所示如图(a)是1个任意的集合S,它的逼近凸包H是包含S的最小凸形,如图(b)黑线框内部所示 常把H-S叫S的凸残差(convex deficiency),并用D,即图(b)中黑线框内各白色部分表示
当把S的边界分解为边界段时,能分开D的各部分的点就是合适的边界分段点,也就是说,这些分段点可借助D来唯一确定当把S的边界分解为边界段时,能分开D的各部分的点就是合适的边界分段点,也就是说,这些分段点可借助D来唯一确定 具体做法 跟踪H的边界,每个进入D或从D出去的点就是1个分段点,如图(c)所示。 这种方法不受区域尺度和取向的影响
多边形近似Polygonal Approximations • 在实际中,由于噪声、采样等影响,在边界处有很多较小的不规则处。这些不规则处常对链码和边界段表达产生较明显得干扰 • 一种抗干扰性能更好,且更节省表达所需数据量的方法-用多边形去近似逼近边界 多边形是一系列线段的封闭集合
在数字图像中,如果多边形的线段数与边界上的点数相等,则多边形可以完全准确的表达边界在数字图像中,如果多边形的线段数与边界上的点数相等,则多边形可以完全准确的表达边界 多边形表达的目的-要用尽可能少的线段,来代表边界,并保持边界的基本形状,这样就可以用较少的数据和较简洁的形式来表达和描述边界 常用的多边形表达方法 1、基于收缩的最小周长多边形法 2、基于聚合(merge)的最小均方差线段逼近法 3、基于分裂(split)的最小均方差线段逼近法
对于第1种方法-将原边界看成是有弹性的线,将组成边界的象素序列的内外边各看成一堵墙,如图(a)所示,如果将线拉紧,则可得到如图(b)所示的最小周长多边形对于第1种方法-将原边界看成是有弹性的线,将组成边界的象素序列的内外边各看成一堵墙,如图(a)所示,如果将线拉紧,则可得到如图(b)所示的最小周长多边形 (a) (b)
对于第2种方法-沿边界依次连接象素。先选1个边界点为起点,用直线依次连接该点与相邻的边界点,分别计算各直线与边界的(逼近)拟合误差,把误差超过某个限度前的限度确定为多边形的1条边,并将误差置0,然后以线段另一端点为起点,继续连接边界点,直到绕边界1周,这样就得到1个边界的近似多边形对于第2种方法-沿边界依次连接象素。先选1个边界点为起点,用直线依次连接该点与相邻的边界点,分别计算各直线与边界的(逼近)拟合误差,把误差超过某个限度前的限度确定为多边形的1条边,并将误差置0,然后以线段另一端点为起点,继续连接边界点,直到绕边界1周,这样就得到1个边界的近似多边形
如图给出基于聚合方法的多边形逼近。原边界由点a,b,v,d,e,f,g,h等表示的多边形。现在先从点a出发,依次做直线ab,ac,ad,ae等,对从ac开始的每条线段计算前一边界点与线段的距离作为拟合误差,图中设bi和cj没有超过预定的误差限度,而dk超过该限度,所以选d为紧接点a的多边形顶点,再从点d出发继续如上进行,最终得到的近似多边形的顶点为adgh如图给出基于聚合方法的多边形逼近。原边界由点a,b,v,d,e,f,g,h等表示的多边形。现在先从点a出发,依次做直线ab,ac,ad,ae等,对从ac开始的每条线段计算前一边界点与线段的距离作为拟合误差,图中设bi和cj没有超过预定的误差限度,而dk超过该限度,所以选d为紧接点a的多边形顶点,再从点d出发继续如上进行,最终得到的近似多边形的顶点为adgh
对于第3种方法-先连接边界上相距最远的2个象素(即把边界分成2部分),然后根据一定准则进一步分解边界,构成多边形逼近边界,直到拟合误差满足一定限度对于第3种方法-先连接边界上相距最远的2个象素(即把边界分成2部分),然后根据一定准则进一步分解边界,构成多边形逼近边界,直到拟合误差满足一定限度 如图给出以边界点与现有多边形的最大距离为准则分裂边界的原理: c a b d (b)按最大距离分割边界 (a)原始边界 c c a a b b d d (d)最后的多边形 (c)连接垂直点
标记Signature • 标记是边界的1-D泛函表达 • 产生标记方法很多: 最简单的是-先对给定的物体求重心,然后把边界点与重心的距离作为角度的函数,得到一种标记 如图(a)和(b)所示,给出两个通过该方法得到标记的例子
(b) (a) 在(a)中, r(q)是常数,在(b)中r(q) = Asecq 不管用何种方法产生标记,其基本思想都是把2-D的边界用1-D的较易描述的函数形式来表达 把2-D形状描述 -> 1-D波形分析
上面所述方法产生的标记不受目标平移的影响,但与目标的尺度变换以及旋转都有关上面所述方法产生的标记不受目标平移的影响,但与目标的尺度变换以及旋转都有关 尺度变换的解决 尺度变换造成的影响-标记的幅度值发生变化,这个问题可用那个把最大幅度值归一化到单位值来解决 解决选择影响的方法-也可参照链码归一化的方法 选离重心最远的点作为标记起点 常用的方法: 求边界主轴,以主轴上离重心最远的点作为标记起点 考虑边界上所有的点,计算量大,但较可靠
中轴变换 • 中轴变换是将区域骨架化,同时还附带区域形状和大小的区域边界信息。因此,中轴变换除了可以用中轴(骨架)来表示区域外,还可以由中轴变换的表示重建原始区域。我们称对象中,那些以它们为圆心的某个圆和边界至少有两个点相切的点的连线,为该对象的中轴,可以用从草场的四周同时点火来比喻对象中轴的形成过程。当火焰以相同的速度同时向中心燃烧时,火焰前端相遇的位置,恰好就是该草场的中轴
当围绕边界线逐层去除外围点时,若一点被一次剥皮中遇到两次,则该点是中轴上的点,因此这一点被除去,对象将被分割成两部分。设某个区域S的边界为B,对于该区域内的任意一点x,有
也可以用点到边界的距离来定义骨架和中轴。骨架S*是目标S中到边界B有局部最大距离的点集合,即,若(u,v)是(i,j)点的全部邻点,当且仅当 • 时,称S中的点(i,j)为骨架S*上的点,其中d(i,j,B)和d(u,v,B)分别表示(i,j)和(u,v)点到边界B的距离,显然,若(i,j)在边界B上,则d(i,j,B)=0,在其他情况下,d(i,j,B)>0。
为了由骨架还原原始图像,引入一个新的定义,把离开(i,j)点的距离≤t的点的集合,称为“盘”,并记作为Dt(i,j),据此定义,按4-方向距离,Dt(i,j)为一菱形,按8-方向距离,Dt(i,j)为一正方形,于是可以得到下列结论:为了由骨架还原原始图像,引入一个新的定义,把离开(i,j)点的距离≤t的点的集合,称为“盘”,并记作为Dt(i,j),据此定义,按4-方向距离,Dt(i,j)为一菱形,按8-方向距离,Dt(i,j)为一正方形,于是可以得到下列结论: • 如果对于S中的点(i,j)的全部集合有d(i,j,B)>t,则Dt(i,j)必在S中 • 如果(u,v)是(i,j)的邻域,则对任何的t,Dt(i,j)都一定包含在Dt+1(u,v)中。 • 中轴变换计算量较大,而且对边界噪声或区域内的小孔敏感,如图8.3.12所示,其中图(a)和(b)对较细长的物体其骨架常能提供较多的形状信息,而对较粗短的物体,则骨架提供的信息较少,对于图(d)是图(c)中的区域受到噪声的影响,它们之间存在很小的差别,但它们的骨架相差很大
细化 • 为了便于描述和抽取特征,对那些细长的区域常用它的“细化骨架”表示。这些细化线处于图形的中轴附近,而且从视觉上来说仍然保持原来的形状,这种处理就是细化 • 细化算法多用于二值图像,它不能简单的消除所有的边界点,否则将破坏图形的连通性,因此在每次迭代种,必须消去S的边界点而不破坏它的连通性,而且不能消去那些只有一个邻点的边界点,以防止弧的端点被消去。
介绍一种由纳克卡赫欣格尔提出的细化算法,这种算法不仅速度快,而且容易实现 • 首先假定:(1)分析的是二值图像;(2)1表示区域点,称为暗点;0表示背景点称为亮点;(3)边界是一个暗点,且该暗点至少有一个亮的4-邻接点;(4)端点是一个暗点,该暗点有且只有一个暗的8-邻接点;(5)转折点是一个暗点,如果删除该暗点,则破坏连通性;(6)在进行细化算法之前,对所有域的边界进行了平滑处理,这是因为沿边界的噪声或其他意外的干扰会影响细化的结果。
细化算法采用的邻点配置如图所示,认定p为边界点,应符合下述四种类型之一或几种情况,即细化算法采用的邻点配置如图所示,认定p为边界点,应符合下述四种类型之一或几种情况,即 • (1)左邻接点n4为亮点的左边界点; • (2)右邻接点n0为亮点的右边界点; • (3)上邻接点n2为亮点的上边界点; • (4)下邻接点n6为亮点的下边界点
同时,p有可能是多种类型的边界点,如p是暗点,尔n0和n4均为亮点,则p既是右边界点,也是左边界点。下面首先讨论那些左边界点应当删除,也即讨论如何识别、标记、判断应删除的左边界点。同理类推,可标记除应删除的右边界点、上边界点和下边界点。同时,p有可能是多种类型的边界点,如p是暗点,尔n0和n4均为亮点,则p既是右边界点,也是左边界点。下面首先讨论那些左边界点应当删除,也即讨论如何识别、标记、判断应删除的左边界点。同理类推,可标记除应删除的右边界点、上边界点和下边界点。
若p点不是端点,也不是转折点,或删除它不会引起过分侵蚀,在此情况下,对p进行标记。判断上述条件是否满足采用的方法是比法。即与如图8.3.14所示的各个窗口进行比较,图中p和星号为暗点,d和e是“无所谓点”,即既可是暗点,也可是亮点。若p的邻接点配置与窗口图中(1)~(c)相匹配,则有两种可能情况:若p点不是端点,也不是转折点,或删除它不会引起过分侵蚀,在此情况下,对p进行标记。判断上述条件是否满足采用的方法是比法。即与如图8.3.14所示的各个窗口进行比较,图中p和星号为暗点,d和e是“无所谓点”,即既可是暗点,也可是亮点。若p的邻接点配置与窗口图中(1)~(c)相匹配,则有两种可能情况: • (1)所有d均为亮点,则p为端点 • (2)至少有一个d为暗点,则p为转折点
在这两种情况下,p不应标记,也即p点不能删除。 • 若至少有一个d和e是暗点,则p是转折点,不标记。假如所有的d均为亮点,而e是“无所谓点”,则得到如图的八种情况。
检验p的8个邻接点时,可用一个简单的逻辑表达式表示,即 • 同理可推出右边界点、上边界点和下边界点的逻辑表达式为
目标描述 简单描述 形状数 傅立叶描述 • 边界描述 • 区域描述 • 目标描述 简单描述 拓扑描述 纹理描述 不变矩
边界描述-简单描述 1、边界的长度-边界的全局特征,指边界所包围区域的轮廓的周长 区域R的边界B是由R的所有边界点按4-方向或8-方向连接组成的,区域的其它点称为区域的内部点 对于区域R而言,它的每1个边界点P都应满足2个条件: (1)P本身属于区域R;(2)P的邻域中有象素不属于区域R 注意:如果区域R的内部点用8-方向连通来判断,则得到的边界为4-方向连通的,如果用4-方向连通来判断,则得到的边界为8-方向连通的 区域的边界点和内部点要采用不同的连通性来定义,否则会出现歧义
如图说明这个问题 (a) (b) (c) (a)中浅阴影象素点组成1个目标区,如果将内部点用8-方向连通判断,则(b)深色区域点为内部点,其余浅色区域点构成4-方向连通边界;如果将内部点用4-方向连通判断,则此时区域内部点和8-方向连通边界如图(c)所示。
? 但如果边界点和内部点用同1类连通判断,则图中标有“?”的点归属就会出现问题 例如都采用4-方向连通判断,则“?”的点既应判为内部点(邻域中所有象素均属于区域),但又应判为边界点(否则(b)中边界将不连通) 如果边界用单位长链码表示,则水平和垂直码的个数加上√2乘以对角码的个数=》边界长度,将边界的所有点从0排到K-1(设边界点共K个),则边界长度计算式为: ||B||= #{k|(xk+1,yk+1)∈N4(xk,yk)} + √2#{k|(xk+1,yk+1)∈ND(xk,yk))} 对应2个象素间直线段 k+1按模为K计算 对应2个象素间对角线段 数量
2、曲率-描述边界上各点沿边界方向变化的情况,在1个边界点的曲率的符号描述了边界在该点的凹凸性,如果曲率大于0,则曲线凹向朝着该点的法线的正向。如果曲率小于0,则曲线凹向朝着该点法线的负方向。2、曲率-描述边界上各点沿边界方向变化的情况,在1个边界点的曲率的符号描述了边界在该点的凹凸性,如果曲率大于0,则曲线凹向朝着该点的法线的正向。如果曲率小于0,则曲线凹向朝着该点法线的负方向。 如沿顺时针方向跟踪边界,当在1个点的曲率大于0,则该点属于凸段的一部分,否则为凹段一部分
形状数Shape Numbers • 形状数是基于链码的1种边界形状描述符 • 根据链码的起点位置不同,1个用链码表达的边界可以有多个1阶差分。而1个边界的形状数是这些差分中其值最小的1个序列,也就是说,形状数是值最小的(链码)差分码