基于边缘的二值化方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于边缘的二值化方法实验室讨论班钟雪君一张图片,我们能从背景中分离出前景,从不同的物体之间指认出某一个物体,一定是因为它们之间的灰度值存在着明显的差异.如果再进一步思索,这种差异,一般是来自于物体与背景之间,物体与物体之间存在的边界线。边缘是图像最基本也是最重要的特征之一,在图像中表现为局部范围灰度的突变。考虑边缘本身的特征。图像中的边缘,一般说来具有两个特征,一是边缘具有方向性,二是边缘附近像素点灰度值的变化。在垂直于边缘方向上取边缘附近的两个像素点,它们的灰度值差值一般是比较大的,也就是变化比较剧烈。在顺着边缘方向取边缘附近的两个像素点,会发现它们的灰度值差值一般是比较小的,也就是说,变化不是那么剧烈。对于这个特征,可以联想到数学上的微分和导数.为导数就是衡量一个值变化快慢的度量.于是我们需要将导数和微分的定义引入图像中。对于一幅图像I(x,y)它是一个关于x和y的,即关于它的像素点位置的离散的二元函数。用来定义图像I(x,y)在位置(x,y)处的梯度,则在像素点(x,y)处灰度值I(x,y)变化最快的方向为梯度向量方向。现在对于一个边缘像素点(x,y)。(x,y)可以间接表示在该点处边缘的方向。为了估计该点处像素灰度值变化的快慢,当然也需要有一个度量。很自然,可以使用梯度的大小去衡量.记梯度的大小为,则有在实际中,我们经常采用一种近似的方式去计算一个像素点处的梯度大小:几种常见的边缘检测算子:一阶Roberts算子:100-101-10|})1,(),1(||,)1,1(),(max{|),(jifjifjifjifjig)1,1()1,()1,1(),1(),(),1()1,1()1,()1,1(yxfyxfyxfyxfyxfyxfyxfyxfyxf2*2大小的卷积核在实际应用中是不好使用的,因为,它没有很明确的中心点。使用该算子对图像进行边缘提取时,不能抑制图像中的噪声,因为它没有对图像进行平滑去噪处理。对边缘进行定位时,有一定质量保证,因为是使用了一阶导数逼近。但是有时会丢失很大一部分的边缘,因为它对导数的逼近程度比较粗糙。一阶Prewitt算子:-1-1-100011110-110-1-101使用该算子进行边缘提取时,因为使用了一阶导数逼近,对边缘的定位是比较准确的。同时由于使用了具有一定滤波作用的卷积核,能够抑制图像中的一部分噪声。对导数的逼近程度提高了,边缘丢失现象得到进一步的抑制,但是同时也出现了伪边缘。出现了边缘具有多像素宽的现象。)]1,1()1,()1,1([)1,1()1,()1,1(jifjifjifjifjifjifx)1,1()1,()1,1(),1(),(),1()1,1()1,()1,1(yxfyxfyxfyxfyxfyxfyxfyxfyxf一阶Sobel算子:-10102-201-1-1-2-1000121)]1,1()1,(2)1,1([)1,1()1,(2)1,1(jifjifjxfjifjifjifx使用该算子进行边缘提取时,同样由于使用了一阶导数逼近,对边缘的定位比较准确。由于该算子的卷积核进一步提高了对图像的平滑作用,抑制图像噪声的效果比Prewitt有所进步。对一阶导数的逼近程度更好了.边缘丢失现象进一步得到抑制,但是同时也有伪边缘,和一条边缘具有多像素宽的现象.总体说来,与Prewitt类似,但是效果更好。)1,1()1,()1,1(),1(),(),1()1,1()1,()1,1(yxfyxfyxfyxfyxfyxfyxfyxfyxf二阶LOG算子:244424080448*24844080424442二阶拉普拉斯算子:在实际的图像处理中,该算子一般不直接用于边缘提取。它有以下缺点:第一,不能确定边缘方向;第二,容易产生双边缘;第三,对噪声很敏感。使用该算子进行边缘提取时,因为使用了二阶导数,对边缘的定位是比较好的,但是由于二阶导数没有方向性,造成有些边缘的方向由于不准确而丢失了。同时由于使用了高斯型函数卷积原始图像,解决了二阶导数对噪声敏感的问题,对图像中的噪声有很好的抑制作用,但是也可能将图像中本来的边缘模糊了而造成丢失那部分边缘。伪边缘的现象仍然存在。但是由于使用零交叉对边缘定位,边缘较细,一般不会出现具有多像素宽的边缘。同时也应该注意到,呈闭合环状的零交叉点组成了我们所提取的边缘,这是严重的缺陷。第一步,使用高斯滤波器:对图像进行平滑处理。降低图像中的噪声点对边缘提取的影响。第二步,对第一步去噪过的图像,使用一阶偏导数计算梯度值和方向。其中我们使用下述差分格式对偏导数进行近似计算:同时使用这两个卷积核,对于图像中的边缘来说是各向同性的。于是我们有)1,1()1,()1,1(),1(),(),1()1,1()1,()1,1(yxfyxfyxfyxfyxfyxfyxfyxfyxfCANNY算子:卷积核为:和第三步,在一个局部邻域内,只保留变化最快的点.因为这些点才是边缘的候选点采取的方式如下,对一个像素点f(x,y),以它为中心点,取它的3*3邻域.然后与沿着梯度方向的两个像素作比较,如果f(x,y)的梯度值不比相邻像素梯度值大,则令(f(x,y))=0.第四步,对于第三步所得到的梯度图像,使用两个阈值分别对其进行处理,不妨将阈值分别记为和,这样得到两幅图像,分别记为图像1,图像2。对于图像1中的像素点(x,y),如果梯度图像中相应位置的像素点灰度值(x,y)小于,那么(x,y)为O,否则,(x,y)的灰度值为255。对于图像2中的像素点(x,y),如果梯度图像中相应位置的像素点灰度值(x,y)小于,那么(x,y)为0,否则,(x,y)的灰度值设为255。梯度值高于的点用255来标记,记为边缘点,低于的点,用0来标记,记为非边缘点。介于和之间的点,被图1标记为边缘点,图2标记为非边缘点,此时,需要结合判断标准来确定它是不是边缘点。判断是否为边缘点的具体步骤如下:步骤1,对图像2进行扫描,当遇到一个像素灰度值为255的点p时,就开始跟踪以这个点p为起始点的轮廓线,直到这条轮廓线的终点g。步骤2,考虑g在图像1中相应位置的像素点g1,如果在g1的3*3邻域中有一个灰度值为255的像素点r1,则在图像2中找到r1所对应的像素点r2,那么r2也是一个边缘点,我们将它加入到轮廓中。这就是我们判断一个可能的边缘点为真正边缘点的准则。然后从点r开始重复第一步,直到在图像1和图像2中都无法继续为止。这时我们得到了一条完整的轮廓线,将它标一记为已经访问的。步骤3,回到第一步,寻找下一条轮廓线。直到在图像2中找不到新的轮廓线为止。在实际使用CANNY算子进行边缘提取时,低阈值与高阈值并不是很容易确定。因此,人们对这个问题进行了大量的研究,想得到一种能通过图像特征自动获得这两个阈值的方法。各种算子边缘检测效果图:Bernsen算法对每个像素点(x,y)考察其w*w窗口内的像素的最大和最小灰度值,取平均值为阈值,然后对该点进行二值化。Niblack算法m(x,y)和s(x,y)依次是点(x,y)处的窗口内的样本均值和标准差,一般取k=-0.2。Bernsen算法和Niblack算法回顾:Bernsen算法和Niblack算法对窗口性质判断:Bernsen算法判断方法:针对于一个最大灰度差值,当窗口很小的时候,那么它的波动应该是很大的;而当窗口尺寸变大的时候,同样的最大灰度差值,由于像素点的迅速增多,实际上波动是相对平缓的。定义一个波动函数:整体图像的波动函数为:如果一个窗口内只含有背景像素点或是目标像素点:若,则B(i,j)=0.否则,B(i,j)=255。令Niblack算法判断方法:取图像中像素点I(x,y)的一个w*w的小窗口,以下式去量化该窗口的波动:整个图像的波动函数为:如果一个窗口内只含有背景像素点或是目标像素点:若,则B(i,j)=0.否则,B(i,j)=255。令在实际对图像进行分割时,对错分邻域作如下修改,这样,错分邻域为:简单地说一下,这样修改的理由.引入图像最大灰度值M与最小灰度值m之差是为了半适应性。至于除以一个常量128.0,是因为灰度最大差值太大了。所以这也是不超过2,所以注意,的值取得越小,整体阈值二值化算法所负责分割的像素点就会越多;相反,若是的值取得越大,局部阈值二值化算法所负责进行分割的点就越多。在这里,要有一个速度和质量的衡量。错分领域与算法加速下面我们完整地叙述结合边缘检测的图像二值化算法:给定一幅图像I(x,y),我们对其进行二值化,结果为二值图像B(x,y)。其中均假定亮色为背景,暗的像素点为目标,于是在B(x,y)中背景点灰度值为255,目标点灰度值为0。第一步,使用CANNY算法,提取该图像的边缘。得到二值图像C(x,y),然后我们开始对I(x,y)进行逐点二值化,进入第二步;第二步,对于一个像素I(i,j),若C(i,j)==255,则B(i,j)=O,然后进入第六步。否则,如果否则,如果否则,进入第三步;第三步,取像素I(i,j)的一个w*w的小窗口.对这个小窗口的性质进行判定。NIBLACK方法:若时,此时窗口内只有目标或背景,进入第四步,否则进入第五步;BERNSEN方法:若时,此时窗口内只有目标或只有背景,进入第四步,否则进入第五步;第四步,此时窗口内只有目标或只有背景若然后进入第六步。第五步,此时窗口内同时混有目标和背景。我们首先计算对应的局部阈值,然后使用这个局部阈值对像素点I(i,j)进行二值化。NIBLACK方法:其中k=-0.2;BERNSEN方法:若然后进入第六步。第六步,对像素点位置坐标(j,j)进行更新,然后进入第二步。直到遍历完图像I(x,j)的每一个像素点,算法结束。这样当算法结束的时候,二值图像B(x,y)即为我们对图像I(x,y)进行分割的结果。1.用边缘算子,提取图像的边缘:C(x,y),C(x,y)中只有边缘。2.C(x,y)点以外的点I(x,y),若满足:3.小窗口(w*w)中,用NIBLACK方法和BERNSEN算法分别判断出只有目标或者只有背景和两者都有的情况。4.小窗口只有目标或者只有背景的情况:5.小窗口内有背景也有目标的情况:分别用NIBLACK方法和BERNSEN方法对I(x,y)点进行二值化。6.更新到下一个点,继续进行上述工作。总结后本文二值化方法结构如下:各种二值化效果实例:谢谢观看钟雪君

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功