印刷电路板图像轮廓提取方法及装置
技术领域
本公开涉及图像识别技术领域,尤其涉及一种印刷电路板图像轮廓提取方法及装置。
背景技术
随着线路板行业的发展,国内外客户对线路板产品的要求越来越高,对印刷电路板的检测的精度的要求也越来越高。印刷电路板制造过程中,制造厂必须不断地进行测试与检查。电路板密度的增加挑战这传统针床在线测试以及操作员的视觉检查能力。如果改变电路板的尺寸大小,则使手工检查更加困难。为了对这些发展做出反应,越来越多的制造厂开始评估AOI作为一个解决方案。AOI是“Automatic Optical Inspector”的缩写,中文名为“自动光学检查仪”。主要原理是将要检查的部件用光学扫描得到数字图像,应用一定的图像处理技术将该部件与设计标准图像或设计数据进行比较,找出其间的差异并报告出来,操作人员根据报告找出缺陷位置进行分析和修复,从而达到控制质量和改善工艺的目的。
AOI检测软件的处理流程包括:轮廓提取、全局配准、精细配准以及缺陷检测。轮廓提取是通过对灰度图像进行处理,得到轮廓边缘点数据。在印刷电路板的检测过程中通过会使用到AOI检测技术,AOI检测技术是通过光学扫描得到印刷电路板的数字图像,在经过图像处理技术提取印刷电路板的智能轮廓在进行印刷电路板的质量检测。AOI主要在装配线上检查顶面回流焊接元件,检查播放焊接前通孔元件,检查播放焊接之后的通孔及SMT元件,检查压入配合之后的连接器引脚。
随着电路越来越精细,要求检测出的缺陷越来越小,若用提高图像分辨率的方法来提升检测能力,则不利于提升产能,因此需要引入亚像素的检测方法。然而现有的AOI关于亚像素的算法求取的轮廓大小与真实轮廓大小存在细微的差别,现有的算法对于亚像素提取的精度不够高,对于细微细节部分的轮廓检测不稳定,容易造成漏检与无检测的发生。
发明内容
为克服相关技术对于亚像素提取的精度不够高,对于细微细节部分的轮廓检测不稳定,容易造成漏检与无检测的发生的问题,本申请提供一种印刷电路板图像轮廓提取方法和装置,能够提高亚像素提取的精度,对于细微细节部分的轮廓检测更稳定,减少漏检与无检测的发生。
根据本申请实施例的第一方面,提供一种印刷电路板图像轮廓提取方法,包括:
获取原始灰度图像;
将所述原始灰度图像进行二值化处理,输出二值化灰度图像;
利用LOG算子对所述二值化灰度图像进行卷积处理,得到与像素点相对应的卷积数据;
判断所述卷积数据的值是否为零,如果为零,确定与所述卷积数据对应的像素点为边缘点;如果不为零,利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点;
利用Sobel算子计算所述边缘点的梯度和幅值,根据所述边缘点的梯度和幅值确定落在所述边缘点的所述亚像素边缘点的梯度和幅值;
根据所述边缘点、所述亚像素边缘点、所述边缘点的梯度和幅值以及所述亚像素边缘点的梯度和幅值,得出所述原始灰度图像的轮廓。
可选的,所述将所述原始灰度图像进行二值化处理,输出二值化灰度图像包括:
获取低阈值和高阈值;
判断低阈值和高阈值的大小关系;
获取所述像素点的灰度值以及所述像素点3*3邻域内的所有邻域像素点的灰度值;
判断所述邻域像素点的灰度值与低阈值和高阈值的大小关系;
根据低阈值和高阈值的大小关系和所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果低阈值小于或等于高阈值,根据所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果所述领域像素点的灰度值均小于低阈值,所述像素点的灰度值取值为1,如果所述领域像素点的灰度值均大于高阈值,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变;
如果低阈值大于高阈值,定义两个初始化变量bInLow和bInHigh,且初始化为假,根据所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果所述领域像素点的灰度值均小于低阈值,标记bInLow为真,如果所述领域像素点的灰度值均大于高阈值,标记bInHigh为真;
如果bInLow为真且bInHigh为否,所述像素点的灰度值取值为1,如果bInLow为否且bInHigh为真,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变。
可选的,所述利用LOG算子对所述二值化灰度图像进行卷积处理,得到LOG卷积标记结果,包括:
根据卷积模板使用卷积公式对所述二值化灰度图像进行卷积处理;
其中,所述卷积模板为:
可选的,所述利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点,包括:
判断所述卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在所述卷积数据为正值的像素点,如果存在所述卷积数据为正值的像素点,根据所述卷积数据为负值的像素点和所述卷积数据为正值的像素点利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点;
判断所述卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在多个所述卷积结果为正值的像素点,如果存在多个所述卷积结果为正值的像素点,分别计算得到多个与所述卷积数据对应的亚像素点,取多个与所述卷积数据对应的亚像素点的平均值为与所述卷积数据对应的亚像素边缘点;
判断所述卷积数据为正值的像素点是否存在落在所述卷积数据为正值的像素点上的亚像素边缘点,如果不存在,选取所述卷积数据为正值的像素点的向上、向下、向左以及向右四个方向上的所述卷积数据为负的最大值的像素点为偏移点,将所述卷积数据为正值的像素点向所述偏移点偏移0.45个像素为所述卷积数据对应的亚像素边缘点。
相应于本申请实施例的第一方面,根据本申请实施例的第二方面,提供一种印刷电路板图像轮廓提取装置,包括:
原始灰度图像获取单元,用于获取原始灰度图像;
二值化处理单元,用于将所述原始灰度图像进行二值化处理,输出二值化灰度图像;
卷积处理单元,用于利用LOG算子对所述二值化灰度图像进行卷积处理,得到与像素点相对应的卷积数据;
判断单元,用于判断所述卷积数据的值是否为零;
执行单元,用于如果所述卷积数据的值为零,确定与所述卷积数据对应的像素点为边缘点;如果所述卷积数据的值不为零,利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点;
梯度和幅值计算单元,用于利用Sobel算子计算所述边缘点的梯度和幅值,根据所述边缘点的梯度和幅值确定落在所述边缘点的所述亚像素边缘点的梯度和幅值;
轮廓获取单元,用于根据所述边缘点、所述亚像素边缘点、所述边缘点的梯度和幅值以及所述亚像素边缘点的梯度和幅值,得出所述原始灰度图像的轮廓。
可选的,所述二值化处理单元包括:
低阈值和高阈值获取模块,用于获取低阈值和高阈值;
第一判断模块,用于判断低阈值和高阈值的大小关系;
灰度值获取模块,用于获取所述像素点的灰度值以及所述像素点3*3邻域内的所有邻域像素点的灰度值;
第二判断模块,用于判断所述邻域像素点的灰度值与低阈值和高阈值的大小关系;
第一执行模块,用于根据低阈值和高阈值的大小关系和所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果低阈值小于或等于高阈值,根据所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果所述领域像素点的灰度值均小于低阈值,所述像素点的灰度值取值为1,如果所述领域像素点的灰度值均大于高阈值,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变;
如果低阈值大于高阈值,定义两个初始化变量bInLow和bInHigh,且初始化为假,根据所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果所述领域像素点的灰度值均小于低阈值,标记bInLow为真,如果所述领域像素点的灰度值均大于高阈值,标记bInHigh为真;
如果bInLow为真且bInHigh为否,所述像素点的灰度值取值为1,如果bInLow为否且bInHigh为真,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变。
可选的,所述卷积处理单元根据卷积模板使用卷积公式对所述二值化灰度图像进行卷积处理;
其中,所述卷积模板为:
可选的。所述执行单元包括:
第二判断模块,用于判断所述卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在所述卷积数据为正值的像素点;
第二执行模块,用于如果存在所述卷积数据为正值的像素点,根据所述卷积数据为负值的像素点和所述卷积数据为正值的像素点利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点;
第三判断模块,用于判断所述卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在多个所述卷积结果为正值的像素点;
第三执行模块,用于如果存在多个所述卷积结果为正值的像素点,分别计算得到多个与所述卷积数据对应的亚像素点,取多个与所述卷积数据对应的亚像素点的平均值为与所述卷积数据对应的亚像素边缘点。
第四判断模块,用于判断所述卷积数据为正值的像素点是否存在落在所述卷积数据为正值的像素点上的亚像素边缘点;
第四执行模块,用于如果不存在落在所述卷积数据为正值的像素点上的亚像素边缘点,选取所述卷积数据为正值的像素点的向上、向下、向左以及向右四个方向上的所述卷积数据为负的最大值的像素点为偏移点,将所述卷积数据为正值的像素点向所述偏移点偏移0.45个像素为所述卷积数据对应的亚像素边缘点。
相应于本申请实施例的第一方面,根据本申请实施例的第三方面,提供一种FPGA芯片,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器通过所述计算机程序执行上述权利要求1至4任一项所述的方法。
相应于本申请实施例的第一方面,根据本申请实施例的第四方面,提供一种计算机可读存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述权利要求1至4任一项所述的方法。
本申请实施例提供的技术方案,首先获取原始灰度图像,将原始灰度图像进行二值化得到二值化灰度图像,使用LOG算子对二值化灰度图像进行卷积处理,卷积处理后得到的卷积数据分为两种情况一种数值为零可以直接确定为边缘点,数值不为零的利用亚像素点插值法得到亚像素边缘点,利用Sobel算子计算所述边缘点的梯度和幅值以及亚像素边缘点的梯度和幅值,最后根据边缘点、亚像素边缘点、边缘点的梯度和幅值以及亚像素边缘点的梯度和幅值,得出原始灰度图像的轮廓。本申请实施例提供的技术方案,能够提高亚像素提取的精度,对于细微细节部分的轮廓检测更稳定,减少漏检与无检测的发生。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1为本申请一示例性实施例示出的印刷电路板图像轮廓提取方法的流程示意图;
图2是根据一示例性实施例示出的二值化处理的流程示意图;
图3是根据一示例性实施例示出的利用亚像素点插值法计算得到与卷积数据对应的亚像素边缘点流程示意图;
图4是根据一示例性实施例示出的亚像素点插值示意图;
图5是根据一示例性实施例示出的原始灰度图;.
图6是根据一示例性实施例示出的标记图像1;
图7是根据一示例性实施例示出的标记图像2;
图8是根据一示例性实施例示出的标记图像3;
图9是根据一示例性实施例示出的标记图像4;
图10是根据一示例性实施例示出的标记图像3和标记图像3的合并图像;
图11是根据一示例性实施例示出的利用Sobel算子得到的梯度图;
图12是根据一示例性实施例示出的利用Sobel算子得到的幅值图;
图13是根据一示例性实施例示出的印刷电路板图像轮廓提取装置的框图;
图14(a)为由C++模块所提供的二值化处理结果;
图14(b)为本申请实施例所提供的二值化处理结果;
图15(a)为由C++模块所提供的卷积处理结果;
图15(b)为为本申请实施例所提供的卷积处理结果。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
为了全面理解本申请,在以下详细描述中提到了众多具体的细节,但是本领域技术人员应该理解,本申请可以无需这些具体细节而实现。在其他实施例中,不详细描述公知的方法、过程、组件和电路,以免不必要地导致实施例模糊。
图1本申请一示例性实施例示出的一种印刷电路板图像轮廓提取方法的流程示意图,如图1所示,所示方法包括:
步骤S101,获取原始灰度图像。
灰度图像(gray image)是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;但是,灰度图像在黑色与白色之间还有许多级的颜色深度。灰度图像经常是在单个电磁波频谱如可见光内测量每个像素的亮度得到的,用于显示的灰度图像通常用每个采样像素8位的非线性尺度来保存,这样可以有256级灰度。灰度化之后颜色信息丢失,很多color-based算法就不可能这么做,但是很多简单的识别算法对于颜色的依赖性不强,hand-craft特征更多关注边缘梯度信息。工程中很多应用加上color信息之后鲁棒性会下降。灰度化之后矩阵维数下降,运算速度大幅度提高,并且梯度信息仍然保留。本申请实施例通过采集控制单元采集彩色图像后再将彩色图像处理成灰度图像。
步骤S102,将原始灰度图像进行二值化处理,输出二值化灰度图像。
二值图像(Binary Image),按名字来理解只有两个值,0和1,0代表黑,1代表白,或者说0表示背景,而1表示前景。其保存也相对简单,每个像素只需要1Bit就可以完整存储信息。如果把每个像素看成随机变量,一共有N个像素,那么二值图有2的N次方种变化,而8位灰度图有255的N次方种变化,8为三通道RGB图像有255*255*255的N次方种变化。也就是说同样尺寸的图像,二值图保存的信息更少。二值图像(binary image),即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。
具体的,如图2所示将原始灰度图像进行二值化处理包括:步骤S201,获取低阈值和高阈值。
在实际成像的过程中由于灰尘、光源亮度等的影响,使得导体区和基材区的灰度分布在一个范围内,而不是固定在一个值。为了使得图像更加清晰,能够更好的区分出来导体区、基材区,本申请实施例采用了一种低阈值和高阈值的二值化方法。输入为两个阈值,即二值化的低值和高值,其对应的物理意义即是:导体区的成像范围认定在高值以上,而基材区的成像范围认定在低值以下。
步骤S202,判断低阈值和高阈值的大小关系。
步骤S203,获取所述像素点的灰度值以及所述像素点3*3邻域内的所有邻域像素点的灰度值。
步骤S204,判断所述邻域像素点的灰度值与低阈值和高阈值的大小关系。
步骤S205,根据低阈值和高阈值的大小关系和所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果低阈值小于或等于高阈值,根据所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值。
具体的,如果所述领域像素点的灰度值均小于低阈值,所述像素点的灰度值取值为1,如果所述领域像素点的灰度值均大于高阈值,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变;
如果低阈值大于高阈值,定义两个初始化变量bInLow和bInHigh,且初始化为假,根据所述邻域像素点的灰度值与低阈值和高阈值的大小关系,确定所述像素点的灰度值,包括:
如果所述领域像素点的灰度值均小于低阈值,标记bInLow为真,如果所述领域像素点的灰度值均大于高阈值,标记bInHigh为真;
如果bInLow为真且bInHigh为否,所述像素点的灰度值取值为1,如果bInLow为否且bInHigh为真,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变。
步骤S103,利用LOG算子对二值化灰度图像进行卷积处理,得到与像素点相对应的卷积数据。
轮廓提取的方法存在一阶导数和二阶导数两种不同的方法,如果采用的是一阶导数,则一阶导数最大值处即为边缘点;如果是二阶导数,则二阶导数过零点即为边缘点。本申请实施例使用LOG算子提取方法,对二值化灰度图像进行卷积处理。LOG算子,又称为高斯拉普拉斯算子,是一种二阶导数的轮廓提取方法。具体的,将二值化灰度图像矩阵利用卷积模板和卷积公式对其进行卷积计算。二值化灰度图像矩阵可表示为卷积模板可以使用:卷积公式为得到卷积数据。
步骤S104,判断卷积数据的值是否为零,如果为零,确定与卷积数据对应的像素点为边缘点;如果不为零,利用亚像素点插值法计算得到与卷积数据对应的亚像素边缘点。步骤S104为过零点寻找,经过LOG卷积处理后得到的卷积数据,卷积数据与像素点相对应,其中卷积数据的值为零的,直接确定与卷积数据对应的像素点为边缘点,如果不为零,则利用亚像素点插值法计算出与卷积数据对应的亚像素边缘点。
具体的,如图3所示为利用亚像素点插值法计算得到与卷积数据对应的亚像素边缘点流程示意图,包括步骤S401,判断卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在卷积数据为正值的像素点。
步骤S402,如果存在卷积数据为正值的像素点,根据卷积数据为负值的像素点和卷积数据为正值的像素点利用亚像素点插值法计算得到与卷积数据对应的亚像素边缘点。
其中,亚像素点插值法计算得到亚像素边缘点的位置实现方法如下,亚像素点插值示意图如图4所示:
卷积数据为负值的像素点PT1(卷积结果为A),卷积数据为正值的像素点PT2(卷积结果为B),亚像素插值点即亚像素边缘点的位置计算公式为,A/(A+B)=x/(x+y),其中,X,Y为PT1,PT2到PT的距离,通过该公式可计算两点插值后的X,Y坐标,即获得亚像素边缘点的位置。
其中,如果卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上存在多个卷积结果为正值的像素点,根据上述的方法分别计算得到多个与卷积数据对应的亚像素点,取多个与卷积数据对应的亚像素点的平均值为与卷积数据对应的亚像素边缘点。
步骤S402还包括,判断卷积数据为正值的像素点是否存在落在卷积数据为正值的像素点上的亚像素边缘点,如果不存在,选取卷积数据为正值的像素点的向上、向下、向左以及向右四个方向上的卷积数据为负的最大值的像素点为偏移点,将卷积数据为正值的像素点向偏移点偏移0.45个像素为卷积数据对应的亚像素边缘点。
在FPGA芯片中具体的实现方案为分3种卷积结果进行标记:卷积结果为负值的过零点搜索、卷积结果为0的直接标记过零点,卷积结果为正值的补充标记。最后将三种标记结果进行合并。
具体的,卷积结果为负值的进行如下标记:
如图5为原始灰度图,分为3*1,和1*3两个模板进行标记。即一个3*1,同时比较上下两个点是否存在亚像素,并记录两个点的亚像素坐标。分别解析3*1,和1*3模板数据,将标记在一个整像素上的亚像素点求平均,最终标记为:当前点是否存在亚像素,及其坐标,得到标记图像1,如图6所示;
卷积结果为正值进行如下标记:3*3邻域分析,与负值标记方法相似,得到标记图像2,如图7所示;将负值和正值的结果合并,方法判断负值的像素是否为边缘点,不是则取标记图像2,得到插值标记图像3,如图8所示;
卷积结果为零的直接进行标记(为边缘点,坐标值),标记图像4,如图9所示。
合并插值标记图像3和结果和标记图像4的边缘点:实现方法:判断卷积结果是都等于零取标记图像4;否则取标记图像3。如图10为标记图像3和标记图像4的合并图像。
具体的解析3*1和1*3模板并进行合并的过程:
3*1模板结果每个点记录相邻(上、下、中心)3个数据,解析输出当前整像素内记录的亚像素的数目,以及DY的总和;
1*3模板结果每个点记录同样相邻(左、右、中心)3个数据,解析输出当前整像素内记录的亚像素的数目,以及DX的总和;
合并3*1,1*3模板,当前点存在亚像素平均结果,[标记=所有标记或运算,坐标求和(标记*DX)/亚像素点个数,(标记*DY)/亚像素点个数]。
步骤S105,利用Sobel算子计算边缘点的梯度和幅值,根据边缘点的梯度和幅值确定落在边缘点的亚像素边缘点的梯度和幅值。使用的卷积模板为: 幅值计算公式为:梯度计算公式为:
步骤S106,根据得到的边缘点、亚像素边缘点、边缘点的梯度和幅值以及亚像素边缘点的梯度和幅值,得出所述原始灰度图像的轮廓。如图11为利用Sobel算子得到的梯度图,如图12为利用Sobel算子得到的幅值图。
本申请实施例提供的技术方案,首先获取原始灰度图像,将原始灰度图像进行二值化得到二值化灰度图像,使用LOG算子对二值化灰度图像进行卷积处理,卷积处理后得到的卷积数据分为两种情况一种数值为零可以直接确定为边缘点,数值不为零的利用亚像素点插值法得到亚像素边缘点,利用Sobel算子计算所述边缘点的梯度和幅值以及亚像素边缘点的梯度和幅值,最后根据边缘点、亚像素边缘点、边缘点的梯度和幅值以及亚像素边缘点的梯度和幅值,得出原始灰度图像的轮廓。本申请实施例提供的技术方案,对于亚像素提取的精度高,对于细微细节部分的轮廓检测更稳定,减少漏检与无检测的发生。
图13为本申请本申请一示例性实施例示出的一种印刷电路板图像轮廓提取装置的框图。如图13所示,所述装置包括:
原始灰度图像获取单元U1001,用于获取原始灰度图像;
二值化处理单元U1002,用于将所述原始灰度图像进行二值化处理,输出二值化灰度图像;
卷积处理单元U1003,用于利用LOG算子对所述二值化灰度图像进行卷积处理,得到与像素点相对应的卷积数据;
判断单元U1004,用于判断所述卷积数据的值是否为零;
执行单元U1005,用于如果所述卷积数据的值为零,确定与所述卷积数据对应的像素点为边缘点;如果所述卷积数据的值不为零,利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点;
梯度和幅值计算单元U1006,用于利用Sobel算子计算所述边缘点的梯度和幅值,根据所述边缘点的梯度和幅值确定落在所述边缘点的所述亚像素边缘点的梯度和幅值;
轮廓获取单元U1007,用于根据所述边缘点、所述亚像素边缘点、所述边缘点的梯度和幅值以及所述亚像素边缘点的梯度和幅值,得出所述原始灰度图像的轮廓。
具体的,卷积处理单元根据卷积模板使用卷积公式对所述二值化灰度图像进行卷积处理;
其中,所述卷积模板为:
其中,二值化处理单元,可以包括:
低阈值和高阈值获取模块,用于获取低阈值和高阈值;
第一判断模块,用于判断低阈值和高阈值的大小关系;
第一执行模块,用于如果低阈值小于或等于高阈值,遍历所有的像素点;
所述第一执行模块包括第一获取子模块、第一判断子模块以及第一执行子模块;
所述第一获取子模块,用于获取像素点的灰度值及所述像素点3*3邻域内的所有像素点的灰度值;
所述第一判断子模块用于判断所有像素点的灰度值与低阈值和高阈值的大小关系;
所述第一执行子模块,用于如果所述像素点3*3邻域内的所有像素点的灰度值均小于低阈值,所述像素点的灰度值取值为1,如果述像素点3*3邻域内的所有像素点的灰度值均大于高阈值,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变;
第二执行模块,用于如果低阈值大于高阈值,定义两个初始化变量bInLow和bInHigh,且初始化为假,遍历所有的像素点;
所述第二执行模块包括第二获取子模块、第二判断子模块以及第二执行子模块;
第二获取子模块,用于获取像素点的灰度值及所述像素点3*3邻域内的所有像素点的灰度值;
第二判断子模块,用于判断所有像素点的灰度值与低阈值和高阈值的大小关系;
第二执行子模块,用于如果所述像素点3*3邻域内的所有像素点的灰度值均小于低阈值,标记bInLow为真,如果述像素点3*3邻域内的所有像素点的灰度值均大于高阈值,标记bInHigh为真,如果bInLow为真且bInHigh为否,所述像素点的灰度值取值为1,如果bInLow为否且bInHigh为真,所述像素点的灰度值取值为254,否则,保持所述像素点的灰度值不变。
其中,执行单元,可以包括:
第二判断模块,用于判断所述卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在所述卷积数据为正值的像素点;
第三执行模块,用于如果存在所述卷积数据为正值的像素点,根据所述卷积数据为负值的像素点和所述卷积数据为正值的像素点利用亚像素点插值法计算得到与所述卷积数据对应的亚像素边缘点;
第三判断模块,用于判断所述卷积数据为负值的像素点的向上、向下、向左以及向右四个方向上是否存在多个所述卷积结果为正值的像素点;
第四执行模块,用于如果存在多个所述卷积结果为正值的像素点,分别计算得到多个与所述卷积数据对应的亚像素点,取多个与所述卷积数据对应的亚像素点的平均值为与所述卷积数据对应的亚像素边缘点。
第四判断模块,用于判断所述卷积数据为正值的像素点是否存在落在所述卷积数据为正值的像素点上的亚像素边缘点;
第五执行模块,用于如果不存在落在所述卷积数据为正值的像素点上的亚像素边缘点,选取所述卷积数据为正值的像素点的向上、向下、向左以及向右四个方向上的所述卷积数据为负的最大值的像素点为偏移点,将所述卷积数据为正值的像素点向所述偏移点偏移0.45个像素为所述卷积数据对应的亚像素边缘点。
本申请实施例提供的一种FPGA芯片包括存储器、处理器及存储在所述存储器上并可在处理器上运行的计算机程序,所述处理器通过所述计算机程序执行上述方法。在AOI系统中,先对图像进行轮廓提取,采用轮廓数据进行检测。AOI检测软件处理的4K*8K的图像,轮廓提取比较耗时,计算机对单帧进行轮廓提取的时间是600ms左右,是整个软件处理最耗时的部分,占整个处理时间的60%,本申请实施例可以实现在FPGA芯片中完成轮廓提取处理,不占用CPU的处理资源,扫描图像之后输入到计算机的就是轮廓图像,能够显著的提高软件检测效率。图14(a)为由C++模块所提供的二值化处理结果,图14(b)为本申请实施例所提供的二值化处理结果,图15(a)为由C++模块所提供的卷积处理结果,图15(b)为为本申请实施例所提供的卷积处理结果,通过对比可以看出,通过C++模块处理的二值化处理结果与通过本申请实施例提供的FPGA芯片处理的二值化处理结果基本一致,通过C++模块处理的卷积处理结果与通过本申请实施例提供的FPGA芯片处理的卷积处理结果基本一致。另外,得到的亚像素点坐标:除了边缘附近2个像素由于Log卷积结果有差异导致的坐标位置偏差最大的存在0.2左右的偏差,其他的偏差均在0.002误差以内,坐标精度满足使用需求,亚像素点梯度值比较:正常线路的边缘点梯度误差2度以内,可满足使用需求。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由所附的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。