《图象分割与边缘检测》由会员分享,可在线阅读,更多相关《图象分割与边缘检测(95页珍藏版)》请在金锄头文库上搜索。
1、第五章第五章 图像分割与边缘检测图像分割与边缘检测 5.1 图图 像像 分分 割割 5.1.1 概述概述 图像分割是将图像划分成若干个互不相交的小区域的过程, 小区域是某种意义下具有共同属性的像素的连通集合。如不同目标物体所占的图像区域、 前景所占的图像区域等。连通是指集合中任意两个点之间都存在着完全属于该集合的连通路径。对于离散图像而言,连通有4连通和8连通之分,如图5-1所示。 图5-1 4连通和8连通 4连通指的是从区域上一点出发,可通过4个方向,即上、 下、左、右移动的组合,在不越出区域的前提下,到达区域内的任意像素; 8连通方法指的是从区域上一点出发,可通过左、 右、上、下、左上、右
2、上、左下、右下这8个方向的移动组合来到达区域内的任意像素。 图像分割有三种不同的途径:其一是将各像素划归到相应物体或区域的像素聚类方法, 即区域法;其二是通过直接确定区域间的边界来实现分割的边界方法;其三是首先检测边缘像素, 再将边缘像素连接起来构成边界形成分割。在图像分割技术中, 最常用的是利用阈值化处理进行的图像分割。 5.1.2 灰度阈值法分割灰度阈值法分割 常用的图像分割方法是把图像灰度分成不同的等级, 然后用设置灰度门限(阈值)的方法确定有意义的区域或分割物体的边界。常用的阈值化处理就是图像的二值化处理, 即选择一阈值,将图像转换为黑白二值图像, 用于图像分割及边缘跟踪等预处理。 图
3、像阈值化处理的变换函数表达式为 (5-1) 图5-2 阈值变换曲线 在图像的阈值化处理过程中, 选用不同的阈值其处理结果差异很大。如图5-3所示, 阈值过大, 会提取多余的部分; 而阈值过小,又会丢失所需的部分(注意: 当前背景为黑色, 对象为白色时刚好相反)。因此,阈值的选取非常重要。 图5-3(a)原始图像的直方图如图5-4所示。分析该直方图可知, 该直方图具有双峰特性,图像中的目标(细胞)分布在较暗的灰度级上形成一个波峰,图像中的背景分布在较亮的灰度级上形成另一个波峰。此时,用其双峰之间的谷低处灰度值作为阈值T进行图像的阈值化处理,便可将目标和背景分割开来。 图5-3 不同阈值对阈值化结
4、果的影响(a) 原始图像; (b) 阈值T=91; (c) 阈值T=130; (d) 阈值T=43(a)(b)(c)(d)图5-4 图5-3(a)所示图像的直方图 1. 判别分析法确定最佳阈值判别分析法确定最佳阈值 判别分析法确定最佳阈值的准则, 是使进行阈值处理后分离的像素类之间的类间方差最大。判别分析法只需计算直方图的0阶矩和1阶矩,是图像阈值化处理中常用的自动确定阈值的方法。 设图像总像素数为N,灰度值为i的像素数为Ni,则至灰度级K的灰度分布的0阶矩及1阶矩分别定义为 0阶矩: (5-2)1阶矩: (5-3) 当K=L-1时,(L-1)=1;(L-1)T,T称为图像的平均灰度。 设有M
5、-1个阈值:0k1k2KM-1L-1。 将图像分割成M个灰度值的类Cj(Cjkj-1+1, , kj; j=1, 2, , M ; k0=0, kM=L),则各类Cj的发生概率j和平均值j为 (5-4)(5-5)式中, (0)=0,(0)=0。 由此可得各类的类间方差为 将使上式的2值为最大的阈值组(k1, k2, , kM1), 作为M值化的最佳阈值组。若取M为2,即分割成2类,则可用上述方法求出二值化的阈值。 (5-6) 2. p尾法确定阈值尾法确定阈值 p尾法仅适用于事先已知目标所占全图像百分比的场合。若一幅图像由亮背景和黑目标组成,已知目标占图像的(100p)%面积,则使得至少(100
6、p)%的像素阈值化后匹配为目标的最高灰度, 将选作用于二值化处理的阈值。 5.1.3 区域生长区域生长 分割的目的是把一幅图像划分成一些区域, 最直接的方法就是把一幅图像分成满足某种判据的区域,也就是说, 把点组成区域。为了实现分组, 首先要确定区域的数目, 其次要确定一个区域与其他区域相区别的特征, 最后还要产生有意义分割的相似性判据。 分割区域的一种方法叫区域生长或区域生成。假定区域的数目以及在每个区域中单个点的位置已知,则从一个已知点开始, 加上与已知点相似的邻近点形成一个区域。相似性准则可以是灰度级、 彩色、 组织、 梯度或其他特性, 相似性的测度可以由所确定的阈值来判定。方法是从满足
7、检测准则的点开始, 在各个方向上生长区域,当其邻近点满足检测准则就并入小块区域中。当新的点被合并后再用新的区域重复这一过程, 直到没有可接受的邻近点时生成过程终止。 图5-5给出一个简单的例子。此例的相似性准则是邻近点的灰度级与物体的平均灰度级的差小于2。图中被接受的点和起始点均用下划线标出, 其中(a)图是输入图像;(b)图是第一步接受的邻近点; (c)图是第二步接受的邻近点; (d)图是从6开始生成的结果。 图5-5 区域生长示例 当生成任意物体时,接收准则可以结构为基础, 而不是以灰度级或对比度为基础。为了把候选的小群点包含在物体中, 可以检测这些小群点,而不是检测单个点, 如果它们的结
8、构与物体的结构足够相似时就接受它们。 5.1.4 区域聚合区域聚合 区域聚合可直接用于图像分割,它要求聚合中的各个点必须在平面上相邻接而且特性相似。区域聚合的步骤是首先检查图像的测度集, 以确定在测度空间中聚合的位置和数目,然后把这些聚合的定义用于图像, 以得到区域聚合。区域聚合技术可以说明如下。 首先,在图片上定义某个等价关系。例如, 最简单的等价关系可定义为p(i, j)p(k, l)。也就是说,如果p(i, j)p(k, l), 就说明p(i, j)与p(k, l)等价。任何在点的格子上的等价关系又可划分为等价类。例如,p(i, j)的取值范围为0到63,就可以产生64个等价类的模板。如
9、果关系满足, 它的值等于1,否则为0。 模板的图像是两两不相交的,那么64个模板就会充满整个格子。这些等价的类又可进一步分为最大连接的子集(连接分量)。连接性可以用点(i , j)的邻点来定义,如4连通邻点、8连通邻点等等。假如R是属于格子的子集,在R中存在一个点序列, 第一个点是p1,最后一个点是p2,属于格子的子集R的两个点p1和p2是被连接起来的,这样,相继的各点是4连接相邻的。通过这样的连接关系可以定义一个属于R的子集,这个子集形成一个区域,在这个区域中,任何点都与R有关。利用等价模板可分成最大的连接区域,然后,这些最大的连接区域又可以像搭积木一样形成有意义的分割。 1970年布莱斯和
10、芬尼玛提出一种分割方法,如图5-6所示。图(a)是具有灰度级的33的G阵列,图(b)是对G的分割结果。其中,图像格子为G,它是大格子S的子格子。G为nm的格子, S是(2n1)(2m1)的大格子。在大格子中,G(i, j)点位于S的(2i+1, 2j+1)点上。G中的点与S中的点相对应,其中每一下标都是奇数, 其余的点用来代表区域的边界。以这种形式表现的区域,产生一种寻找最大连接区域的方法。G中的点与它上边和右边的点相比较,灰度级相同就合并,灰度级不同就插入边界线。把图像中的每个点都处理过之后,整个图像就被分割成区域。在这个例子中,由于采用了4连通等价关系,因此,由图可见,在对角线方向上的等灰
11、度级产生了隔开的区域。 图5-6 布莱斯和芬尼玛分割方法 5.2 边边 缘缘 检检 测测 在Marr的视觉计算理论框架中,抽取二维图像上的边缘、 角点、纹理等基本特征,是整个系统框架中的第一步。这些特征所组成的图称为基元图。Yuille等指出, 在不同“尺度”意义下的边缘点,在一定条件下包含了原图像的全部信息。图5-7画出了一幅图像中的边缘点,仅仅根据这些边缘点,就能识别出三维物体, 可见边缘点确实包含了图像中的大量信息。 图5-7 图像中的边缘点 (1) 空间曲面上的不连续点。如标为A的边缘线,这些边缘线为两个不同曲面的或平面的交线,该点处物体表面的法线方向不连续,在A类边缘线的两边, 图像
12、的灰度值有明显的不同。 (2)B类边缘线。B类边缘线是由不同材料或相同材料不同颜色产生的。图中桌面由两种不同材料组成,由于它们对光的反射系数不同, 使B边缘线的两侧灰度有明显不同。 (3)C类边缘线。C类边缘线是物体与背景的分界线。如图中圆柱上有两条C类边缘线,这类边缘线一般称为外轮廓线。在C类边缘点上,三维物体表面的法线方向是连续的,出现边缘点是由于从一定视角看物体时,C类边界点是物体与背景的交界处。由于物体与背景在光照条件与材料反射系数等方面差异很大, 因此在C类边缘两侧, 图像的灰度也有很大差异。图中标以C的边缘,即是物体与背景的交界处, 也是物体上表面法线的不连续处,但引起它两侧灰度跃
13、变的原因是前者。 (4)D边缘。D是阴影引起的边缘。由于物体表面某一部分被另一物体遮挡,使它得不到光源的照射,从而引起边缘点两侧灰度值有较大的差异。 5.2.1 边缘检测与微分运算边缘检测与微分运算 如前所述,边缘点是信号“变化剧烈”的地方,但这么说并不准确,需要定义一个准确的边缘数学模型。以一维信号为例, 图5-8(a)是一种阶跃信号,我们当然认为A点处为边缘点。在实际情况中,物理信号不可能有理想的突变, 而是如图5-8(b)所示的逐渐增大的信号,对图5-8(b)中所示A、B、C三点, 一般称B点为边缘点。在图5-8(c)和5-8(d)中,如果台阶比较窄,即可以认为B点为边缘点,也可以认为该
14、信号有两个边缘点A与C。 图5-8 不同的边缘信号 图5-9 图像中不同类型的边界(a) 边界; (b) 线; (c) 折线变化; (d) 缓慢的平滑变化 (a)(b)(d)(c)图5-10 用Prewitt算子进行边缘检测的结果 图5-105.2.2 高斯高斯-拉普拉斯拉普拉斯(LOG)算子算子 噪声点对边缘检测有较大的影响, 效果更好的边缘检测器是高斯-拉普拉斯(LOG)算子。它把高斯平滑滤波器和拉普拉斯锐化滤波器结合起来,先平滑掉噪声,再进行边缘检测,所以效果更好。 常用的LOG算子是55的模板: 图5-11 LOG算子中心点的距离与位置加权系数的关系 若将图5-11绕y轴作旋转一周后,
15、LOG算子很像一顶墨西哥草帽, 所以,LOG又叫墨西哥草帽滤波器。 在图像边缘检测中, 还有Wallis算子、 过零点检测(Marr-Hildreth算子)、 Canny边缘检测方法、 SUSAN(Smallest Univalue Segment Assimilating Nucleus)边缘检测等。 5.3 轮廓跟踪与提取轮廓跟踪与提取5.3.1 轮廓跟踪轮廓跟踪 在识别图像中的目标时,往往需要对目标边缘作跟踪处理, 也叫轮廓跟踪。顾名思义,轮廓跟踪就是通过顺序找出边缘点来跟踪边界的。若图像是二值图像或图像中不同区域具有不同的像素值,但每个区域内的像素值是相同的,则如下算法可完成基于4连通
16、或8连通区域的轮廓跟踪。 步骤1: 首先按从上到下, 从左到右的顺序扫描图像, 寻找没有标记跟踪结束记号的第一个边界起始点A0, A0是具有最小行和列值的边界点。定义一个扫描方向变量dir, 该变量用于记录上一步中沿着前一个边界点到当前边界点的移动方向, 其初始化取值为 (1) 对4连通区域取dir = 3, 如图5-12(a)所示; (2) 对8连通区域取dir = 7, 如图5-12(b)所示。 图5-12 方向变量的初始化 步骤2: 按逆时针方向搜索当前像素的33邻域, 其起始搜索方向设定如下: (1) 对4连通区域取(dir + 3)mod 4, 如图5-13(a)所示; (2) 对8
17、连通区域, 若dir为奇数取(dir + 7)mod 8, 如图5-13(b)所示; 若dir为偶数取(dir + 6) mod 8, 如图5-13(c)所示。 图5-13 33邻域起始搜索方向 在33邻域中搜索到的第一个与当前像素值相同的像素便为新的边界点An,同时更新变量dir为新的方向值。 步骤3:如果An等于第二个边界点A1且前一个边界点An-1等于第一个边界点A0,则停止搜索,结束跟踪,否则重复步骤2继续搜索。 步骤4:由边界点A0、A1、A2、An-2构成的边界便为要跟踪的边界。 算法中步骤1中所采用的准则称为“探测准则”, 其作用是找出第一个边界点;步骤3中所采用的准则称为“跟踪
18、准则”,其作用是找出所有边界点。 图5-14 轮廓跟踪示例5.3.2 轮廓提取轮廓提取 二值图像轮廓提取的算法非常简单, 就是掏空内部点: 如果原图像中有一点为黑,且它的8个邻点都是黑色时,说明该点是内部点, 将该点删除(置为白色像素值255)。对图像中所有像素点执行该操作便可完成图像轮廓的提取。在此不对其作过多说明,请读者参考配套光盘的源程序。 5.4 图图 像像 匹匹 配配 5.4.1 模板匹配模板匹配 模板匹配是指用一个较小的图像,即模板与源图像进行比较, 以确定在源图像中是否存在与该模板相同或相似的区域, 若该区域存在, 还可确定其位置并提取该区域。 模板匹配常用的一种测度为模板与原图
19、像对应区域的误差平方和。设f(x, y)为MN的原图像,t(j,k)为JK(JM,KN)的模板图像,则误差平方和测度定义为 (5-7) 将式(5-7)展开可得 (5-8) 令 DS(x, y)称为原图像中与模板对应区域的能量,它与像素位置(x, y)有关, 但随像素位置(x, y)的变化, DS(x, y)变化缓慢。DST(x, y)称为模板与原图像对应区域的互相关,它随像素位置(x, y)的变化而变化,当模板t(j, k)和原图像中对应区域相匹配时取得最大值。DT(x, y)称为模板的能量,它与图像像素位置(x, y)无关,只用一次计算便可。显然,用式(5-8)计算误差平方和测度可以减少计算
20、量。 基于上述分析,若设DS(x, y)也为常数,则用DST(x, y)便可进行图像匹配,当DST(x, y)取最大值时,便可认为模板与图像是匹配的。但假设DS(x, y)为常数会产生误差, 严重时将无法正确地完成匹配,因此可用归一化互相关作为误差平方和测度, 其定义为 (5-9) 图5-15给出了模板匹配的示意图,其中假设原图像f(x, y)和模板图像t(k, l)的原点都在左上角。对任何一个f(x, y)中的(x, y), 根据式(5-9)都可以算得一个R(x, y)值。当x和y变化时,t(j, k)在原图像区域中移动并得出R(x, y)所有值。R(x, y)的最大值便指出了与t(j, k
21、)匹配的最佳位置,若从该位置开始在原图像中取出与模板大小相同的一个区域, 便可得到匹配图像。 图5-15 模板匹配示意图 用归一化互相关求匹配的计算工作量非常大,因为模板要在(MJ1)(NK1)个参考位置上做相关计算,其中,除最佳匹配点外, 其余做的都是无效运算, 所以有必要对其进行改进, 以提高运算速度。常用的方法有序贯相似性检测算法、幅度排序相关算法、FFT相关算法、分层搜索序贯判决算法等。 模板匹配的主要局限性在于它只能进行平行移动,如原图像中要匹配的目标发生旋转或大小变化,该算法无效。另外,如原图像中要匹配的目标只有部分可见,该算法也无法完成匹配。 模板匹配程序的核心代码如下: /*/
22、函数名称: BOOL TemplateMatch()/基本功能: 本函数对传入的CDibObject图像对象进行图像匹配运算/参数说明: CDibObject *pTemplate 模板图像数据指针/ CDibObject *pDibObject 图像对象指针/返回值: BOOL 成功时返回TRUE, 失败时返回FALSE/*BOOL CAreaPro: TemplateMatch(CDibObject *pTemplate, CDibObject *pDibObject) /其他变量定义、 获取图像数据区及开辟临时内存等代码 /循环变量 int i, j, m, n; /中间结果 doubl
23、e dSigmaST; double dSigmaS; double dSigmaT; /相关性测度 double R; /最大相关性测度 double MaxR; /最大相关性出现位置 int nMaxWidth, nMaxHeight; /计算dSigmaT dSigmaT = 0; /计算模板能量 for (n = 0; n nTempHeight; n+) for(m = 0; m nTempWidth; m+) pTemplateTemp = pTempBits + nTempWidthBytes * n + m; templatepixel = *pTemplateTemp; dS
24、igmaT += (double)templatepixel * templatepixel; /找到图像中最大相关性的出现位置 MaxR = 0.0; for (j = 0; j nHeight - nTempHeight + 1; j+) for(i = 0; i nWidth - nTempWidth + 1; i+) dSigmaST = 0; dSigmaS = 0; /计算源图像中与模板对应区域的能量及其与模板的互相关 for (n = 0; n nTempHeight; n+) for(m = 0; m MaxR) MaxR = R; nMaxWidth = i; nMaxHei
25、ght = j; /将最大相关性出现区域部分复制到目标图像 for (n = 0; n nTempHeight; n+) for(m = 0; m nTempWidth; m+) pTemplateTemp = pTempBits + nTempWidthBytes * n + m; pNewTemp= pNewBits + nWidthBytes * (n+nMaxHeight) + (m+nMaxWidth); *pNewTemp = *pTemplateTemp; /释放内存等代码 return(TRUE); 图5-16 模板匹配示例(a) 原图像与匹配结果; (b) 模板;(c) 街坊
26、(City Block)距离法颜色匹配的结果 5.4.2 直方图匹配直方图匹配 颜色是描述图像内容的一个重要特征。人们已经提出了多种借助颜色特征对图像进行检索的方法。常用的颜色空间有R、 G、B和H、S、I。实际上,利用H、S、I颜色空间进行检索的效果更好一些,但以下讨论主要以R、G、B空间为例。为利用图像的颜色特征描述图像,可借助图像特征的统计直方图。利用直方图进行图像的匹配,这便是直方图匹配。由于篇幅所限, 在此只给出常用直方图匹配的数学原理公式,有关算法请读者自行设计完成。 1. 直方图相交法直方图相交法 设HQ(k)和HD(k)分别为查询图像Q和数据库图像D的特征统计直方图,则两图像之
27、间的匹配值d(Q, D)为 (5-10) 2. 欧几里得距离法欧几里得距离法 为减少计算量,可采用直方图的均值来粗略地表达颜色信息,对图像的R、G、 B三个分量,匹配的特征矢量f是 (5-11) 式中, R、G、B分别是R、G、B三个分量直方图的0阶距。 此时查询图像Q和数据库图像D之间的匹配值为 (5-12) 3. 中心矩法中心矩法 对直方图来说,均值为0阶矩,更高阶的矩也可使用。设用分别表示查询图像Q的R、G、B三个分量直方图的i(i3)阶中心矩;用 分别表示数据库图像D的R、G、B三个分量直方图的i(i3)阶中心矩,则它们之间的匹配值为 式中,WR,WG,WB为加权系数。 4. 参考颜色
28、法参考颜色法 欧几里得距离法太粗糙,直方图相交法计算量太大,一种折衷的方法是将图像颜色用一组参考色表示,这组参考色应能覆盖视觉上可感受到的各种颜色。参考色的数量要比原图像少, 这样可计算简化的直方图, 所以匹配的特征矢量是f=r1, r2rNT (5-14)式中:ri是第i种颜色出现的频率,N是参考颜色表的尺寸。加权后的查询图像Q和数据库图像D之间的匹配值为 (5-15)式中: 前面4种方法中,后3种主要是从减少计算量的角度对第1种方法进行简化, 但直方图相交法还有另外一个问题。当图像中的特征并不能取遍所有的可取值时,统计直方图中会出现一些零值。这些零值的出现会给直方图的相交带来影响,从而使得
29、由式(5-10)求得的匹配值并不能正确反映两图间的颜色差别。 5. 闵可夫斯基距离法闵可夫斯基距离法 若两幅图像Q和D的直方图分别为HQ和HK,则颜色直方图匹配的计算方法可以利用度量空间的闵可夫斯基 (=1, 也叫“街坊”(City Block)距离), 按如下方法进行匹配 (5-16) R、G、B图像颜色是由不同亮度的红、绿、蓝三基色组成, 因此式(5-16)可以改写成: (5-17) 式(5-17)在具体实施时,必须从所读取的各像素颜色值中分离出R、G、B三基色的亮度值。这种方法进行颜色匹配的例子如图5-16(c)所示。 如前所述,由于直方图丢失了颜色的位置信息, 因此两幅图像可能内容完全
30、不同,但直方图相似。所以,仅用简单的颜色直方图匹配也容易造成误识别。一种改进的方法是将图像划分成若干子块,分别对各子块进行匹配。1991年,A.Nagasaka和Y.Tanaka提出了一种将视频帧或图像分割成44相同大小的子块并比较相应子块的方法。这种方法对两幅视频帧或图像的相应子块进行比较, 废弃差别最大的一对,其余的比较结果参与最后的识别。B.Shahraray也曾提出类似的方法:将视频帧或图像分割成子块并进行块匹配, 对所有子块匹配的结果采用一种非线性的统计算法进行综合评价。由于子块的位置固定, 各子块的直方图在一定程度上反映了颜色的位置特征,因此子块划分与匹配的方法可以对物体运动、摄像
31、机运动、镜头缩放等情况有更好的适应性。 6. X2直方图匹配直方图匹配X2直方图匹配的计算公式如下: (5-18) 对于R、G、B图像,X2直方图匹配的计算公式又可以变为 (5-19) X2直方图匹配与模板匹配或颜色直方图匹配相比具有更好的识别率,识别镜头切换(Abrupt Scene Change)上效果良好。 A.Nagasaka和Y.Tanaka通过对灰度和、灰度模板匹配、灰度直方图匹配、 彩色模板匹配、 颜色直方图匹配和X2直方图匹配六种匹配方法进行了实验比较。结果表明,采用图像分块加上X2直方图匹配在镜头切换识别上具有很好的效果,但对镜头渐变识别效果不好。 5.4.3 形状匹配形状匹
32、配 形状也是描述图像内容的一个重要特征, 利用形状进行匹配需要考虑三个问题。首先,形状常与目标联系在一起,所以相对于颜色, 形状特征可以看作是更高层次的图像特征。要获得有关目标的形状参数,常常要先对图像进行分割, 所以形状特征会受图像分割效果的影响。其次,目标形状的描述是一个非常复杂的问题,至今还没有找到能与人的感觉相一致的图像形状的确切数学定义。最后,从不同视角获取的图像中目标形状可能会有很大差别,为准确进行形状匹配,需要解决平移、 尺度、 旋转变换不变性的问题。 目前,常用的形状匹配方法主要有几何参数法(Niblack, 1993)、(Scassellati, 1994)、特征模表示法(P
33、entland, Picard and Sclaroff, 1996)、不变矩法(Mehtre, 1997)、 边界方向直方图法(Jain,1996)、小波重要系数法(Jacobs, 1995)、 小波轮廓表示法(杨翔英、 章毓晋, 1999)等。 目标的形状常常可以用目标的轮廓来表示,而轮廓是由一系列边界点所组成的。一般认为,在较大尺度下常常能较可靠地消除误检并检测到真正的边界点, 但在大尺度下对边界的定位不易准确。相反,在较小尺度下对真正边界点的定位常比较准确,但在小尺度下误检的比例会增加。所以,可考虑先在较大尺度下检测出真正的边界点,再在较小尺度下对真正边界点进行较精确的定位。小波变换和
34、分析作为一种多尺度、 多通道分析工具,比较适合对图像进行多尺度的边界检测,可参考有关文献。 5.5 投影法与差影法投影法与差影法 5.5.1 投影法投影法 顾名思义,投影法就是把图像在某一方向(常用的是水平方向和垂直方向)上进行投影。在投影图上便可反映出图像中目标对象的位置、尺寸等信息。图5-17是一幅图像分别在水平方向和垂直方向上的投影。 可以看出投影法是一种很自然的方法,有点像灰度直方图。为了得到更好的效果,投影法经常和阈值化一起使用。由于噪声点对投影有一定的影响,所以处理前最好先做一次平滑,去除噪声,然后进行阈值化处理,再对阈值化后的二值图像在某个方向上进行投影运算。 图5-17 投影法
35、图5-18 华盛顿纪念碑图 图5-19 阈值化后的华盛顿纪念碑 图5-20 垂直方向投影 5.5.2 差影法差影法 1. 图像的代数运算图像的代数运算 图像的代数运算是指对两幅输入图像进行点对点的加、减、 乘、 除四则运算而得到输出图像的运算。如果记输入图像为A(x, y)和B(x, y),输出图像为C(x, y),则四种图像代数运算的表达式如下:C(x, y)A(x, y)B(x, y)C(x, y)A(x, y)B(x, y)C(x, y)A(x, y)B(x, y)C(x, y)A(x, y)B(x, y) 另外, 还可通过适当的组合, 形成涉及几幅图像的复合代数运算方程。 图像相加一般
36、用于对同一场景的多幅图像求平均,以便有效地降低加性噪声。通常,图像采集系统中采集图像时有这样的参数可供选择。其实,直接采集的图像品质较好,不需要这样的处理, 但是对于经过长距离模拟通信方式传送的图像(如太空航天器传回的星际图像)这种处理是不可缺少的。但利用求平均法降低噪声信号,提高信噪比的方法,只有当噪声可以用同一个独立分布的随机模型描述时才会有效。 图像相减常用于检测变化及运动物体,图像相减运算又称为图像差分运算。差分方法可以分为控制环境下的简单差分方法和基于背景模型的差分方法。在控制环境下, 或者在很短的时间间隔内, 可以认为背景是固定不变的, 可以直接使用差分运算检测变化及运动的物体。这
37、种方法与阈值化处理结合往往是建立机器视觉系统最有效的方法之一。在相对稳定的环境下, 可以假设背景变化缓慢,且符合一定的分布规律,通过建立背景模型, 实施差分方法来检测运动物体, 也可获得很好的效果。 乘法运算可以用来实现掩模处理,即屏蔽掉图像的某些部分。此外由于时域的卷积和相关运算与频域的乘积运算对应, 因此乘法运算有时也作为一种技巧来实现卷积或相关处理。 除法运算可用于校正成像设备的非线性影响,在特殊形态的图像(如CT等医学图像)处理中用到。 2. 差影法差影法 所谓差影法,实际上就是图像的相减运算(又称减影技术), 是指把同一景物在不同时间拍摄的图像或同一景物在不同波段的图像相减。差值图像
38、提供了图像间的差异信息,能用以指导动态监测、运动目标检测和跟踪、图像背景消除及目标识别等。其算法流程图如图5-21所示。 图5-21 差影法检测变化目标流程图 差影法是非常有用的,比如说可以用在监控系统中。在银行金库内,摄像头每隔一小段时间拍摄一幅图像,并与上一幅图像做差影,如果图像差别超过了预先设置的阈值,说明有异常情况发生,这时就应该拉响警报。在利用遥感图像进行动态监测时,用差值图像可以发现森林火灾、洪水泛滥,监测灾情变化及估计损失等;也能用来监测河口、海岸的泥沙淤积及监视江河、湖泊、海岸等的污染。利用差值图像还能鉴别出耕地及不同的作物覆盖情况。 利用差影技术消除图像背景也有很明显的效果。
39、例如,在血管造影技术中,肾动脉造影术对诊断肾脏疾病就有独特效果。为了减少误诊,人们希望提供反映游离血管的清晰图像。通常的肾动脉造影在造影剂注入后,虽然能够看出肾动脉血管的形状及分布,但由于肾脏周围血管受到脊椎及其他组织影像的重叠,难以得到理想的游离血管图像。对此,可摄制出肾动脉造影前后的两幅图像,相减后就能把脊椎及其他组织的影像去掉, 而仅保留血管图像。类似的技术也可用于诊断印刷线路板及集成电路掩模的缺陷。电影特技中应用的“蓝幕”技术,其实也包含差影法的原理。 图像在作差影法运算时必须使两相减图像的对应像点位于空间同一目标点上。否则,必须先作几何校正与配准。 当将一个场景中系列图像相减用来检测
40、运动或其他变化时, 难以保证准确对准。这时就需要更进一步的考虑。假定差图像由下式给定: (5-20) 如果x很小,那么上式可以近似为 (5-21) 注意到 本身也是一幅图像,我们将其直方图以H(D)表示。因此,由式(5-21)表示的位移差图像的直方图为 (5-22) 由式(5-22)可知,减去稍微有些不对准的一幅图像的复制品可得到偏导数图像。偏导数的方向为图像位移的方向。 根据以上理论,利用VC+可以编写出实现图像加减运算的函数, 其核心代码如下: /*/函数名称: void AddBuffer()/基本功能: 本函数对传入的两幅图像数据进行加操作/参数说明: unsigned char *p
41、Out 指向输出图像数据的指针/unsigned char *pIn 指向输入图像数据的指针/LONG lSize 图像数据的大小(nWidthBytes*nHeight)/返回值: 无/注意: 此函数声明为保护型, 只能在CAreaPro类中使用/* void CAreaPro: : MinusBuffer(unsigned char *pOut, unsigned char *pIn, LONG lSize) LONG i; BYTE Buffer; for(i = 0; i lSize; i+) Buffer = *(pIn + i); /执行与操作 *(pOut + i) = *(pO
42、ut + i) - Buffer 0 ? 0 : *(pOut + i) - Buffer; 图5-22 差影法示例(a) 原始混合图像; (b) 背景图像; (c) 差影法处理结果 5.6 应应 用用 实实 例例 下面给出用VC+编程实现判别分析法确定图像最佳分割阈值的算法,其函数框架及其核心代码如下: /用判别分析法确定阈值(只对8位灰度图像有效)int CPointPro: FindThresh( CDibObject *pDibObject ) float Sigma256; float Mean1, Mean2; for( i = 0; i 256; i+) Sigmai = 0.0
43、; for(int th = 0; th 256; th+) int thh = th+1; long GrayValue1 = 0; long GrayValue2 = 0; long Sum1 = 0; long Sum2 = 0; for(i = 0; i nHeight; i+) pTemp = pBits; pTemp += i * nWidthBytes; /位图数据下一行起始指针 for(int j = 0; j nWidth; j+) if( pTempj 0 ) Mean1 = (float)GrayValue1 / (float)Sum1; else Mean1 = 0.0; if( Sum2 0) Mean2 = (float)GrayValue2 / (float)Sum2; else Mean2 = 0.0; Sigmathh = (float)Sum1 * (float)Sum2 * (Mean1 - Mean2) * (Mean1 - Mean2); float MaxSigma = Sigma1; int Thresh=0; for( i = 1; i 255; i+) int thh = i + 1; if(MaxSigma Sigmathh) MaxSigma = Sigmathh; Thresh = i; return(Thresh);