基于二值化阈值自动搜索的磁光成像缺陷检测方法_2

文档序号:9668183阅读:来源:国知局
[0060] S304 :统计被填充像素点数量:
[0061] 对矩阵Φ中每个像素点进行扫描,得到矩阵Φ中元素值大于等于0的像素点数 量,将像素点数量保存为填充面积S(t)。当矩阵Φ中像素点的元素值大于等于0,说明在 本次填充中,该像素点被成功填充,而元素值小于〇的像素点,则说明当前的填充高度还未 能将原像素值覆盖。这就相当于以缺陷处为凹陷,然后灌水,填充面积S(t)就相当于被水 淹没的面积。
[0062] S305 :判断是否ht<K,如果是,进入步骤S306,否则进入步骤S307。
[0063] S306 :令t=t+l,ht=hti+Ah,Ah表示填充高度步长,根据需要设置,返回步骤 S303〇
[0064] S307:曲线拟合:
[0065] 根据之前的原理说明可知,最佳的二值化阈值是使填充面积增长率最大处所对应 的填充高度,而采用之前的过程所得到的是填充高度和对应填充面积的离散数据点,因此 需要根据每次填充高度ht与对应的填充面积S(t)进行曲线拟合,得到填充面积相对于填 充高度的变化曲线X。曲线拟合的方法有很多,具体方法可以根据实际需要来选择。为了使 得计算更加准确,减少扰动误差,本实施例采用基于三次样条插值的拟合方法。
[0066] 图4是拟合得到的填充面积相对于填充高度的变化曲线示例图。如图4所示,横 坐标为填充高度,纵坐标为填充面积。由图4可以将填充扫描分为5个阶段,首先是对滤波 后图像中的暗点进行浇灌,然后是对背景进行浇灌,在经过过渡区域后,即进行对真实缺陷 位置的浇灌,在此时出现面积增长率最快的区域,然后变平缓,最终将图像灌满。在设置初 始填充高度值匕时,可以跳过前两个区域,从过渡区域开始即可,这样可以减少计算量。
[0067] S308 :搜索二值化阈值:
[0068] 搜索得到曲线X中填充面积增长率最大处所对应的填充高度令二值化阈值 r= 「1表示向上取整,取整是因为根据拟合得到的曲线X所搜索到的填充高度 可能不是整数值。
[0069] 由于在填充过程中,磁光图片背景颜色本身也需要被填充,且由于光子和传感器 本身的测量误差,会导致背景色也会存在高低不同的灰度值。这样在初始填充过程中,当填 充高度达到缺陷高度值的最底部之前,曲线X也会出现一个"S"形状的变化走势,在背景几 乎填充完毕到缺陷部分中的最低像素值之间,会出现一个比较平坦的区域,该区域被称为 "过渡区"。从该区域之后,曲线X的变化中斜率最大的地方这可以认定为最佳阀值处。基 于以上分析,本实施例提出以下搜索方法:
[0070] 对变化曲线X求得一阶导数曲线X1和二阶导数曲线X2。以步长〇对二阶导数曲 线X2进行搜索,如果第i次搜索的二阶导数x2(i) >0,x2(i-l) <〇,那么认为此时i对应 一阶导数曲线X1中的最小值,继续搜索,如果第j次搜索的二阶导数x2(j) <0,x2(j-l) > 0,那么认为此时i对应一阶导数曲线X1中的最大值,则第j次搜索时所对应的填充高度即 为填充面积增长率最大处所对应的填充高度A。
[0071] S204:图像二值化:
[0072] 根据步骤S203搜索得到二值化阈值T对图像I进行二值化,得到二值化磁光图 像。
[0073] S205 :斑点轮廓检测:
[0074] 对二值化磁光图像进行轮廓检测,得到各个斑点的轮廓图像。
[0075] 图5是本实施例中斑点轮廓检测方法流程图。如图7所示,斑点轮廓检测包括以 下步骤:
[0076] S501 :磁光二值化图像中值滤波:
[0077] 因为独立像素点不能构成一个闭合的斑点块,视为像素坏点,所以首先对磁光二 值化图像做中值滤波处理,以滤除独立像素点。滤波窗口不宜过大,取[3, 3]~[10, 10]为 宜,因为太大会使斑点对象过于平滑,缺陷信息精度降低,太小又不能使无法构成斑点块的 部分被滤去。将中值滤波后的图像记为L。
[0078] S502 :边沿检测:
[0079] 使用"canny"算子计算得到磁光二值化图像的轮廓,得到磁光二值化图像的边沿 图像L,边沿图像L的大小与磁光二值化图像一致,记其大小为MXN,边沿图像中边沿像素 点的值为1,非边沿像素点的值为〇。
[0080] S503 :令列序号p= 1,令斑点序号q=1。
[0081] S504 :扫描非零像素点:
[0082] 对边沿图像L中的第p列像素点进行扫描,在像素点集Ap中记录每个非零像素的 坐标。
[0083]S505:判断是否Ap为空,如果是,进入步骤S506,否则进入步骤S508。
[0084]S506 :判断是否p<N,如果是,进入步骤S507,否则斑点轮廓检测结束。
[0085]S507:令p=p+1,返回步骤S504。
[0086]S508:初始化第q个斑点的像素队列0q为空。
[0087] S509 :确定斑点轮廓起点:
[0088] 将像素点集Ap中第一个像素作为0q中第一个像素0q (1),也就是将Ap中第一个非 零像素作为第q个斑点的轮廓起点。
[0089] S510 :令斑点中像素序号f= 2。
[0090]S511 :确定下一个轮廓像素:
[0091] 记0q(f-l)坐标为(m,n),在磁光二值化图像L中依次按照方向正上,右上,右, 右下,正下,左下,正左和左上进行遍历,即遍历像素点(m-l,n)、(m-l,n+l)、(m,n+l)、 (m+1,n+1)、(m+1,η)、(m+1,n-1)、(m-1,n-1),一旦发现非零像素,则判断该像素是否已在像 素队列〇q中,如果是,搜索下一个,否则将非零像素坐标赋予在像素队列〇q的第f个像素 0q(f)。
[0092]S512:判断是否0q(f) =0q(1),如果不是,进入步骤S513,否则进入步骤S514。
[0093]S513:令f=f+1,返回步骤S511。
[0094] S514 :在像素队列0q中删除0q(f),可见此时第q个斑点的轮廓搜索完毕,其所有 的像素点坐标都记录在像素队列0q中。
[0095]S515:更新磁光二值化图像:
[0096] 当第q个斑点的轮廓搜索完毕后,由于斑点间的轮廓不能有交叉,因此需要在磁 光二值化图像L中,将像素队列0q中所有像素坐标的像素值置为0。
[0097]S516:令q=q+Ι,返回步骤S504。
[0098] S206 :计算各个斑点面积:
[0099] 计算步骤S205中各个斑点的面积。图6是本实施例中斑点面积计算流程图。如 图6所示,斑点面积计算的步骤包括:
[0100] S601 :绘制斑点轮廓图:
[0101] 根据步骤S205得到的各个斑点轮廓,绘制得到斑点轮廓图。其具体过程为:初始 化与磁光图像大小相同的全黑图像,然后将轮廓队列中像素点对应的像素值置为1,即可得 到斑点轮廓图。
[0102] S602 :令斑点序号q= 1。
[0103] S603 :搜索斑点边界坐标:
[0104] 根据第q个斑点的像素队列0q,搜索得到各像素点中横坐标的最大值x_、最小值 Xmin,和纵坐标的最大值ymax、最小值ymin。
[0105] S604 :令列序号p' =xmin,第q个斑点面积Rq= 0。
[0106] S605:扫描第p'列包含像素:
[0107] 搜索得到第V列中属于像素队列〇q中的像素,按纵坐标从大到小进行排序。记 搜索得到的像素数量为H,斑点在该列中所包含的像素数量Vp?按照以下公式计算:
[0108]
[0109] 其中,|_」表示向下取整。由于斑点是一个闭合轮廓,因此扫描线与轮廓的交点是 有进有出的,因此一般所搜索到的轮廓像素点是偶数个,但是也存在一些特殊情况下是奇 数个,由于奇数个轮廓像素点有多种情况,为了简便,本实施例中采用舍去最后一个轮廓像 素点的方式(即将H/2向下取整)来估算该列所包含的像素数量。由于出现奇数个轮廓像 素点的可能性很小,因此这种估算方式并不会对最终的面积结果带来实质性的影响。
[0110] S606:面积累加:
[0111] 令第q个斑点的面积Rq=Rq+Vp<。
[0112] S607 :判断是否V<x_,如果是,进入步骤S608,否则进入步骤S609。
[0113] S608:令p' =p' +1,返回步骤S605。
[0114] S609 :判断是否q<Q,Q表示步骤S205得到的斑点数量,如果是,进入步骤S610, 否则所有斑点的面积计算结束。
[0115]S610:令q=q+Ι,返回步骤S603。
[0116] S207:缺陷检测:
[0117] 经过步骤S206,可以得到每个斑点的面积,按照面积从小到大进行排列。由于存 在背景轮廓,其面积最大,因此最后一个斑点为背景块,倒数第二个开始为磁光图像中疑似 缺陷斑点。由于缺陷面积会大于一般的磁畴斑点块或像素扰动斑点,因此如果对排序后相 邻两个斑点的面积作差,当有缺陷存在时,会有一个面积陡增的部分,据此即可检测得到缺 陷。其具体方法为:
[0118] 将
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1