VC++晶片内部缺陷处理+文献综述(7)
时间:2017-02-16 17:02 来源:毕业论文 作者:毕业论文 点击:次
其中,*表示而为卷积操作,tH(x,y)用以表示向右方向上的亮度增长,tV(x,y)用以表示向下方向上的亮度增长。 在图像的每一个像素点上,所得到的梯度近似值可以组合起来,得到梯度强度,即: Sobel算子的实现代码见ImageProcessing.cpp文件中的Sobel_edge_operator函数。 3.3.3 两种边缘检测方法的比较 为了便于比较,下面同时给出两种算子的效果图: 图3.6 Robert算子边缘检测效果图 图3.7 Sobel算子边缘检测效果图 从图中可以明显看出,Sobel算子的检测效果要好于Robert算子。因为获取图像光线较暗,Sobel算子在光强较小的情况下要比Robert算子更加敏感,更能突出边缘特征。 3.4 图像的二值化 只有两个灰度级的图像称为二值图像,典型的图像处理、识别软件中最终处理的都是二值图像,因为二值图像数据简单明了,处理速度快,只要能正确的分割出图像感兴趣的部分,对于二值图像处理的误差也要小得多。在后来的模扳匹配中也可以发现:用二值化之后的图像进行模板匹配,速度要快得多,误差也小。总之,二值图像在图像处理中占据很重要的位置。关于图像二值化的方法,种类繁多,简单二值化,波形分析法,判别函数法,综合法、P-参数法、最小误差法等等,但是如果从全局阈值还是局部阈值来划分,则只有两大类:全局阈值法,局部阈值法。无论是波形分析法,还是判别函数法,还是综合法等等,都属于全局阈值,最终的目的都是确定一个阈值用来进行全局阈值分割,因为光源固定、摄像机固定,这个阈值我们总是可以通过多次试验而得到,所以并无必要花费很多的精力去研究、分析每个方法的优劣。因此,本课题中只打算给出三种易于实现的全局阈值方法实现代码。 3.4.1 简单二值化 最常用的分割方法是利用灰度值的大小进行二值化。设原始图像为f(x,y),以一定的准则确定一个灰度值t作为分割阐值,然后将大于等于t值的像素判为对象并用1来表示,而将小于t值的像素判为背景并用0来表示。二值化的结果将灰度图像变成二值图像。 或者反之,对象与背景像素的大小关系对调。 3.4.2 大津法二值化 大津法又称最大类间方差法[8]。原理为:取某个灰度值,以它为分界将图像分为灰度值大小两类,分别计算这两类中的像素点数及灰度平均值。然后计算它们的类间方差,最后取所有灰度的类问方差中的最大值对应的灰度为阈值。类间方差的计算公式如下: 其中,n1(i)、n2(i)分别为灰度小于i的像素与大于等于i的像素的数目,v1(i)、v2(i)分别为它们的平均值。 此式的意思是,取w(i)中的最大值时的下标作为处理结果,作为二值化的分割阈值。w(i)实际上是一个以灰度值为自变量的函数,求阈值就是找出函数值取最大值的位置。大津法二值化的具体实现代码见ImageProcessing.cpp文件中的Otsu_threshold函数。 3.4.3 自动阈值分割 自动阈值分割是一种不需人工参与、自动确定阈值的图像二值化分割方法,算法描述如下[16]: (1)求出图像中的最小灰度值Zl和最大灰度值Zk,取初始阈值T0为: (2)根据阈值T将图像分割成目标和背景两部分,求出两部分的平均灰度值ZO和ZB,其中ZO和ZB分别为: 式中Z(i,j)图像上(I,j)点的灰度值,N(i,j)是(i,j)点的权重因子,一般取N(i,j)=1。 (3)求出新阈值: (4)判断TK=TK+1是否成立,不成立转步骤2,否则TK+1就是最佳阈值。 (责任编辑:qin) |