目录
序言
一、集合论基础
1、集合的子集与相等
2、集合的基本运算符
3、集合的反射和平移
二、二值形态学的基本运算
1、腐蚀
2、膨胀
3、膨胀与腐蚀运算的对偶性
3、开运算与闭运算
4、一些基本的形态学算法
三、二值形态学图像处理
1、形态滤波
2、边界提取
3、区域填充
4、骨架提取
5、物体识别
四、灰度形态学基本运算
1、灰度腐蚀
2、灰度膨胀
3、灰度开运算和灰度闭运算
五、灰度形态学处理算法
1、形态学平衡
2、形态学平衡
3、top—hot变换
序言
形态学图像处理
将数学形态学作为工具从图像中提取表达和描绘区域形状的有用图像分量,如边界、骨架和凸壳等。最常见的有腐蚀和膨胀、开操作和闭操作、击中和击不中变换。本章一开始将讨论二值图像 的处理,之后将扩展到 灰度图像
形态学图像分析基本步骤
■提出所要描述的物体几何结构模式,即提取几何结构特征;
■根据结构模式选择相应的结构元素(简单又有最强的表现力) ;
■用选定的结构元对图像实行击中与否(HMT,Hit-Miss-Transform)变换,便得到比原始图像更显著突出物体特征信息的图像。如赋予相应变量,还可得到定量描述;
■经过形态学变换后的图像突出我们所需的信息,从而可以方便提取信息。
■综上,HMT是MM图像分析的核心运算。
在形态学算法设计中,结构元的选择十分重要,其形状、尺寸的选择是能否有效提取信息的关键。选择的几个基本原则:
■结构元必须在几何上比原图像简单,且有界;
■当选择性质相同或相似的结构元时,以选择极限情况为宜;
■结构元的凸性很重要,对非凸子集,由于连接两点的线段大部分位于集合的外面,故用非凸子集作为结构元将得不到什么信息。
数学形态学进行图像处理的基本思想是:用具有一定形态的结构元素探测目标图像,通过检验结构元素在图像目标中的可放性和填充方法的有效性,来获取有关图像形态结构的相关信息,进而达到对图像分析和识别的目的。
一、集合论基础
1、集合的子集与相等
且当且仅当和同时成立时,称集合A和B集合相等。
2、集合的基本运算符
集合的并
集合的交
集合的补
集合的差
3、集合的反射和平移
集合的反射
由集合A中所有元素相对于原点的反射元素组成的集合称为集合A的反射,记为 。
其中x表示集合A中的元素a对应的反射元素。
集合的反射图示:
集合的平移
由集合A中所有元素平移y= (y1, y2) 后组成的元素集合称为集合A的平移,记为
其中,x表示集合A中的元素a平移y后形成的元素。
集合平移图示:
二、二值形态学的基本运算
1、腐蚀
设A为目标图像,B为结构元素,则目标图像A被结构元素B腐蚀可定义为:
其中,y是一个表示集合平移的位移量。
腐蚀运算的含义是:每当在目标图像A中找到一个与结构元素B相同的子图像时,就把该子图像中与B的原点位置对应的那个像素位置标注为1, 图像A上标注出的所有这样的像素组成的集合,即为腐蚀运算的结果。简而言之,腐蚀运算的实质就是在目标图像中标出那些与结构元素相同的子图像的原点位置的像素。
注意,结构元素中的原点位置可以不为1,但要求目标图像中的子图像与结构元素B的原点对应的那个位置的像素值是1。
腐蚀运算的基本过程是:把结构元素B看作为一个卷积模板,每当结构元素平移到其原点位置与目标图像A中那些像素值为“1”的位置重合时,就判断被结构元素覆盖的子图像的其它像素的值是否都与结构元素相应位置的像素值相同;只有当其都相同时,就将结果图像中的那个与原点位置对应的像素位置的值置为“1”,否则置为0。
注意:当结构元素在目标图像上平移时,结构元素中的任何元素不能超出目标图像的范围。
腐蚀举例:
应用:利用腐蚀算法识别物体
2、膨胀
设A为目标图像,B为结构元素,则目标图像A被结构元素B膨胀可定义为:
其中,y是一个表示集合平移的位移量。
膨胀的含义:先对结构元素B做关于其原点的反射得到反射集合, 然后再在目标图像A上将平移y, 则那些平移后与目标图像A至少有1个非零公共元素相交时对应的的原点位置所组成的集合,就是膨胀运算的结果。
膨胀运算的基本过程:
(1)求结构元素B关于其原点的反射集合;
(2)每当结构元素在目标图像A.上平移后,结构元素与其覆盖的子图像中至少有一个元素相交时,就将目标图像中与结构元素的原点对应的那个位置的像素值置为“1”, 否则置为0。
注意: (1)当结构元素中原点位置的值是0时,仍把它看作是0;而不再把它看作是1。
(2)当结构元素在目标图像上平移时,允许结构元素中的非原点像素超出目标图像范围。
膨胀举例:
应用:利用膨胀运算填充目标区域中的小孔
3、膨胀与腐蚀运算的对偶性
即,对目标图像的膨胀运算,相当于对图像背景的腐蚀运算操作;对目标图像的腐蚀运算,相当于对图像背景的膨胀运算操作。
腐蚀运算与膨胀运算的对偶性示例:
3、开运算与闭运算
开运算
使用同一个结构元素对目标图像先进行腐蚀运算,然后再进行膨胀运算称为开运算。
结构元素B对目标图像A的开运算定义为:
举例:
闭运算
使用同一个结构元素对目标图像先进行膨胀运算,然后再进行腐蚀运算称为闭运算。
结构元素B对目标图像A的闭运算定义为:
举例:
开运算和闭运算的对偶性
闭运算可以使物体的轮廓线变得光滑,具有磨光物体内边界的作用;而开运算具有磨光图像外边界的作用。
4、一些基本的形态学算法
边界抽取(boundary extraction)
区域填充(region flling)
连接分量提取(extraction of connectedcomponents)
凸壳算法(convex hull)
细化(thinning)
粗化(thickening)
骨架(skeletons)
修剪(pruning)
三、二值形态学图像处理
1、形态滤波
2、边界提取
边界提取示例:
3、区域填充
对细胞图像的区域填充示例:
4、骨架提取
变体
1)细化
结果:在不破坏连通性的前提下,细化图像
算法实现:
1)做腐蚀操作,但不立刻删除像素,只打标记;
2)将不破坏连通性的标记点删掉;
3)重复执行,将产生细化结果
2)粗化
结果: 在不合并对象的前提下,粗化图像。
算法实现:
1)做膨胀操作,但不立刻添加像素,只打标记;
2)将不产生对象合并的标记点添加进来;
3)重复执行,将产生粗化结果
另一方案:将图像求反,执行细化,结果再求反
骨架提取实例:
5、物体识别
四、灰度形态学基本运算
灰度形态学是二值形态学向灰度空间的自然扩展。在灰度形态学中,分别用图像函数f (x, y)和b (x, y)表示二值形态学中的目标图像A和结构元素B,并把f (x, y)称为输入图像,b (x, y)称为结构元素,函数中的(x, y)表示图像中像素点的坐标。
二值形态学中用到的交和并运算在灰度形态学中分别用最大极值和最小极值运算代替。
1、灰度腐蚀
在灰度图像中,用结构元素b (x, y)对输入图像f (x, y)进行灰度腐蚀运算可表示为:
(fb)(s,t) = min{f(s+x,t+ y)-b(x,y)I(s+ x),(t+ y)∈;(x,y)∈}
其中,和分别表示f (x, y)和b(x, y)的定义域。x和y必须位于结构元素的定义域之内,而平移参数(s+x)和(t+y)必须位于的f (x, y)的定义域之内。
与二值图像腐蚀运算不同的是:被移动的是输入图像f (x, y)函数而不是结构元素b (x, y)。
灰度腐蚀运算的特点:灰度腐蚀运算的计算是逐点进行的, 求某点的腐蚀运算结果就是:计算该点局部范围内各点与结构元素中对应点的灰度值之差,并选取其中的最小值作为该点的腐蚀结果。经腐蚀运算后, 图像边缘部分具有较大灰度值的点的灰度会降低,因此,边缘会向灰度值高的区域内部收缩。
灰度腐蚀运算示例:
灰度腐蚀运算的一维函数形式:
利用结构元素b (x)对目标图像f (x)的腐蚀过程是:在目标图像的下方“滑动”结构元素,结构元素所能达到的最大值所对应的原点位置的集合即为腐蚀的结果。
腐蚀运算过程示意图:
2、灰度膨胀
在灰度图像中,用结构元素b (x, y)对输入图像f(x,y)进行灰度膨胀运算可表示为:
其中,和分别表示f (x, y)和b (x, y)的定义域。X和y必须位于结构元素的定义域之内,而平移参数(s+x)和(t+y)必须位于的f (x, y)的定义域之内。
需要注意的是:二值膨胀运算中要求目标图像集合和结构元素集合相交至少有一个元素。
灰度膨胀运算的特点:灰度膨胀运算的计算是逐点进行的,求某点的膨胀运算结果就是计算该点局部范围内各点与结构元素中对应点的灰度值之和,并选取其中的最大值作为该点的腐蚀结果。经膨胀运算后,图像边缘部分得到了延伸。
灰度膨胀运算示例:
灰度膨胀运算的一维函数形式:
膨胀运算过程示意图:
3、灰度开运算和灰度闭运算
灰度开运算
用结构元素b对灰度图像f进行开运算可表示为:
开运算可以通过将求出的所有结构元素的形态学平移都填入目标图像f下方的极大点来计算。如下图几何直观描述:
灰度闭运算
用结构元素b对灰度图像f进行闭运算可表示为:
闭运算可以通过求出所有结构元素的形态学平移与目标图像.上方的极小值点来计算。如下图几何直观描述:
五、灰度形态学处理算法
1、形态学平衡
对添加椒盐噪声的Lena图像的形态学平滑:
2、形态学平衡
使用空间梯度算子对形态学梯度算子对Lena图像进行处理的结果:
3、top—hot变换
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_37692302/article/details/89448885
冈萨雷斯《数字图像处理》读书笔记(九)——形态学图像处理
形态学来自于生物学,研究动植物的形态和结构。运用在图像中可提取如边界、骨架和凸壳。初学形态学都是在二值化的图像上研究,之后可以扩展到灰度图像。
膨胀和腐蚀
数学形态学与集合论分不开,因为形态学中的操作是基于两个集合的,一个是待处理的像素集合,一个我们叫做结构元SE。SE的形状有多种,原点也有多种,但一般是重心,原点在腐蚀erode和膨胀dilate中表示当前要处理的像素点。像卷积一样,结构元会在图像上遍历,所以我们要对集合A填充,使得结构元的原点在A的边界时,结构元的整体都不会落在图像之外。到现在我们已经知道了形态学基本操作(腐蚀和膨胀)是基本流程和卷积类似,就是利用一个核对像素遍历。卷积是计算卷积核中对应像素乘积之和。腐蚀和膨胀则是基于两个集合的关系。
腐蚀运算的当前像素的结果是两个集合做逻辑与运算,如果SE所占区域和A的一部分是完全重合的,即SE完全属于集合A,那么这一点就取集合A内的值。腐蚀其实是击中击不中变换的简化。击中击不中变换可用于检测图像中目标形状的原点位置,使用的前提条件是图像中的物体之间是断开的,即每个物体被至少一个像素宽的背景像素所环绕。对A和A的补集分别利用D和W-D进行腐蚀,腐蚀结果的交集就是目标的原点。D就是目标,W-D代表与背景相联系的集合。
膨胀是两个集合做或运算,只要部分重合,就把当前像素设置为集合A中的值。膨胀的最简单应用之一是桥接裂缝。而膨胀在连接处细于结构元时会断开。膨胀的一个应用是条件膨胀,可用于孔洞填充,如图像中有一些球体,但是球体中有反光,利用孔洞填充可以消除反光。具体方法是在边界内找到初始点,利用结果元进行迭代,一次迭代是膨胀后与A的补集求交集,交集的目的是寻找背景点。当膨胀之后与A取交集,这时候取的是前景点,可以用于连通分量的提取。
注意我们描述待处理图像A和结构元都是把他们当做集合,膨胀和腐蚀的具体运算也是两个集合之间的关系进行运算,得到的结果也是当做一个集合进行描述。结果的集合是结构元在图中遍历中的所有结果的集合,具体遍历的方式在腐蚀中表现为平移z,在膨胀中表现为结构元的反射(中心对称)的z平移。
还需要注意的是对一幅图(先考虑二值图)中哪些是集合A,我的理解是这个要具体问题具体分析,当结构元元素是白色时,处理的就是图像中的白色区域。
开运算和闭运算
开操作,先腐蚀后膨胀。一个几何解释是开运算是结构元B在A的内侧滚动时所能达覆盖的最大面积。从公式可以看出开运算和腐蚀都是平移后进行条件判断,判断条件是平移之后完全属于集合A,但是结果的操作对象取的不再是结构元的原点,而是平移之后的结构元整体。因为结构体是在A内部平移遍历的,且取的是结构元所能覆盖的面积的最大值,这使得开操作有一个性质:开操作之后的集合是A的子集。开操作同时会断开一些窄的连接和细的突出,可用于消除椒盐噪声。
闭操作和开操作的彼此对偶的。
结构元B对A的闭操作可以看作B的反射对A的补集的开操作,得到的结果再取补集。性质同样对偶,A是闭操作结果的子集。
形态学还可以用于获得集合A的凸壳C(A)。如果A内任意两个点的连线都在A的内部,那么A就是凸集(凸形)。凸壳是包含于A的最小凸集。获得凸集的方法依然是迭代,使用多个结构体对A做击中击不中变换,执行与A的并集,得到的结果再取并集。
根据击中击不中变换,还可以达到细化和粗化。
可以用连续腐蚀和开操作得到骨架。
细化和骨架算法会保留一些寄生分量,因而需要用后处理来消除这些寄生分量。
形态学重建,设计两幅图像和结构元,一幅图像用于标记变换的起始点,一幅图像是模板,用于约束该变换。在形态学重建中,核心是测地膨胀和测地腐蚀。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zcg1942/article/details/81874294
冈萨雷斯《数字图像处理》学习笔记(十)图像分割
目录
序言
一、点、线和边缘检测
1、背景知识
2、孤立点的检测
3、 线检测
4、边缘模型
5、基本边缘检测
6、更先进的边缘检测技术
7、边缘连接和边界检测
二、阈值处理
1、基本的全局阈值处理
2、用Otsu方法的最佳全局阈值处理
三、区域分割
1、基于区域的分割
2、用形态学分水岭的分割
3、分割中运动的应用
序言
本章中的多数分割算法均基于灰度值的两个基本性质之一:不连续和相似性。对于不连续的灰度,方法是以灰度突变为基础分割一幅图像,例如边缘。对于相似的灰度,主要方法是根据一组预定义的准则把一幅图像分割为相似的区域,例如阈值处理、区域增长、区域分裂和区域聚合。
主要内容:■间断的检测
■点检测、线检测、边缘检测
■边缘连接和边界的检测
■局部处理、整体处理
■基于门限的分割方法
■全局门限、自适应门限
■基于区域的分割方法
■区域生长、分离与合并
■基于形态学分水岭的分割方
■水坝构造、分水岭算法
一、点、线和边缘检测
1、背景知识
一阶导数:
二阶导数:
在增强细节方面,二阶导数远强于一阶导数:
1. 一阶导数通常在图像中产生较粗的边缘;
2. 二阶导数对精细细节,如细线、孤立点和噪声有较强的响应;
3. 二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应;
4. 二阶导数的符号可用于确定边缘的过渡是从亮倒暗还是从暗到亮。
2、孤立点的检测
孤立点的检测应以二阶导数为基础,使用拉普拉斯算子:
拉普拉斯算子
特点:
■中心为正,邻近为负;模板和为0
■对噪声敏感、产生双象素宽边缘,没有方向信息
用途:
■少用于边缘检测
■常用于在边缘已知情况下,确定像素在明区或暗区。
3、 线检测
线检测同样可以使用拉普拉斯模板,但拉普拉斯检测子是各向同性的,因此其响应与方向无关,也可以使用与方向有关的改进算子:
4、边缘模型
1.台阶模型
2.斜坡模型
3.屋顶边缘模型
一阶导数的幅度可用于检测图像中的某个点处是否存在一个边缘。二阶导数的符号可用于确定一个边缘像素是位于该边缘的暗侧还是亮侧。二阶导数的附加性质:对图像中的每条边缘,二阶导数生成两个值;二阶导数的零交叉点可用于定位粗边缘的中心。
5、基本边缘检测
梯度及性质
梯度算子
一维模板:
Roberts:
Prewitt:
Sobel:
用于检测对角线边缘的Prewitt和Sobel:
6、更先进的边缘检测技术
Marr-Hildreth边缘检测器
高斯拉普拉斯LoG:
坎尼边缘检测器
7、边缘连接和边界检测
理想情况下,边缘检测应该仅产生位于边缘上的像素集合。实际上,由于噪声、不均匀照明引起的边缘间断,以及其他引入灰度值虚假的不连续的影响,这些像素并不能完全描述边缘特性。因此,一般是在边缘检测后紧跟连接算法,将边缘像素组合成有意义的边缘或区域边界。
8、霍夫变换(边界搜索的变换法)
■点-线的对偶性质
■图象空间XY里所有过点(x, y)的直线,其方程为
y= px+ q
■将上述方程转换为参数PQ空间,其表达式为
q=-px+y
■图像空间XY中-条直线上的点,在参数空间PQ中都过点(Pr q)
■点-线对偶
■图象空间中共线的点曰参数空间里相交的线
■参数空间中相交于同1个点的直线白图象空间里共线的点
■哈夫变换思路
■把在图象空间中直线的检测问题转换到参数空间里,
■通过在参数空间里进行简单的累加统计完成检测任务
■具体方法
■ 在参数空间PQ里建立1个2-D的累加数组A( p, q)
■P是XY空间直线的斜率
■q是XY空间直线的截距
■数组大小根据对待检测线段的斜率和截距的估计来确定
■p∈[$pmin
$
𝑝
𝑚
𝑖
𝑛
,]
■q∈[, ]
■累加方式
■A(p,q)=A(p,q) +1
■A( p, q)值:共线点数
■(p, q)值:直线方程参数
■根据A( p, q)大小检测线段
■直线变换到霍夫空间的点
■实际中的变换不采用斜率和截距
■应用直线的极坐标描述方式
■直线的检测
二、阈值处理
图像阈值处理在图像分割应用中处于核心地位。
1、基本的全局阈值处理
2、用Otsu方法的最佳全局阈值处理
三、区域分割
1、基于区域的分割
区域生长
区域增长包含的三个条件为:(1)选定增长的起始点(核);(2)确定增长的规则;(3)确定增长的结束条件。
举个栗子:
■首先确定可被区分的区域数量,并选定种子像素
■根据相邻像素之间的灰度相似性,确定是否可以属于同一类别
■对每一像素都经过这样的判断就可以结束分割过程
■决定是否属于同一区域的灰度判定方式不同,分割结果不同
■种子的选取方法
■根据图像直方图,波峰数目代表图中目标的数目
■波峰位置的灰度是目标的平均灰度。种子灰度
■区域生长的判据
■根据直方图,波峰之间的灰度差别可以作为生长判据
■如果区域具有纹理特征,还可以引入纹理判据进行判断
■可以根据对目标的先验知识(形状、大小等)来约束区域生长的过程
区域分割与聚合
基本思路:首先将图像分隔为初始区域,然后分裂和合并这些区域直到获得均匀区域为止。
基本步骤: ■初始分隔:一 分为二(或一分为四) ;
■计算区域方差;
■将方差大的区域继续划分,方差小的区域与邻域比较考虑合并。
举个栗子:
■首先将图像一分为四;
■一个区域不必再分,其他继续一分为四;
■余下两个还需再分,其他可以根据灰度相似性判断门限决定是否合并(本例分别合并绿色和白色区域)
■没有需要再分的区域,根据相似性合并所有可能的子区域
2、用形态学分水岭的分割
基本概念
■同一目标,有相近的灰度,有相邻的空间位置
■灰度类比高程,可用地形学来理解图像的目标
■地形学中的汇水盆地类比目标(均匀的低灰度区)
■地形学中的分水岭类比目标之间的分割线(突变的高灰度区)
■目标的灰度并非都是最低值,分析的对象转换到梯度图像,更符合地形学的概念
分水岭算法的思想
■在梯度图像上分析
■梯度值低的位置为中心,逐步向周边高梯度位置扩展
■采用形态学膨胀的方式扩充空间连续的位置
■同时受约束于图像的高梯度区域
■扩展的同时遇到多区域交汇,交汇的位置就形成了分割的边界(分水岭、水坝)
分水岭分割算法
■符号定义
■梯度小于n的全部像素集合T(n)
■包含梯度小于n的第i个区域的像素集合C;(n)
■初始化:
■根据T(min+1)得到初始k个区域Ci(min+1), i= 1,2,..k
■算法递归(以第n步为例)
■梯度递增,分析范围扩大T(n)→T(n+1)
■各个区域膨胀,C;(n)→C,(n+1), i=1,2,..k
■新增加的范围内,其像素q必定属于以下三种情况之一
■对情况(a),产生新区域,q为其中元素
■对情况(b),q合并到相应的区域
■对情况(c)。q为所属区域之间的分割线(分水岭)
■分水岭算法的问题
■ 梯度图对噪声敏感,直接分割容易造成过分割
■太多的分割区域使得其结果没有实用价值
■解决办法
■对梯度图像先行滤波;
■应用标记的方法
应用标记
■图像中指定区域的种子
■被更高‘海拔’包围、区域内部连通、具有相同灰度
■在种子的基础上使用分水岭算法,过程中不再产生新区域,对算法中情况(a)的像素做不归类处理,直到全部像素都分配到相应区域,形成前期分割结果
■在前期分割结果的每个区域内,再进行目标/背景区分,得到最后的目标分割
3、分割中运动的应用
见课本!!!
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_37692302/article/details/89455581
第十一章 特征提取
在图像分割后,通常需要将分割后的像素集转换为适合计算机进一步处理的形式。这包括特征提取,其中特征提取又包括特征检测和特征描述两个步骤。
特征检测用于在图像、区域或边界中发现特征,例如检测区域边界上的角点。而特征描述则是将定量属性分配给检测到的特征,例如描述角点的方向和位置。本章中讨论的特征处理方法可以分为三大类,具体取决于它们适用于边界、区域还是整个图像。有些特征适用于多个类别。
特征描述子应尽可能对缩放、平移、旋转、光照和视角等参数的变化不敏感。因此,本章中讨论的描述子要么对这些参数中的一个或多个的变化不敏感,要么可以被归一化,以补偿这些参数中的一个或多个的变化。
综上所述,图像分割后的特征提取阶段主要包括特征检测和特征描述两个步骤,而特征描述子应具备对图像参数变化不敏感或可被归一化的特性,以适应不同场景下的特征匹配和识别需求。
背景
介绍了图像特征提取的概念和相关术语。首先,它讨论了特征的定义,即作为能够帮助我们为图像中的目标分配唯一标记的属性,能够有效地区分图像或图像集合。接着,它提到了特征提取的两个方面:特征检测和特征描述,即检测特征并描述特征。文中还涉及了特征的独立性和协变性的概念,以及局部特征和全局特征的区分。
另外,文章还提到了特征描述子通常被用于高级任务的预处理,比如图像配准、目标识别、模式搜索等。最后,它将特征分为边界特征、区域特征和整体图像特征三大类,并解释了这些分类的意义。
边界预处理
边界跟踪
关于边界跟踪算法的讨论,主要介绍了如何从二值图像中提取区域的边界。该算法通过逐步处理图像中标记为1的点,按顺时针方向或逆时针方向来跟踪边界,并最终得到有序的点序列。这个算法可以适用于处理复杂的边界结构,并且也可以用于提取区域内部的孔洞边界。
链码
介绍了链码在数字图像处理中的应用,主要包括弗里曼链码和重取样边界的处理方法。弗里曼链码是一种基于4连通或8连通的编号方案,对每个线段的方向进行编码表示边界。而重取样边界则是通过对原始边界点进行重取样,将边界点分配给较粗网格的节点来生成链码。链码的数值取决于起点,但可以通过简单的归一化过程来解决。需要注意的是,归一化只有在边界本身旋转不变且尺度变化时才是精确的。选择合适的重取样方法可以降低边界形状不同的程度。
这段内容讲述了斜率链码(SCC)的原理和应用。斜率链码是一种用来表示曲线特征的方法,通过计算相邻直线段之间的斜率变化,并将其归一化到连续的区间(-1,1),从而得到曲线的近似链码。与弗里曼链码不同的是,斜率链码需要定义直线段的长度,而不需要定义网格,因此相对而言更简单。斜率链码的逆是通过颠倒符号的顺序及其正负号得到的,而镜像则是从原点开始颠倒符号的正负号得到的。
这种方法的优点在于可以提供更精确的曲线表示,尤其在大范围内的斜率变化方面。另外,斜率链码也具有平移独立性和旋转独立性的特点。
总的来说,斜率链码是一种用于描述曲线特征的有效方法,可以在图像处理和模式识别等领域中得到广泛的应用。
用最小周长多边形近似边界
主要讨论了数字图像处理中的最小周长多边形(MPP)算法。首先介绍了用单元来封闭边界的直观方法,然后详细描述了MPP算法的实现过程。该算法使用凸顶点和凹顶点来确定MPP的顶点位置,通过引入两个“爬行”点(白色和蓝色)来进行顶点的遍历和判断,最终找到被简单连通细胞复合体包围的多边形的所有MPP顶点。
此外,文中还提到了一些几何概念和矩阵分析方法,用来计算顶点的方向和确定顶点在MPP中的位置等
标记图
讨论了使用标记图简化边界表示的基本思想,并介绍了两种生成标记图的方法:将质心到边界的距离画成角度的函数和遍历边界并计算与参考线间的角度。为消除对尺寸的依赖性,可以采用归一化的方法,如缩放函数使其总是跨越相同的值域[0,1]或让每个样本除以标记图的方差。此外,文章还提到了斜率密度函数作为标记图的一种变体,它能够对具有恒定正切角的边界截面做出强响应,并在急弯处产生深谷。最后,文章简要介绍了使用最小周长多边形算法找到被简单连通细胞复合体包围的多边形的所有MPP顶点的过程。
骨架、中轴和距离变换
一种是拓扑保持细化,即在保持端点和线的连通性的同时对区域进行连续细化;另一种是通过计算中轴变换(MAT)来获得区域的骨架。MAT是由一个以上的燃烧前沿在同一时间到达的点的集合,可以用于直观地解释一个区域的MAT。此外,文章还提及了距离变换的概念,并介绍了计算距离变换的方法,包括具有线性时间复杂度的算法。
边界特征描述子
一些基本的边界描述子
边界的长度是描述边界最常用的指标之一。边界上的像素数量可以近似表示边界的长度。对于一个由链码曲线表示且两个方向上的间距都为1的情况,垂直分量和水平分量的数量加上对角分量的数量乘以√2,就是该链码曲线的精确长度。如果将边界表示为多边形曲线,那么边界的长度等于多边形各条边的长度之和。
边界的直径定义为最大的距离测度[D(p1, p2)],其中p1和p2是边界上的点。直径的长度和方向可以通过连接这两个极值点(包括直径)的直线段来确定。长轴也被称为最长弦,它的长度可以通过以下公式计算:length = √[(x2-x1)^2 + (y2-y1)^2],其中点(x1, y1)和(x2, y2)定义了长轴的位置。角度angle可以通过arctan[(y2-y1)/(x2-x1)]来计算。
边界的短轴是垂直于长轴的直线,使得通过边界与两个轴的4个交点的矩形完全包围边界。这个矩形被称为基本矩形或外接矩形,而长轴与短轴之比被称为边界的偏心率。
边界的曲折度(曲率)可以定义为斜率的变化率。通常情况下,很难得到原始数字边界上某点处的曲折度的可靠测量,因为这些边界往往是局部"粗糙"的。然而,相邻边界直线段之间的斜率差异可以作为一种有效的曲折度测量。多边形近似非常适用于这种方法,在这种情况下,我们只需关注顶点处的曲折度。通过检查顶点处斜率的变化范围,可以进一步细化曲折度的描述。
使用斜率链码(SCC)表示边界时,可以很容易地基于斜率变化计算曲折度。曲折度是曲线迂回曲折的度量,通过链码中各元素的绝对值之和来定义。具体而言,曲折度t可以计算为:t = Σ|a|,其中n是链码中的元素数量,|a|是链码中元素的值(斜率变化)。
根据给定的图像和血管边界,我们使用斜率链码(SCC)来描述曲折度。首先,我们提取了每条血管的边界,并计算了其长度P(以像素为单位)。为了使得比较有意义,我们将每个边界归一化,使得每个边界都有相同数量m的直线段。然后,我们计算了每个边界的线段长度L,其中L = mlP,其中m是直线段的数量。
接下来,我们使用SCC来表示每个边界的曲线。SCC的元素数量为m-1。曲线的弯曲度t定义为链元素的绝对值之和,即t = Σ|a|,其中a是链码中的元素值(斜率变化)。
在图11.15(b)的表格中,我们列出了基于51个直线段(即n = m-1)的A、B和C血管的t值。这些值用来量化血管的曲折度。根据结果,B的曲折度稍大于A,而C的曲折度最小。
这些曲折度值与我们对三条血管的视觉分析结果一致。根据曲折度的计算,我们可以判断血管的扩张和增大程度,这可能是早产儿视网膜病变(ROP)的征兆之一。
血管曲折度的计算对于计算机辅助诊断ROP非常有帮助。它可以帮助眼科医生进行初步诊断和决策,并提供关于视网膜血管异常生长的重要信息。这样的计算方法有助于早期发现和干预ROP,以避免患者失明的风险。
形状数
关于图像处理中弗里曼链码和形状数的描述,内容涉及较为复杂的概念和算法步骤。我可以帮你进行总结,简化这段内容。
这段文本主要涉及了图像处理中的弗里曼链码和形状数的计算方法。弗里曼链码用于表示边界形状,并且与边界的旋转无关。形状数是指在一定阶数下,不同形状的数量。在实际应用中,我们通过寻找最接近基本矩形偏心率的矩形来确定网格大小,并利用该网格生成弗里曼链码,从而得到形状数。同时,需要注意边界中的凹陷可能会导致形状数的阶大于所选阶数,因此需要特殊处理。
简而言之,这段内容介绍了如何利用弗里曼链码和形状数来表示图像中的形状信息,并提供了一些实际操作的指导原则。
傅里叶描述子
数字边界及其复数序列表示:
使用复数表示法将数字边界在坐标系中表示为序列s(k),其中k=0,1,2,…,K-1。
每个坐标对可以表示为复数s(k)=x(k)+jy(k),其中j是虚数单位。
这种表示方法将二维描述问题简化为一维描述问题。
离散傅里叶变换(DFT)及其应用:
s(k)的离散傅里叶变换(DFT)为a(u)=Σs(k)e^(-j2πuk/K),其中u=0,1,2,….,K-1,a(u)称为边界的傅里叶描述子。
傅里叶反变换可以恢复s(k),即s(k)=Σa(u)e^(j2πuk/K)。
使用部分傅里叶系数的近似表示:
当只使用前P个系数时,可以得到s(k)的近似表示s(k)=Σa(u)e^(j2πuk/K),其中u从0到P-1。
删除高频系数相当于使用了理想低通滤波器进行滤波,P越小表示丢失的细节越多。
DFT的实现细节:
对DFT的结果进行中心化处理,需要乘以(-1)^k以及在计算反变换时再次使用中心化处理。
边界上的点数及其反变换必须是偶数,因此删除的系数数量必须是偶数,以保持对称性。
DFT及其反变换常使用FFT算法进行计算。
统计矩
统计矩及其应用:
对于离散随机变量z,其n阶矩可以用公式u(z)=Σ(z-m)^n * p(z)计算,其中m是z的均值,p(z)是z出现的概率。
对于标记图中的离散函数g(r),可以将其看做随机变量r的概率分布,利用公式u(r)=Σ(r-m)^n * g(r)计算r的矩。
矩的前几个值可以用来区分不同形状的标记图。
离散傅里叶变换在描述标记图中的应用:
将离散函数g(r)进行离散傅里叶变换,可以得到其频谱,并使用前几个分量作为描述子。
这种方法对旋转不敏感,但需要保证起点相同,可以通过尺寸归一化来实现缩放。
区域特征描述子
一些基本的描述子
本节介绍了几个用于度量图像中区域形状的描述子。其中包括紧致度、圆度和偏心率。紧致度和圆度都是无量纲的测度,用于评估区域形状的规则程度。紧致度定义为周长的平方与面积之比,圆度定义为4倍区域面积与周长平方的比值。偏心率是一个与区域有着相同二阶矩的椭圆的偏心率,用于评估区域的形状是否趋向于圆形。偏心率的值域是[0,1]。在计算偏心率时,需要先计算区域的二阶矩和协方差矩阵,然后求解协方差矩阵的特征向量和特征值,以确定椭圆轴的方向和长度。
拓扑描述子
本节介绍了拓扑学在图像处理中的应用。拓扑学研究的是图形不受任何变形影响的性质,前提是图形未被撕裂或拼合。拓扑性质既不依赖于距离,又不依赖于基于距离测度的任何性质,因此在图像处理中具有重要意义。
区域的连通分量和孔洞数量是拓扑描述子的两个重要指标。欧拉数可以用来描述区域的连通性和孔洞的数量。具体而言,欧拉数等于区域的连通分量数量减去孔洞数量。对于多边形网络,欧拉公式可以表示为V -o+F=C-H,其中V为顶点数,o为边数,F为面数,C为连通分量数量,H为孔洞数量,E为欧拉数。
拓扑学的应用使得图像处理可以更加稳健和高效。例如,在形状分析、图像识别和目标跟踪等领域,拓扑学都发挥着重要的作用。
纹理
节主要讨论了描述区域纹理的统计方法和谱方法。其中,统计方法通过灰度直方图的统计矩来量化纹理的特征,如平滑度、粗糙度和规则性等。常用的统计矩包括均值、方差、偏斜度和峰度等。谱方法基于傅里叶频谱的特性,通过识别频谱中的高能量窄峰来检测图像中的全局周期性。本节介绍的纹理描述子包括一致性测度、平均熵和相对平坦度等。这些描述子可用于定量地描述图像或区域的纹理特征,有助于图像分析、识别和分类等应用。
灰度共生矩阵是一种用于捕捉图像中像素间空间关系的方法。它利用一个定义像素相对位置的算子来计算图像中特定灰度值对在指定位置上出现的次数。
通过构建灰度共生矩阵,可以获取不同灰度级之间以及它们在特定位置出现的频率信息。在共生矩阵中,每个元素表示了图像中两个灰度值对在指定位置上出现的次数。
为了降低计算量,可以将灰度级量化为几个范围,并相应地调整共生矩阵的大小。通过选择合适的位置算子并分析共生矩阵的元素,可以检测到图像中的灰度纹理模式。
为了描述共生矩阵的内容,可以使用一组描述子,如均值、标准差等。这些描述子可以帮助分析和表征图像中的纹理信息。
在5.4节中提到,傅里叶谱非常适合描述图像中周期或半周期二维模式的方向性。通过分析傅里叶谱的特征,可以获取有关纹理模式的信息。
首先,谱中的突出峰可以给出纹理模式的主方向。这意味着可以通过检测谱中能量较高的集中爆发来确定纹理模式的方向性。
其次,频率平面上的峰值位置可以给出纹理模式的基本空间周期。通过分析傅里叶谱在频率平面上的峰值位置,可以了解纹理模式的周期性。
第三,通过滤波消除任何周期分量,然后利用统计技术描述留下的非周期图像元素。这意味着可以通过滤波去除图像中的周期分量,然后对剩余的非周期元素进行统计分析,以描述纹理特征。
为了简化傅里叶谱的表示和分析,可以将其转换为极坐标系中的函数S(r,0),其中S是谱函数,r和0是极坐标系中的变量。通过分析S(r)和S(0),可以得到从原点到径向方向的谱特性和以原点为圆心的圆上的谱特性。
通过对这些函数进行积分(或离散变量求和),可以得到更全局的描述。式(11.32)和式(11.33)表示了每对坐标(r,0)构成一对值[S(r),S(0)]。通过改变坐标,可以生成描述图像或区域纹理的谱能量的两个一维函数S(r)和S(0)。此外,还可以计算这些函数的描述子,例如最大值的位置、幅度和轴向变化的均值与方差,以及函数的均值和最大值之间的距离等,以定量地表征它们的特性。
矩不变量
本文讨论了数字图像的特征提取问题,其中主要介绍了使用二维矩和归一化中心矩来描述图像特征的方法,并给出了一组7个二维矩不变量R,这些不变量对于平移、缩放、镜像和旋转均具有不变性。矩不变量的物理意义可以通过为某些低阶矩附加附加信息来表达,但随着矩不变量的阶数增加,它们所表达的复杂性会使得物理意义消失。因此,这组矩不变量的重要性在于它们的不变性,而不是它们的物理意义。
作为特征描述子的分量
本节介绍了主分量分析(PCA)在边界和区域特征提取中的应用。与之前讨论的不同,本节将主分量应用于多幅图像的特征基准,并将它们表示为向量。假设我们有一幅彩色图像,由三个分量图像组成。我们可以将这三个分量图像排列成一个向量,并将所有图像中相同位置的像素对应起来。
首先,定义了向量的总体平均值和协方差矩阵。总体平均向量是向量的期望值,而协方差矩阵描述了向量中各个分量之间的关系。协方差矩阵是一个实对称矩阵,可以通过特征值分解得到一组正交的特征向量。特征向量按降序排列,对应于特征值。
接下来,介绍了霍特林变换(也称为主分量变换),它将原始向量映射到由特征向量构成的新向量空间中。霍特林变换具有以下性质:映射后的向量具有零均值,并且它们的协方差矩阵可以由特征向量和特征值表示。此外,映射后的向量的各个元素是不相关的。
最后,讨论了使用特征向量重建原始向量的过程。重建后的向量与原始向量之间存在一定误差,可以通过选择与最大特征值相关联的特征向量来最小化误差。因此,霍特林变换也被称为主分量变换。
整体图像特征
哈里斯-斯蒂芬斯角检测器
角是曲线方向的快速变化,在图像处理中是一种重要的特征。角在自动导航跟踪、立体机器视觉算法和图像数据库查询等应用中经常被用于匹配图像特征。本节介绍了由Harris and Stephens提出的一种角检测算法,即哈里斯-斯蒂芬斯角检测器。
算法原理:
- 在图像上移动一个小窗来检测角,窗口设计用于计算灰度变化。
- 检测器窗口位于恒定区域时,灰度变化接近零;窗口横跨两个区域边界时,灰度变化只在一个方向上发生;窗口包含角或孤立点时,灰度变化在所有方向上都发生。
- 使用小块图像计算差的平方的加权和,得到一个2x2的矩阵M。
- 根据M的特征值来区分三种场景:两个小特征值表示平坦区域;一个大特征值和一个小特征值表示边缘;两个大特征值表示角或孤立的亮点。
- 使用角响应测度R来表示角的存在,R的计算基于M的特征值。
算法优点:
- 角检测算法对视点是独特且合理不变的,因此在图像处理中具有广泛应用。
- 通过计算特征值和使用角响应测度R,可以有效区分不同的图像场景。
算法参数:
- 加权函数w(s,t):可以选择盒式核或指数函数。
- 敏感因子k:根据具体实现确定,值域一般为0 < k < 0.25。
- 阈值T:用于判断是否检测到角的界限。
最大稳定极值区域
本节介绍了最大稳定极值区域(MSER)算法,它是一种基于灰度的特征提取方法。与哈里斯-斯蒂芬斯角检测器不同,MSER适用于表征类似“斑点”的图像特征,通常产生整体图像特征以建立对应关系。MSER基于灰度图像的阈值处理,并使用分量树和稳定性测度公式来计算每个连通区域的稳定性值(y值),以识别MSER。MSER是阈值范围内不改变大小的极值区域,具有仿射-协变性质。MSER算法可以用于检测两种类型的区域:更暗背景下的明亮区域和更亮背景下的暗色区域。控制检测到的区域数量的方法包括选择AT或将不在规定范围内的区域标记为不重要的区域。
尺度不变特征变换
尺度空间
检测局部极值
SIFT(尺度不变特征变换)是一种用于图像处理中的特征提取算法,可以在不同尺度和旋转下检测到相同的关键点。SIFT算法的主要步骤包括:查找初始关键点、精化关键点位置和消除边缘响应。
首先,SIFT通过计算高斯差来查找图像的初始关键点,并使用DoG图像在不同尺度上进行检测。然后,SIFT使用泰勒展开和海森矩阵来精化关键点的位置,并利用D(x)函数值剔除低对比度的不稳定极值。最后,SIFT通过计算局部曲折度来消除边缘响应。
SIFT算法的优点是具有良好的尺度不变性和旋转不变性,适用于不同尺度和角度下的特征匹配。它在计算机视觉领域中被广泛应用于物体识别、图像拼接等领域。
本节介绍了SIFT算法的关键点检测和方向分配过程。SIFT通过计算高斯差分图像的极值点来检测关键点,并根据关键点所在尺度选择最接近该尺度的高斯平滑图像,计算每个关键点的梯度幅度和方向角度,然后将其加入以关键点为中心的邻域的方向直方图中,使用圆形高斯函数对直方图进行加权。直方图中的峰值对应于局部梯度的主要方向,最高峰值及其80%的局部峰值用于创建具有该方向的另一个关键点。SIFT还使用一条抛物线拟合最接近每个峰值的三个直方图值,对峰值位置进行内插来提升精度。最后,SIFT根据局部梯度的主要方向为每个关键点分配一个一致的方向,实现图像旋转的不变性。关键点方向图通常非常混乱,但在图像匹配应用中具有价值。
SIFT将一个大小为16×16像素的区域以一个关键点为中心,并计算该区域中每个点的梯度幅度和方向。这些梯度信息被用来构建一个包含16个方向的直方图。为了实现方向不变性,直方图的方向值被量化为8个相隔45°的方向。这样做的目的是避免微小的方向变化导致描述子的不稳定性。
通过将每个方向值按比例分配给最近的容器,并使用高斯加权函数来减少位置变化较小的描述子的突变,可以为每个关键点生成一个128维的描述子向量。
为了降低光照的影响,SIFT对特征向量进行了归一化处理。首先,将每个分量除以向量范数,使向量长度归一化为单位长度。其次,通过对归一化后的特征向量进行阈值处理,降低较大梯度值的影响,使所有分量都小于一个阈值(一般为0.2)。
总之,SIFT是一种用于计算图像描述子的方法,它可以在不同尺度、方向、光照和视点的变化下实现特征匹配和识别。它的主要步骤包括计算局部图像梯度、构建直方图、量化方向值、归一化特征向量等。这些步骤使得SIFT具有较强的不变性和鲁棒性,适用于许多计算机视觉任务。
以下是SIFT方法的步骤小结:
- 构建尺度空间:通过对输入图像进行平滑处理和大小加倍处理来构建尺度空间。参数包括初始尺度、尺度个数和倍频程。
- 得到初始关键点:在尺度空间中计算高斯差分图像,并在每个尺度上查找极值点作为初始关键点。
- 提高关键点位置的精度:通过泰勒级数展开对初始关键点的位置进行内插运算,以提高关键点位置的精度。
- 删除不合适的关键点:根据关键点的对比度和定位差异进行筛选,删除低对比度和定位差异较大的关键点。
- 计算关键点方向:根据关键点周围的梯度信息计算每个关键点的方向。
- 计算关键点描述子:使用关键点周围的图像区域计算每个关键点的特征向量,描述其局部特征。
本章节名为“图像模式分类”。
本章主要介绍了图像模式分类技术,将其分为三种方法:按原型匹配分类、基于最优统计公式分类和基于神经网络分类。
- 按原型匹配分类:这种方法通过将待分类的图像与已知的原型进行比较,从而确定其所属类别。常用的原型匹配方法包括模板匹配、距离度量和统计模型。该方法适用于数据性质很好理解的应用,并需要定义有效的特征和分类器来实现分类任务。
- 基于最优统计公式分类:这种方法通过建立最优统计判决函数来进行图像分类。它通常需要大量的工程来定义分类器的特征和元素,以实现有效的分类。常用的最优统计方法包括贝叶斯分类器和最小错误概率分类器。
- 基于神经网络分类:这种方法不依赖于事先规定的特征和分类器,而是通过神经网络自动学习图像的模式分类特性。神经网络可以通过训练来学习和提取图像的特征,从而实现图像分类。这种方法适用于系统已经学习到模式分类特性的应用。
本章重点介绍了这些方法的原理,并介绍了它们在图像模式分类中的具体应用。通过这些方法,可以实现对图像进行准确分类和识别,从而在计算机视觉和图像处理领域有着广泛的应用。
背景
讨论了图像模式识别的基本方法和步骤。图像模式识别是将图像中的模式赋予类标记的技术,包括感知、预处理、特征提取和分类四个阶段。常用的分类方法包括基于原型的分类、最优统计分类器和神经网络。其中,基于原型的分类方法旨在使特征变得独特且易于检测,例如银行支票处理器使用样式化字体来简化机器处理;最优统计分类器是基于决策理论的分类方法,通过选择参数来实现最优的分类性能;神经网络则具有生成适合于识别的表示(特征)的独特能力。在有监督学习中,使用已标记的数据进行训练,而无监督学习则使用未标记的数据进行学习。
模式与模式类
模式向量
模式向量在表示特征描述子时使用小写字母如x、y和z,并且可以表示为列形式或行形式。模式向量可以看作是n维欧氏空间中的一个点,而模式类则可以看作是这个模式空间中点的集合。
模式向量可以直接由图像的像素灰度形成,也可以使用特征来表示。例如,费舍尔在识别鸢尾花时使用了花瓣和花萼的长度和宽度作为特征,得到了一个四维向量表示每种花的特征。通过对每种花属性的样本进行向量化,构成了三个著名的鸢尾属模式类。
除了像素灰度和特征描述子,还可以使用边界形状、区域特性、纹理测度等来形成模式向量。例如,边界和区域特性可以用三维向量表示,而纹理测度可以用六维向量表示。
处理配准后的图像序列时,可以使用由各幅图像中的对应像素形成的模式向量。这种方法适用于识别多光谱图像中的区域。
当处理整体图像时,可以使用更高维的向量提供更多细节。深度卷积神经网络是处理整体图像时更强大的方法。
结构模式
模式向量在处理结构特征(如符号串)表示的应用中不适合。而对于形状相关的应用,包含目标的结构描述是非常重要的。你提到了边界的结构描述和符号串的匹配,以及图像中的树表示来描述整体图像的分层结构。
在边界的结构描述中,边界被细分为多条线段,并通过计算内角来生成一串顺序符号。这种符号串可以作为结构模式来进行匹配。
而树结构适合于对整幅图像进行更高层次的描述,根据图像的各个分量区域进行分层排序。树的根节点代表整幅图像,而子节点表示图像的不同组成部分,比如市区、居民区、住房、公路等。通过这种分层描述,可以对图像中的不同区域进行详细的描述。
这些方法可以在图像处理中用于描述和匹配结构特征,以实现符号串的匹配和图像的分层描述。
原型匹配模式分类
最小距离分类器
最小距离分类器是一种简单且广泛应用的原型匹配方法,也被称为最近邻分类器。它通过计算未知模式向量与每个类别的原型向量之间的距离来进行分类。通常情况下,原型向量是每个类别的平均向量。使用欧氏距离作为相似性度量,最小距离分类器计算距离并将未知模式分配给最接近的原型类别。
最小距离分类器的决策函数或判别函数可以表示为d(x) = m - mj,其中m表示原型向量,j表示类别。该分类器根据判决函数的最大值来确定未知模式所属的类别。
最小距离分类器的决策边界可以通过公式d(x) - d(x) = 0得到,其中d(x)表示未知模式与类别i的判决函数值,d(x)表示未知模式与类别j的判决函数值。根据这个公式,决策边界是连接类别i和类别j的原型向量的垂直平分线。当模式空间为二维时,决策边界是一条直线;当模式空间为三维时,决策边界是一个平面;当模式空间的维数大于三时,决策边界是一个超平面。
最小距离分类器在每个类别的均值之间的距离与类别相对于其均值的分布或随机性相当时表现良好。当每个类别相对于其均值的分布呈球形分布时,最小距离分类器在最小化错误分类的平均损失方面达到最优。
对于最小距离分类器,有效的鉴别器是不同类别之间的较宽隔离。这意味着每个类别的均值应该相对紧密地聚集在一起。例如,美国银行家协会E-13B字体字符识别系统就使用了这种原理。该系统通过使用高度工程化的特征和简单的分类器实现了出色的结果。
总之,最小距离分类器是一种简单而广泛应用的原型匹配方法,适用于某些特定的识别问题,特别是当模式生成的环境可控时。然而,在处理更复杂的识别问题时,可能需要使用更复杂的分类器,如卷积神经网络。
对二维原型匹配使用相关
在第3.4节中,介绍了空间相关和卷积的基本概念,并在第3章中广泛应用了这些概念于空间滤波。根据式(3.43),核w与图像f(x,y)的相关可以表示为(w☆ f )(x,y)。该公式表示求和的上下限取在w和f共有的区域上。通过对位移变量x和y的所有值进行计算,w的所有元素都会访问f的每个像素。
我们知道,在w和f相等或几乎相等的区域中,相关会达到最大值。换句话说,公式(12.9)用于查找w与f中的一个区域匹配时的位置。然而,该公式的缺点是结果对于任意函数的幅度变化都非常敏感。
为了将相关归一化为一个或两个函数中的幅度变化,我们使用相关系数来进行匹配。相关系数公式如下:
ρ(x, y) = ∑[w(s, t) - μw][f(x + s, y + t) - μf] ------------------------------------------------ √[∑(w(s, t) - μw)^2 * ∑(f(x + s, y + t) - μf)^2]
其中,求和的上下限取在w和f共有的区域上,μw是核的平均值,μf是与w重叠的f区域的平均值。在图像处理中,w通常称为模板,而相关系数则称为互相关。
当两个函数不同时,互相关用于计算w在f中的一个区域的匹配程度。当两个函数相同时,互相关则称为自相关,用于计算w与f自身的匹配程度。一般习惯使用术语相关和相关系数来表示这两种情况,除非有明确区分的需要。
通过归一化后的相关系数,可以将w和f的幅度变化纳入考虑。当归一化后的w和f在意义上表现出最大相似性时,相关系数达到最大值,即最优匹配。反之,当两个归一化后的函数在式(12.10)的意义上表现出最小相似性时,相关系数达到最小值。
模板匹配的原理如图12.12所示。模板大小为m×n,中心位于任意位置(x,y)。相关系数在该点处的值通过式(12.10)计算得出。然后,移动模板的中心到相邻位置,并重复这个过程。通过移动模板的中心,使得w的中心访问f中的每个像素,从而得到相关系数ρ(x, y)的值。在整个过程结束后,求出ρ(x, y)的最大值,即可找到最优匹配的位置。在ρ(x, y)中可能会有多个位置具有相同的最大值,这表示w和f之间存在多个匹配。
匹配SIFT特征
本节讨论了尺度不变特征变换(SIFT)算法,并深入说明了使用SIFT进行原型匹配的能力。
SIFT是一种计算一组用于匹配已知图像(原型)和未知图像的不变特征的方法。在SIFT实现中,图像中的每个局部区域都会得到一个128维的特征向量。该算法通过查找存储的特征向量原型集合和由未知图像计算的特征向量之间的对应性来执行匹配。
由于涉及大量特征,精确匹配的计算开销很大。为了简化搜索,可以使用最优节点优先方法和广义霍夫变换。最优节点优先方法只需有限的计算就可以识别具有高概率值的最接近的邻点。而广义霍夫变换则可以用于查找潜在的解族,从而进一步简化搜索过程。
图12.14展示了一个电路板图像,并标识了提取连接片图像的一个区域。图12.15显示了SIFT找到的关键点,它们在两幅图像上都是微弱的线条。图12.16展示了SIFT找到的关键点之间的匹配,共发现了41个匹配。其中一些匹配可能不正确或重复,但可以通过比较连接片的形状来解释这些错误。
总之,SIFT算法通过计算图像的不变特征向量,并利用匹配算法进行原型匹配,具有较高的匹配准确性和稳定性。
匹配结构原型
本节介绍了两种基本方法,用于识别边界形状的结构模式识别方法。
第一种方法是通过匹配形状数来比较区域边界的相似性。形状数是用来描述区域边界的参数。两个闭合边界的形状数具有相似性k,如果它们的形状数在4到k之间的所有偶数阶上都相等。形状数的最大阶数通常保持一致。通过计算两个形状的相似度的倒数作为它们之间的距离,可以进行形状的比较。这种方法满足距离的性质,即距离大于等于0,当且仅当两个形状相同时距离为0,同时满足三角不等式。
第二种方法是基于字符串表示的结构模式识别方法。这种方法将边界形状表示为一个字符串,并利用字符串匹配算法来进行模式识别。字符串匹配算法可以用于比较两个形状之间的相似性。
介绍了一种基于字符串匹配的方法,用于比较两个区域边界之间的相似性。
假设两个区域边界a和b已分别编码为符号串,通过计算它们之间的匹配数量α来确定它们之间的相似性。不匹配的符号数量可以通过式(12.14)计算得出,其中|a|和|b|表示符号串的长度,α表示匹配数量。当a和b相同时,β=0。
为了比较两个边界之间的相似性,可以使用式(12.15)计算它们之间的比值R。对于完美匹配,R是无限大,而对于没有匹配的符号,R为0。在计算匹配时,每个边界的起点都非常重要,因此需要归一化或近似归一化到相同的起点。蛮力匹配算法从每个符号串的任意点开始,移位一个符号并计算式(12.15)。R的最大值给出最优匹配。
总而言之,基于字符串匹配的方法可以用于比较两个区域边界之间的相似性。通过计算匹配数量和不匹配符号数量,可以得到它们之间的相似度,并使用式(12.15)计算它们之间的比值R。蛮力匹配算法可以用于计算最优匹配。
最优贝叶斯统计分类器
推导
贝叶斯分类器是一种最小化平均损失的分类器。它基于贝叶斯规则,利用模式向量来计算每个类的概率密度函数和先验概率,从而得出最优决策函数。如果一个未知模式x赋予具有最小损失的类,则相对于所有决策的总平均损失将是最小的。但由于估计概率密度函数p(x/ c,)较为困难,因此往往需要为其假设一个解析公式,并使用训练模式进行参数估计。高斯概率密度函数是目前最常用的假设,因为越接近实际情况,贝叶斯分类器就越接近分类中的最小平均损失。
高斯模式类的贝叶斯分类器
这是一个关于高斯模式类的一维问题的讨论。其中有两个模式类,分别由高斯密度函数控制。根据贝叶斯决策理论,可以使用贝叶斯决策函数来对模式进行分类。对于一维情况,决策边界是两个模式类概率密度函数的交点。
在多元情况下,每个模式类的高斯密度由均值向量和协方差矩阵来定义。可以使用样本平均来估计均值向量和协方差矩阵。协方差矩阵是对称和半正定的,它描述了模式之间的相关性。
根据贝叶斯决策理论,可以得到贝叶斯决策函数。如果所有模式类的协方差矩阵相等且各类等可能出现,那么决策函数是线性的。如果所有协方差矩阵为单位矩阵且各类等可能出现,那么决策函数是最小距离分类器的形式。
最小距离分类器在贝叶斯意义上是最优的,当模式类服从高斯分布,协方差矩阵为单位矩阵且所有类等可能出现时。最小距离分类器建立了每对类之间的超平面,这些超平面是两个模式类中心点的连线的垂直平分线。
神经网络与深度学习
背景知识
主要介绍了神经网络的基本原理和发展历程。神经网络是一种利用非线性计算元素构建的网络模型,类似于哺乳动物视觉皮层中的神经元互连方式。人们对神经网络的研究兴趣可以追溯到上世纪40年代初,随后经过多次改进和探索,发展出了多层感知机和反向传播等关键技术,使得神经网络在模式识别和其他应用领域取得了成功。神经网络的深度学习能力使其在大数据集相关的任务中表现出色。然而,设计和训练复杂的多层神经网络仍然需要设计者具备大量知识和经验。神经网络在图像模式分类中的应用也经历了一段时间的缓慢发展,直到卷积神经网络的出现才在图像处理领域取得重大突破。神经网络的研究正在不断发展,本节内容将为后续介绍神经网络的训练和运行奠定基础。
感知机
感知机是一种用于解决二元分类问题的算法,它试图通过迭代地遍历两个类的模式来得到一个解。感知机的目标是找到一个超平面,将两个类分开。在训练过程中,感知机使用修正增量和权重向量来更新超平面的位置,直到达到收敛条件。感知机模型实现了一个决策函数,将输入模式向量与训练得到的权重向量相乘,并通过阈值处理函数产生输出结果。如果输出为+1,则模式属于类c,否则属于类c2。感知机收敛定理保证了在有限步骤内,该算法能够找到一个解。
讨论了神经网络中一种处理不可分离模式类的方法,即使用最小均方误差(LMSE)算法。该算法通过迭代梯度下降来减小实际响应和期望响应之间的均方误差,从而调整权重向量。具体的更新公式为w(k +1) = w(k) + α(r(k) - w'(k)x(k))x(k),其中α为学习率。该算法在一定条件下收敛,并且通常能够找到使训练集整体均方误差最小的解。
然而,需要注意的是,该算法的解可能不是完全分割两个线性可分离类的超平面,因此存在一定的不确定性。这也是使用LMSE算法的代价之一。
在二维情况下,异或(XOR)分类问题展示了单个线性决策边界(仅使用一个感知机单元)的局限性。异或运算符的真值表显示,当变量之一为真时,异或运算结果为真值1,否则为假值0。为了解决异或问题,我们将两个类分别定义为包含模式{(0,0),(1,1)}和{(1,0),(0,1)}。一个能够解决异或问题的分类器需要在属于类c的输入模式时输出一个值(如1),而在属于类c'的输入模式时输出另一个值(如0或-1)。然而,观察图12.27(b)可以发现,单个线性决策边界(一条直线)无法正确地分开这两个类。因此,单个感知机无法解决这个问题。
最简单的线性边界由两条直线组成,如图12.27(b)所示。更复杂的非线性边界可以用一个二次函数表示,如图12.27(c)所示。因此,我们需要多个感知机来解决异或问题。
如果我们想要实现异或的真值表,即单个输出应该与异或函数的结果相同,那么我们需要额外的一个感知机。解决异或问题的最小感知机架构如图12.28(a)所示,其中一个感知机将来自类c的任何输入模式映射为1,另一个感知机将来自类c'的输入模式映射为0。这样可以将4个可能的输入减少到2个输出,因此成为一个两点问题。根据图12.24,单个感知机就可以解决这个问题。因此,我们需要3个感知机来实现异或表,如图12.28(b)所示。
这是一个经典的例子,展示了单个线性决策边界的局限性,以及通过使用多个感知机来解决复杂问题的思路。
多层前馈神经网络
介绍了人工神经元模型,其中使用了激活函数来处理神经元的输出。传统的感知机使用硬阈值函数进行分类,但在分层结构中存在稳定性问题。为了解决这个问题,引入了平滑的激活函数,如sigmoid函数和双曲正切函数。另外,还介绍了整流函数和线性整流单元(ReLU)作为激活函数的变体。实验结果表明,在深层神经网络中,ReLU函数的性能优于其他函数。
此外,还介绍了神经网络中的多层排列和层与层之间神经元输入输出的关系。整个神经网络由多层计算单元构成,其中一个单元的输出会影响后续所有单元的特性。最后,作者提到了反向传播算法,它可以根据神经网络的输出误差来更新神经元的权重和偏置项,进而提高神经网络的精度。
正向传播前馈神经网络
图12.31展示了一个多层神经网络的通用框图,它是一个前馈全连接神经网络。网络由多个层组成,每一层包含一组节点(也称为神经元)。输入层节点接收输入模式向量x的各个分量的值。第一层的输出是输入层节点的值。其他层的输出是该层中各个节点的激活值。每个节点的输出与下一层中的所有节点相连,形成了全连接网络。隐藏层是包含隐藏节点的层,而输出层是输出节点所在的层。
神经网络中的权重表示为w,表示与连接发送信号的神经元i和接收信号的神经元j相关联的权重。偏置表示为b,与某个神经元相关联。每个神经元都有一个激活函数,我们假设所有神经元使用相同类型的激活函数。
在神经网络中,层用l来表示,l=1,2,...,L。其中l=1表示输入层,l=L表示输出层,其他值表示隐藏层。层l中神经元的数量表示为n。神经网络的目的是通过确定未知输入模式的类成员来执行模式分类。常用的方法是为每个输出神经元赋予一个类标记,将未知模式分为不同的类。
需要注意的是,神经网络的输出数量可以根据任务的需要而变化。通常情况下,输出数量等于类的数量,但也可以根据具体情况进行调整。
总结来说,多层神经网络由多个层和节点组成,其中包括输入层、隐藏层和输出层。每个节点有权重和偏置,并使用激活函数进行计算。神经网络的目标是执行模式分类,将未知输入模式分为不同的类别。
使用反向传播训练深层神经网络
反向传播是一种用于训练多层前馈神经网络的算法,它通过调整网络参数来最小化误差函数。它是一种基于梯度下降的优化方法,可以有效地更新网络中的权重和偏置。
在反向传播算法中,包括以下几个关键步骤:
- 正向传播:将输入模式通过网络,计算输出结果。每个神经元根据输入和对应的权重进行加权求和,然后通过激活函数产生输出。
- 计算误差:比较网络的输出结果与期望的目标输出之间的差异,得到误差值。
- 反向传播:从输出层开始,逐层计算每个神经元的误差贡献,并将其传递回前一层。这是通过计算每个神经元的梯度来实现的,梯度表示了误差对于该神经元输出的敏感程度。
- 更新参数:使用计算得到的梯度信息,按照梯度下降的原则,对网络中的权重和偏置进行调整。通常使用学习率来控制参数更新的幅度。
- 重复以上步骤:重复进行正向传播、误差计算、反向传播和参数更新的过程,直到达到预定义的停止条件,例如达到误差收敛或达到最大训练轮次。
通过不断迭代这些步骤,网络的参数逐渐调整到能够更好地拟合训练数据的状态,从而提高网络的性能。
请注意,反向传播算法是一种非常重要和常用的神经网络训练方法,但它也有一些局限性和挑战。例如,容易陷入局部最优解、梯度消失和梯度爆炸等问题需要加以解决。
深度卷积神经网络
一种基本的CNN结构
卷积神经网络(CNN)是一种深度学习模型,它在计算机视觉任务中表现出色。LeNet是一种经典的CNN结构,由Yann LeCun等人于1998年提出。
CNN通过使用卷积层、池化层和全连接层等组件来学习图像特征。卷积层通过应用一系列滤波器来提取图像的局部特征。池化层则通过降采样操作减小特征图的尺寸,并保留重要的特征信息。全连接层将提取到的特征映射转化为最终的分类结果。
LeNet结构由两个卷积层、两个池化层和三个全连接层组成。它最初设计用于识别手写数字,是第一个成功应用于数字识别任务的CNN模型。LeNet在其后的发展中对CNN的设计和优化起到了重要的启发作用。
总之,卷积神经网络和LeNet结构是计算机视觉领域中重要的研究方向,它们在图像分类、目标检测等任务中具有广泛的应用。
本节主要讨论了CNN中的神经计算和多幅输入图像的情况。在CNN中,一个特征映射中单个值的计算是二维卷积,可以看作是权重与前一层的值的乘积之和。如果加上偏置并将结果称为神经元的净输入,则其表示形式与全连接神经网络中的一个人工神经元执行的计算的表示形式相同。通过传递净输入给激活函数,可以得到神经元的输出,即特征映射中任何点的值。在多幅输入图像的情况下,公式的形式与单幅输入图像相同,只需修改权重和偏置即可。这些结果明显简化了CNN中正向传播和反向传播的公式。
正向通过CNN的传递公式
对于卷积神经网络(CNN)中的多幅输入图像,可以将卷积操作表示为权重和输入值的乘积之和,加上偏置项,然后通过激活函数得到神经元的输出。公式的形式与单幅输入图像相同,只需要修改权重和偏置项。在多层的情况下,使用不同的符号来表示不同层的值,并将其表示为公式中的变量。最后一层的池化特征值被向量化,然后输入一个全连接前馈神经网络。
这些公式描述了CNN的正向传播过程,通过卷积部分计算所有值。最后,池化操作被用来减小特征映射的空间尺寸。
用于训练CNN的反向传播公式
本节中讲述了CNN(卷积神经网络)的反向传播方程与全连接神经网络类似。首先定义了CNN的输出误差相对于网络中每个神经元的变化,然后利用链式规则推导出误差的表达式。最终得到了层l中的误差表达式为o..y(C)= h(zx, ())[ 6.,(l+1)*rot 180(w(l+1))],其中h表示激活函数,w表示权重,rot 180表示旋转180度。
根据这个误差表达式,可以计算出E相对于权重和偏置的变化。利用梯度下降公式,最终得到更新CNN中每个卷积层的权重和偏置的公式为: w,g(C)= W,g()-“ w,k b(C)=b(C)一“ ab(C)x y
在反向传播过程中,需要进行上取样来匹配池化特征映射和生成它们的特征映射的大小。反向传播的路径从全连接神经网络的输出开始,然后重新生成各个池化特征映射,最后利用权重和偏置的更新公式进行反向传播。
总结起来,本节介绍了CNN的反向传播方程和权重、偏置的更新公式,并说明了反向传播的步骤和路径。
实现的一些附加细节
本节主要介绍了设计全连接神经网络和卷积神经网络时需要考虑的一些重要问题。
首先,确定神经网络的层数是设计中的一个重要问题。普适逼近定理告诉我们,具有单个隐藏层的连续前馈神经网络可以近似任何复杂的决策函数。但实验结果表明,深度神经网络(即具有两个或多个隐藏层的网络)在学习抽象表示方面更优。然而,并没有确定神经网络最优层数的算法,通常需要结合经验和实验来确定隐藏层的数量。
其次,规定每层中的神经元数量也是一个开放问题,没有理论上的最佳答案。增加每层中的神经元数量可以在一定程度上提升网络性能。
接下来是选择激活函数。本章使用sigmoid函数来保持一致性,但在实际应用中,使用双曲正切和ReLU等激活函数可能会得到更好的训练性能。
设计好网络结构后,训练过程是使网络结构有效的核心。预训练网络参数是进一步训练或验证识别性能的理想起点。此外,使用GPU加速矩阵运算可以提高训练效率。
在训练过程中,常常会遇到过拟合的问题,即网络对训练集有较高的识别率,但对未使用的样本的识别率较低。解决过拟合的常用方法是使用变换来扩大训练集,或者使用丢弃技术在训练过程中随机丢弃部分神经元。
除了计算速度外,训练的效率也是一个重要方面。调整输入模式、使用随机梯度下降法等方法可以提高训练效率和收敛速度。
最后,LeCun等人在2012年的综述文章中详细介绍了前面讨论的各种因素。在实际应用中,还需要考虑更多的因素,而本节讨论的神经网络结构只是其中的一部分。
图像处理: