一种圆柱形工件毛刺在线检测方法及系统转让专利

申请号 : CN202311006386.2

文献号 : CN116740057B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈咸忠陈炯

申请人 : 深圳市鹏基精密工业有限公司

摘要 :

本申请涉及一种圆柱形工件毛刺在线检测方法及系统,属于图像处理技术领域。方法首先基于各像素点确定一预设大小的邻域,计算出各像素点作为邻域中心点时的毛刺特征值,然后基于邻域内各像素点的毛刺特征值来计算邻域的毛刺覆盖率,再基于毛刺覆盖率计算邻域中心像素点的毛刺特征值,然后根据毛刺特征来优化sauvola算法中计算毛刺特征阈值的预设k值,再基于预设k值计算毛刺特征阈值,然后采用sauvola算法进行毛刺点的识别。由于是基于邻域来计算像素点的毛刺特征值,大大提升毛刺的检测效率和精准度。

权利要求 :

1.一种圆柱形工件毛刺在线检测方法,应用于圆柱形工件毛刺在线检测系统,其特征在于,包括:获取圆柱形工件的表面图像,并对表面图像进行预设处理,得到第一图像;

在第一图像上确定多个邻域,基于radon变换识别各邻域内的异常像素点,并计算异常像素点的阴影灰度跳变指数;

基于异常像素点,将邻域按照预设的规则划分为多个微区域;其中,异常像素点位于两个微区域的交界线上,且一条交界线上仅存在一个异常点;

基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率;

基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值;

基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值;

根据各像素点的毛刺特征阈值,使用sauvola局部二值化算法识别第一图像中具有毛刺特征的目标像素点,并标记目标像素点;

所述基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率的步骤,具体包括:确定各个微区域的角点,并基于各角点以及角点相邻像素点的灰度值计算角点区域的亮度;

基于各个角点区域的亮度计算角点渲染规则度;

基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率;

所述计算异常像素点的阴影灰度跳变指数,具体为:

基于异常像素点的灰度值以及预设相邻像素点的灰度值,计算异常像素点的阴影灰度跳变指数,其中,预设相邻像素点为异常像素点的8个方向的相邻像素点中、位于靠近光源方向的像素点;将预设相邻像素点的灰度值与异常点的灰度值的差值的指数函数的倒数,作为该异常点的阴影灰度跳变指数;

所述角点渲染规则度的获取步骤包括:

,式中,为邻域内角点周围8个方向相邻像素点数量;

为微区域的角点数量; 为微区域第j个角点的灰度值; 为邻域内,角点周围8个方向相邻像素点的灰度值;

所述毛刺覆盖率的获取步骤包括:

,式中, 为异常像素点的数量; 为第 个异

常点远离光源一侧的微区域内的平均灰度值; 为第 个异常点靠近光源一侧的微区域内的平均灰度值; 为第 个异常点远离光源一侧的微区域内的角点渲染规则度, 为第个异常点靠近光源一侧的微区域内的角点渲染规则度; 为第i个异常像素点的阴影灰度跳变指数。

2.根据权利要求1所述的一种圆柱形工件毛刺在线检测方法,其特征在于,在获取圆柱形工件的表面图像时,将圆柱形工件所在位置与相机所在位置的两个点连线得到第一直线,将圆柱形工件所在位置与光源所在位置两个点连线得到第二直线,第一直线与第二直线之间具有预设夹角。

3.根据权利要求1所述的一种圆柱形工件毛刺在线检测方法,其特征在于,所述在第一图像上确定多个邻域,具体为:以第一图像上的像素点为中心点,基于每个像素点分别确定一预设大小的邻域。

4.根据权利要求3所述的一种圆柱形工件毛刺在线检测方法,其特征在于,所述基于radon变换识别各邻域内的异常像素点的步骤,具体包括:基于邻域的中心点,确定经过中心点的多条投影线;

将邻域分别基于各投影线进行radon变换,得到多个投影序列,确定各投影序列中的异常点,基于异常点确定对应的异常像素点。

5.根据权利要求1所述的一种圆柱形工件毛刺在线检测方法,其特征在于,所述基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率的步骤,具体为:分别计算各微区域的平均灰度值;

基于异常像素点两侧的两个微区域平均灰度值和角点渲染规则度,计算各个异常像素点两侧的两个微区域的灰度变化特征值;

基于各个异常像素点两侧的两个微区域的灰度变化特征值和异常像素点的阴影灰度跳变指数,计算邻域的毛刺覆盖率。

6.根据权利要求1所述的一种圆柱形工件毛刺在线检测方法,其特征在于,所述基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值的步骤,具体包括:基于邻域内所有像素点所对应邻域的毛刺覆盖率,计算邻域内所有像素点的毛刺覆盖率均值;

基于邻域中心像素点对应邻域的毛刺覆盖率和邻域内所有像素点的毛刺覆盖率均值计算邻域中心像素点的毛刺特征值。

7.根据权利要求1所述的一种圆柱形工件毛刺在线检测方法,其特征在于,所述基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值的步骤,具体为:对像素点对应的邻域内,各像素点的毛刺特征值进行回归,得到回归值;

基于回归值确定预设k值;

按照sauvola算法的毛刺特征阈值计算公式分别计算各像素点对应的毛刺特征阈值。

8.一种圆柱形工件毛刺在线检测系统,其特征在于,包括图像获取部件、异常点识别计算部件、微区域划分部件、毛刺覆盖率计算部件、毛刺特征值计算部件、毛刺特征阈值确定部件和识别标记部件,其中:图像获取部件,用于获取圆柱形工件的表面图像,并对表面图像进行预设处理,得到第一图像;

异常点识别计算部件,用于在第一图像上确定多个邻域,基于radon变换识别各邻域内的异常像素点,并计算异常像素点的阴影灰度跳变指数;

微区域划分部件,用于基于异常像素点,将邻域按照预设的规则划分为多个微区域;其中,异常像素点位于两个微区域的交界线上,且一条交界线上仅存在一个异常点;

毛刺覆盖率计算部件,用于基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率;

毛刺特征值计算部件,用于基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值;

毛刺特征阈值确定部件,用于基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值;

识别标记部件,用于根据各像素点的毛刺特征阈值,使用sauvola局部二值化算法识别第一图像中具有毛刺特征的目标像素点,并标记目标像素点;

所述基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率的步骤,具体包括:确定各个微区域的角点,并基于各角点以及角点相邻像素点的灰度值计算角点区域的亮度;

基于各个角点区域的亮度计算角点渲染规则度;

基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率;

所述计算异常像素点的阴影灰度跳变指数,具体为:

基于异常像素点的灰度值以及预设相邻像素点的灰度值,计算异常像素点的阴影灰度跳变指数,其中,预设相邻像素点为异常像素点的8个方向的相邻像素点中、位于靠近光源方向的像素点;将预设相邻像素点的灰度值与异常点的灰度值的差值的指数函数的倒数,作为该异常点的阴影灰度跳变指数;

所述角点渲染规则度的获取步骤包括:

,式中,为邻域内角点周围8个方向相邻像素点数量;

为微区域的角点数量; 为微区域第j个角点的灰度值; 为邻域内,角点周围8个方向相邻像素点的灰度值;

所述毛刺覆盖率的获取步骤包括:

,式中, 为异常像素点的数量; 为第 个异

常点远离光源一侧的微区域内的平均灰度值; 为第 个异常点靠近光源一侧的微区域内的平均灰度值; 为第 个异常点远离光源一侧的微区域内的角点渲染规则度, 为第个异常点靠近光源一侧的微区域内的角点渲染规则度; 为第i个异常像素点的阴影灰度跳变指数。

说明书 :

一种圆柱形工件毛刺在线检测方法及系统

技术领域

[0001] 本申请涉及图像处理技术领域,特别是涉及一种圆柱形工件毛刺在线检测方法及系统。

背景技术

[0002] 机械零件上普遍存在毛刺,残留的毛刺不仅会影响工件的质量,还会直接影响产品的加工精度,因此,在零件加工前,对零件进行毛刺的检测具有非常大的必要性。
[0003] 对于圆柱形工件来说,相较于其他工件,圆柱形工件切削过程更为复杂。由于通常会在相同的位置进行多次切削,导致圆柱形工件会形成一条或多条沿着切割轨迹重复分布、长度也相对较长的毛刺。
[0004] 传统检测毛刺的方法是根据图像处理技术来实现,其中最常见的方法是采用全局阈值算法将整个图像二值化,从而得到图像中的毛刺区域。但是由于圆柱形工件表面的毛刺的分布并不均匀,且圆柱形工件表面具有一定的弯曲程度,导致会出现一些反光区域,这将导致对整个图像的整体进行二值化分割时,可能导致部分毛刺检测不出来。

发明内容

[0005] 基于此,有必要针对现有的全局阈值算法在对圆柱形工件进行毛刺检测时,由于圆柱形工件表面的毛刺的分布并不均匀,且圆柱形工件表面具有一定的弯曲程度,导致会出现一些反光区域,可能导致部分毛刺检测不出来的问题,提供一种圆柱形工件毛刺在线检测方法及系统。
[0006] 本申请第一方面提供一种圆柱形工件毛刺在线检测方法,应用于圆柱形工件毛刺在线检测系统,包括:
[0007] 获取圆柱形工件的表面图像,并对表面图像进行预设处理,得到第一图像;
[0008] 在第一图像上确定多个邻域,基于radon变换识别各邻域内的异常像素点,并计算异常像素点的阴影灰度跳变指数;
[0009] 基于异常像素点,将邻域按照预设的规则划分为多个微区域;其中,异常像素点位于两个微区域的交界线上,且一条交界线上仅存在一个异常点;
[0010] 基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率;
[0011] 基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值;
[0012] 基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值;
[0013] 根据各像素点的毛刺特征阈值,使用sauvola局部二值化算法识别第一图像中具有毛刺特征的目标像素点,并标记目标像素点。
[0014] 在其中一个实施例中,在获取圆柱形工件的表面图像时,将圆柱形工件所在位置与相机所在位置的两个点连线得到第一直线,将圆柱形工件所在位置与光源所在位置两个点连线得到第二直线,第一直线与第二直线之间具有预设夹角。
[0015] 在其中一个实施例中,所述在第一图像上确定多个邻域,具体为:
[0016] 以第一图像上的像素点为中心点,基于每个像素点分别确定一预设大小的邻域。
[0017] 在其中一个实施例中,所述基于radon变换识别各邻域内的异常像素点的步骤,具体包括:
[0018] 基于邻域的中心点,确定经过中心点的多条投影线;
[0019] 将邻域分别基于各投影线进行radon变换,得到多个投影序列,确定各投影序列中的异常点,基于异常点确定对应的异常像素点。
[0020] 在其中一个实施例中,所述计算异常像素点的阴影灰度跳变指数,具体为:
[0021] 基于异常像素点的灰度值以及预设相邻像素点的灰度值,计算异常像素点的阴影灰度跳变指数,其中,预设相邻像素点为异常像素点的8个方向的相邻像素点中、位于靠近光源方向的像素点。
[0022] 在其中一个实施例中,所述基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率的步骤,具体包括:
[0023] 确定各个微区域的角点,并基于各角点以及角点相邻像素点的灰度值计算角点区域的亮度;
[0024] 基于各个角点区域的亮度计算角点渲染规则度;
[0025] 基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率。
[0026] 在其中一个实施例中,所述基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率的步骤,具体为:
[0027] 分别计算各微区域的平均灰度值;
[0028] 基于异常像素点两侧的两个微区域平均灰度值和角点渲染规则度,来计算各个异常像素点两侧的两个微区域的灰度变化特征值;
[0029] 基于各个异常像素点两侧的两个微区域的灰度变化特征值和异常像素点的阴影灰度跳变指数来计算邻域的毛刺覆盖率。
[0030] 在其中一个实施例中,所述基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值的步骤,具体包括:
[0031] 基于所有像素点分别计算出以该像素点作为邻域中心点时,邻域的毛刺覆盖率,得到像素点所对应邻域的毛刺覆盖率;
[0032] 基于邻域内所有像素点所对应邻域的毛刺覆盖率,计算邻域内所有像素点的毛刺覆盖率均值;
[0033] 基于邻域中心像素点对应邻域的毛刺覆盖率和邻域内所有像素点的毛刺覆盖率均值计算邻域中心像素点的毛刺特征值。
[0034] 在其中一个实施例中,所述基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值的步骤,具体为:
[0035] 对像素点对应的邻域内,各像素点的毛刺特征值进行回归,得到回归值;
[0036] 基于回归值确定预设k值;
[0037] 按照sauvola算法的毛刺特征阈值计算公式分别计算各像素点对应的毛刺特征阈值。
[0038] 本申请第二方面提供一种圆柱形工件毛刺在线检测系统,包括图像获取部件、异常点识别计算部件、微区域划分部件、毛刺覆盖率计算部件、毛刺特征值计算部件、毛刺特征阈值确定部件和识别标记部件,其中:
[0039] 图像获取部件,用于获取圆柱形工件的表面图像,并对表面图像进行预设处理,得到第一图像;
[0040] 异常点识别计算部件,用于在第一图像上确定多个邻域,基于radon变换识别各邻域内的异常像素点,并计算异常像素点的阴影灰度跳变指数;
[0041] 微区域划分部件,用于基于异常像素点,将邻域按照预设的规则划分为多个微区域;其中,异常像素点位于两个微区域的交界线上,且一条交界线上仅存在一个异常点;
[0042] 毛刺覆盖率计算部件,用于基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率;
[0043] 毛刺特征值计算部件,用于基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值;
[0044] 毛刺特征阈值确定部件,用于基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值;
[0045] 识别标记部件,用于根据各像素点的毛刺特征阈值,使用sauvola局部二值化算法识别第一图像中具有毛刺特征的目标像素点,并标记目标像素点。
[0046] 根据本申请实施例的圆柱形工件毛刺在线检测方法及系统,首先基于各像素点确定一预设大小的邻域,计算出各像素点作为邻域中心点时的毛刺特征值,然后基于邻域内各像素点的毛刺特征值来计算邻域的毛刺覆盖率,再基于毛刺覆盖率计算邻域中心像素点的毛刺特征值,然后根据毛刺特征来优化sauvola算法中计算毛刺特征阈值的预设k值,再基于预设k值计算毛刺特征阈值,然后采用sauvola算法进行毛刺点的识别,这样,由于是基于邻域来计算像素点的毛刺特征值的,因而,即使存在反光区域,也可以准确识别出毛刺点,大大提升毛刺的检测效率和精准度。

附图说明

[0047] 图1为本申请一实施例的圆柱形工件毛刺在线检测方法的流程示意图;
[0048] 图2为本申请一实施例的圆柱形工件毛刺在线检测方法中各邻域内异常像素点的识别方法的流程示意图;
[0049] 图3为本申请一实施例的圆柱形工件毛刺在线检测方法中邻域的毛刺覆盖率的计算方法的流程示意图;
[0050] 图4为本申请一实施例的圆柱形工件毛刺在线检测方法中邻域中心像素点的毛刺特征值的计算方法的流程示意图;
[0051] 图5为本申请一实施例的圆柱形工件毛刺在线检测系统的框架结构图;
[0052] 图6为本申请一实施例的圆柱形工件毛刺在线检测系统的毛刺覆盖率计算部件的框架结构图;
[0053] 图7为本申请一实施例的圆柱形工件毛刺在线检测系统的毛刺特征值计算部件的框架结构图。

具体实施方式

[0054] 为了便于理解本申请,下面将参照相关附图对本申请进行更全面的描述。附图中给出了本申请的较佳实施方式。但是,本申请可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本申请的公开内容理解的更加透彻全面。
[0055] 除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本申请。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
[0056] 参阅图1,示例性的示出了本申请一实施例的圆柱形工件毛刺在线检测方法的流程示意图,根据本申请实施例的圆柱形工件毛刺在线检测方法由圆柱形工件毛刺在线检测系统执行,圆柱形工件毛刺在线检测系统能够根据采集到的图像,对图像进行分析,以得到每个像素点的预设大小的邻域内的毛刺特征值,基于毛刺特征值来优化sauvola算法的k值,能够较为精准的识别出圆柱形工件上的毛刺。其中,该圆柱形工件毛刺在线检测系统可以是一个集成化的系统,还可以是控制该圆柱形工件毛刺在线检测系统运行的芯片。因此,在下文中,当提到圆柱形工件毛刺在线检测系统进行的操作时,也可以理解为控制圆柱形工件毛刺在线检测系统运行的芯片进行的操作。
[0057] 如图1所示的圆柱形工件毛刺在线检测方法可以包括步骤101 107,以下对这些步~骤进行详细的介绍。
[0058] 101:获取圆柱形工件的表面图像,并对表面图像进行预设处理,得到第一图像;
[0059] 根据本申请的实施例,通过图像识别的方式来检测圆柱形工件上的毛刺,因此,首先获取圆柱形工件的表面图像,例如,通过CCD相机获取圆柱形工件的表面图像。
[0060] 如果光源与相机在同一方向,则相机获取的图像上,在圆柱形工件的圆柱形中部位置会产生严重的反光,导致表面图像出现较大的反光区域,这些区域会使得原本较小的毛刺变得更加不明显,对毛刺检测结果产生较大的负面影响。根据本申请的实施例,将圆柱形工件所在位置与相机所在位置的两个点连线得到第一直线,将圆柱形工件所在位置与光源所在位置两个点连线得到第二直线,第一直线与第二直线之间具有预设夹角。在具体的实施例中,以相机所在位置为在圆柱形工件的正前方,光源位于圆柱形工件的右侧,采用右侧斜光照明。
[0061] 得到表面图像后,为了便于对图像进行分析,还可以对表面图像进行预处理。根据本申请的实施例,预处理包括将表面图像进行灰度转换处理,得到灰度图像。又由于采用侧边照明,会使得图像中右边较亮左边较暗或者左边较亮右边较暗,因此,预处理还包括图像增强处理。根据本申请的实施例,使用直方图均衡化算法对图像进行增强,以消除这种左右两边一边较亮一边较暗的影响,使得圆柱形工件表面的毛刺在图像中能够更加清晰识别出来。
[0062] 102:在第一图像上确定多个邻域,基于radon变换识别各邻域内的异常像素点,并计算异常像素点的阴影灰度跳变指数;
[0063] 毛刺作为圆柱形表面的凸起,其相对圆柱形表面较为突出,经过侧面光源的照射后,在有毛刺的地方会出现较亮的区域,且该较亮区域的背离光源的一侧会出现较暗的阴影区域。由于圆柱形工件上的毛刺通常是沿着圆柱形工件的长度方向分布的线状凸起,因此,反映在图像上,以毛刺所在线条,左右两侧出现明显的、具有亮度差的较亮区域和阴影区域。基于此,通过对第一图像进行分析,根据较亮区域和阴影区域的交界线来识别出毛刺在图像上的位置分布。
[0064] 在对第一图像进行分析,在第一图像上确定多个邻域时,具体为:以第一图像上的像素点为中心点来确定一个预设大小的邻域,得到多个邻域,因此,不同邻域之间可以存在重叠区域。具体地,在对一个像素点进行分析时,以该像素点作为中心点,确定一个预设大小的邻域。邻域的大小可以随着圆柱形工件的半径大小进行调整。在本申请的实施例中,邻域为一个正方形区域。例如,确定的邻域大小为7*7像素点,即每个邻域内包含49个像素点。
[0065] 确定邻域后,以邻域为单位对第一图像进行分析,利用radon变换识别各邻域内的异常像素点,然后计算异常像素点的阴影灰度跳变指数。
[0066] 图2示出了各邻域内异常像素点的识别方法。根据本申请的实施例,基于radon变换识别各邻域内的异常像素点,具体包括:
[0067] 201:基于邻域的中心点,确定经过中心点的多条投影线;
[0068] 基于邻域的中心点,可以得到经过中心点的若干条直线,从这若干条直线中确定多条投影线。根据本申请的实施例,任意两条相邻的投影线的夹角为5°。因此,只需要指定其中一条投影线,则其他投影线也随之确定。
[0069] 当然,相邻投影线之间的夹角不限于5°,但也不宜过大或过小,例如,不超过10°,但不低于3°为宜。
[0070] 202:将邻域分别基于各投影线进行radon变换,得到多个投影序列,识别各投影序列中的异常点,将异常点最多的投影序列确定为目标序列,基于目标序列中的异常点确定对应的异常像素点。
[0071] 确定投影线后,就可以将邻域基于各投影线进行radon变换,得到多个投影序列,每个投影序列包括多个点,每个点分别对应邻域内的一个或多个像素点。
[0072] 得到多个投影序列后,使用贝叶斯跳变算法对投影序列进行异常点检测,检测是否存在异常点。将多个投影序列的异常点按照从大到小进行排序,将异常点最多的投影序列作为目标序列,并确定目标序列中的异常点。贝叶斯跳变算法为现有技术,在此不赘述。
[0073] 确定目标序列后,目标序列的异常点也同步确定,就可以根据radon变换关系,得到异常点对应的异常像素点在邻域内的位置,即识别出异常像素点。
[0074] 在识别出异常像素点后,就可以单独对异常像素点进行分析,计算异常像素点的阴影灰度跳变指数。根据本申请的实施例,在计算异常像素点的阴影灰度跳变指数时,具体为:
[0075] 基于异常像素点的灰度值以及预设相邻像素点的灰度值,计算异常像素点的阴影灰度跳变指数,其中,预设相邻像素点为异常像素点的8个方向的相邻像素点中、位于靠近光源方向的像素点。
[0076] 识别出异常像素点后,由于异常像素点极为可能为具有毛刺特征的像素点,因此,对异常像素点以及预设相邻像素点的灰度值进行分析,分析这两个像素点是否符合较亮区域和阴影区域的分布特征。
[0077] 根据本申请的实施例,将预设相邻像素点的灰度值与异常点的灰度值的差值的指数函数的倒数,作为该异常点的阴影灰度跳变指数。具体的,异常点的阴影灰度跳变指数C的计算公式如下:
[0078]
[0079] 式中, 为异常点序列中第 个异常点的灰度值, 为预设相邻像素点的灰度值。
[0080] 由上式可知,如果预设相邻像素点的灰度值与异常像素点的灰度值的差值为负值,那么其指数函数值小于1,再求倒数后,得到的阴影灰度跳变指数C大于1,且,灰度值的差值越大,阴影灰度跳变指数C的值越大,说明该异常像素点越可能位于较亮区域和阴影区域的交界线上,即异常像素点越符合毛刺特征,邻域内越可能出现毛刺。
[0081] 103:基于异常像素点,将邻域按照预设的规则划分为多个微区域;其中,异常像素点位于两个微区域的交界线上,且一条交界线上仅存在一个异常点;
[0082] 由于图像可能存在噪声点,噪声点也可能符合较亮区域和阴影区域的交界这一特征,导致噪声点可能被误认为是毛刺特征点。因此,不能直接将异常像素点简单的作为毛刺特征点,而应当排除噪声点的影响。
[0083] 由于噪声点附近的灰度变化一般较不明显,且噪点一般较为聚集,因而,可以基于噪声点的这个特征,来排除噪声点的干扰。
[0084] 在排除噪声点的干扰时,首先对邻域按照预设的规则进行区域划分,得到多个微区域。在划分微区域时,首先基于异常像素点分别确定多个不同的直线,且这多个直线在邻域内不存在交点。这样,就在邻域内得到多个互不相交的线段,每个线段上仅存在一个异常像素点。然后,基于多个不同的直线在邻域内的线段与邻域的边界,得到多个微区域,不同微区域之间不存在重叠,所有微区域恰好拼接得到完整的邻域。例如,在具体的实施例中,可以根据各异常像素点,分别做多条平行线,多条平行线将邻域划分为多个微区域。
[0085] 104:基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率;
[0086] 划分微区域后,可以通过对微区域内像素点的灰度值分析,然后从邻域层面计算毛刺覆盖率,以排除噪声点的干扰。
[0087] 图3示出了邻域的毛刺覆盖率的计算方法,根据本申请的实施例,基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率,具体包括:
[0088] 301:确定各个微区域的角点,并基于各角点以及角点相邻像素点的灰度值计算角点区域的亮度;
[0089] 划分得到微区域后,各个微区域的范围即已确定,因而,可以识别确定各个微区域的角点。例如,可以采用Harris角点检测算法来检测角点。例如,当各个微区域为四边形时,则具有四个角点。按照不同的划分方式,各个微区域的角点数量可以相同或不同,两个微区域可以共用角点,例如,经过异常像素点的两条直线的交点恰好位于邻域的边线上。
[0090] 当角点确定后,角点的八个方向的相邻像素点也同步确定,获取角点及角点的八个方向的相邻像素点的灰度值,并基于各角点以及角点的相邻像素点的灰度值计算角点区域的亮度。
[0091] 根据本申请的实施例,将角点的所有相邻像素点的灰度值与角点的灰度值的差值之和,作为该角点区域的亮度。
[0092] 302:基于各个角点区域的亮度计算角点渲染规则度;
[0093] 计算得到各个角点区域的亮度,就可以基于各个角点区域的亮度计算角点渲染规则度。根据本申请的实施例,将各个微区域的角点区域的亮度之和,作为角点渲染规则度。即角点渲染规则度的计算公式如下:
[0094]
[0095] 式中,为邻域内角点周围8个方向相邻像素点数量;为微区域的角点数量;为微区域第j个角点的灰度值; 为邻域内,角点周围8个方向相邻像素点的灰度值。
[0096] 通过计算每个角点周围8个方向的相邻像素点与该角点的灰度值的差值之和,得到 ,用于表征该角点区域的亮度。如果该值越大,则表示相邻像素点比角点要亮,说明该角点为噪点;如果该值越小,表示相邻像素点与角点之间的灰度值相差比较混乱,有些比角点亮、有些比角点暗,所以该角点更可能为毛刺边缘的角点,而非噪点。
[0097] 对微区域的 角点区域的亮度求和,得到角点渲染规则度 ,角点渲染规则度越大,表示该微区域内,角点周围像素点的分布较亮,比较有规则,即该区域内可能不存在毛刺这种周围渲染不规则的角点。
[0098] 303:基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率。
[0099] 如前文所述,毛刺点的特征之一为在较亮区域和阴影区域的交界线上。而异常像素点位于微区域的交界线上,因而,可以通过比较异常像素点两侧的两个区域的灰度变化情况,来分析异常像素点的毛刺特征,进而分析整个邻域的毛刺覆盖率。
[0100] 根据本申请的实施例,在计算邻域的毛刺覆盖率时,在计算出各个微区域的角点渲染规则度之后,再分别计算各微区域的平均灰度值。然后,基于异常像素点两侧的两个微区域平均灰度值和角点渲染规则度,来计算各个异常像素点两侧的两个微区域的灰度变化特征值。最后,再基于各个异常像素点两侧的两个微区域的灰度变化特征值和异常像素点的阴影灰度跳变指数来计算邻域的毛刺覆盖率。
[0101] 根据本申请的实施例,邻域的毛刺覆盖率D的计算公式如下:
[0102]
[0103] 式中,m为异常像素点的数量; 为第 个异常点远离光源一侧的微区域内的平均灰度值; 为第个异常点靠近光源一侧的微区域内的平均灰度值; 为第个异常点远离光源一侧的微区域内的角点渲染规则度, 为第 个异常点靠近光源一侧的微区域内的角点渲染规则度; 为第i个异常像素点的阴影灰度跳变指数。
[0104] 通过对第 个异常像素点两侧区域的平均灰度值加以微区域内角点渲染规则度的影响,求其差值,得到用于表征该异常像素点两侧的微区域,在角点的亮度信息(角度渲染规则度)的影响下的灰度变化特征值,即:
[0105]
[0106] 该灰度变化特征值越大,该异常像素点为毛刺产生阴影区域的边界线上的点的可能性越大。
[0107] 通过将灰度变化特征值与异常像素点的阴影灰度跳变指数 相乘,得到异常像素点两侧区域的异常特征值,异常像素点两侧区域的异常特征值越大,表示该异常像素点越异常,且异常像素点两侧的微区域的灰度值也相差较大,即该异常像素点两侧的微区域出现毛刺区域可能性越大。
[0108] 通过对 个异常像素点两侧区域的异常特征值求平均值,得到该邻域的毛刺覆盖率 ,毛刺覆盖率 越大,表示该邻域内毛刺的覆盖程度较大。
[0109] 105:基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值;
[0110] 由于邻域的中心点可能不是毛刺点,但是邻域内存在其他毛刺点,导致在根据邻域的毛刺覆盖率 判断中心点是否是毛刺点时,产生较大的干扰。
[0111] 针对这种情况,为了表征该窗口内当前中心像素点的相较于窗口内其他点周围毛刺分布的情况。在分别基于所有像素点分别计算出以该像素点作为邻域中心点时,邻域的毛刺覆盖率,定义为像素点所对应邻域的毛刺覆盖率。然后,再基于各邻域,来计算邻域中心像素点的毛刺特征值。
[0112] 图4示出了邻域中心像素点的毛刺特征值的计算方法,根据本申请的实施例,基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值,具体包括:
[0113] 401:基于所有像素点分别计算出以该像素点作为邻域中心点时,邻域的毛刺覆盖率,得到像素点所对应邻域的毛刺覆盖率;
[0114] 在计算一个邻域的中心像素点的毛刺特征值时,首先确定邻域内各像素点所对应邻域的毛刺覆盖率。各像素点所对应邻域的毛刺覆盖率分别基于各像素点作为邻域中心点时所确定的邻域,按照步骤104的方法计算得到。
[0115] 402:基于邻域内所有像素点所对应邻域的毛刺覆盖率,计算邻域内所有像素点的毛刺覆盖率均值;
[0116] 计算出邻域内所有像素点所对应邻域的毛刺覆盖率,基于所有像素点所对应邻域的毛刺覆盖率,求平均值,得到邻域内所有像素点的毛刺覆盖率均值。
[0117] 403:基于邻域中心像素点对应邻域的毛刺覆盖率和邻域内所有像素点的毛刺覆盖率均值计算邻域中心像素点的毛刺特征值。
[0118] 根据本申请的实施例,将邻域中心像素点的毛刺覆盖率与邻域内所有像素点的毛刺覆盖率均值的比值,作为邻域中心像素点的毛刺特征值。即,邻域中心像素点的毛刺特征值V的计算公式如下:
[0119]
[0120] 式中, 表示邻域中心像素点对应邻域的毛刺覆盖率, 表示邻域内所有像素点的毛刺覆盖率均值。
[0121] 这样,可以分别计算出各个像素点作为邻域的中心像素点时的毛刺特征值。邻域中心像素点的毛刺特征值越大,说明该中心点为毛刺点的可能性越大。
[0122] 106:基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值;
[0123] 计算出各像素点作为邻域中心像素点时的毛刺特征值后,就可以基于各像素点的毛刺特征值,来对sauvola算法中每个像素点对应的毛刺特征阈值进行优化。
[0124] 根据本申请的实施例,首先对像素点对应的邻域内,各像素点的毛刺特征值进行回归,得到回归值,然后,基于回归值确定预设k值。根据本申请的实施例,预设k值的计算公式为 。
[0125] 计算出预设k值后,按照sauvola算法的毛刺特征阈值计算公式分别计算各像素点对应的毛刺特征阈值。其中,毛刺特征阈值计算公式为:
[0126]
[0127] 其中, 是标准方差的动态范围,这里取128; 为当前像素点确定的邻域内的灰度均值,为当前像素点邻域内像素点的灰度值的标准方差。
[0128] 由上式可知,像素点的毛刺特征值V越大,则预设k值越小,对应的毛刺特征阈值T越小。当前像素点的毛刺特征阈值T越小,该像素点越容易判断为毛刺点。
[0129] 107:根据各像素点的毛刺特征阈值,使用sauvola局部二值化算法识别第一图像中具有毛刺特征的目标像素点,并标记目标像素点。
[0130] 计算出第一图像中每个像素点的毛刺特征阈值后,就可以使用sauvola局部二值化算法来识别第一图像中具有毛刺特征的目标像素点。sauvola局部二值化算法为现有技术,在此不再赘述。识别出目标像素点后,将目标像素点标记出来,标记后的目标像素点的图案,即为第一图像中毛刺的位置。
[0131] 根据本申请实施例的圆柱形工件毛刺在线检测方法,首先基于各像素点确定一预设大小的邻域,计算出各像素点作为邻域中心点时的毛刺特征值,然后基于邻域内各像素点的毛刺特征值来计算邻域的毛刺覆盖率,再基于毛刺覆盖率计算邻域中心像素点的毛刺特征值,然后根据毛刺特征来优化sauvola算法中计算毛刺特征阈值的预设k值,再基于预设k值计算毛刺特征阈值,然后采用sauvola算法进行毛刺点的识别,这样,由于是基于邻域来计算像素点的毛刺特征值,因而,即使存在反光区域,也可以准确识别出毛刺点,大大提升毛刺的检测效率和精准度。
[0132] 需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
[0133] 请参阅图5,本申请还提供一种圆柱形工件毛刺在线检测系统50,包括图像获取部件510、异常点识别计算部件520、微区域划分部件530、毛刺覆盖率计算部件540、毛刺特征值计算部件550、毛刺特征阈值确定部件560和识别标记部件570,其中:
[0134] 图像获取部件510,用于获取圆柱形工件的表面图像,并对表面图像进行预设处理,得到第一图像;
[0135] 异常点识别计算部件520,用于在第一图像上确定多个邻域,基于radon变换识别各邻域内的异常像素点,并计算异常像素点的阴影灰度跳变指数;
[0136] 微区域划分部件530,用于基于异常像素点,将邻域按照预设的规则划分为多个微区域;其中,异常像素点位于两个微区域的交界线上,且一条交界线上仅存在一个异常点;
[0137] 毛刺覆盖率计算部件540,用于基于微区域内像素点的灰度值和异常像素点的阴影灰度跳变指数计算邻域的毛刺覆盖率;
[0138] 毛刺特征值计算部件550,用于基于邻域内各像素点所对应邻域的毛刺覆盖率,计算邻域中心像素点的毛刺特征值;
[0139] 毛刺特征阈值确定部件560,用于基于各像素点的毛刺特征值确定sauvola算法中每个像素点对应的毛刺特征阈值;
[0140] 识别标记部件570,用于根据各像素点的毛刺特征阈值,使用sauvola局部二值化算法识别第一图像中具有毛刺特征的目标像素点,并标记目标像素点。
[0141] 根据本申请的实施例,图像获取部件510在获取圆柱形工件的表面图像时,将圆柱形工件所在位置与相机所在位置的两个点连线得到第一直线,将圆柱形工件所在位置与光源所在位置两个点连线得到第二直线,第一直线与第二直线之间具有预设夹角。
[0142] 根据本申请的实施例,异常点识别计算部件520在第一图像上确定多个邻域时,具体为:以第一图像上的像素点为中心点,基于每个像素点分别确定一预设大小的邻域。
[0143] 根据本申请的实施例,异常点识别计算部件520,在基于radon变换识别各邻域内的异常像素点时,具体用于:
[0144] 基于邻域的中心点,确定经过中心点的多条投影线;
[0145] 将邻域分别基于各投影线进行radon变换,得到多个投影序列,识别各投影序列中的异常点,将异常点最多的投影序列确定为目标序列,基于目标序列中的异常点确定对应的异常像素点。
[0146] 根据本申请的实施例,异常点识别计算部件520,在计算异常像素点的阴影灰度跳变指数时,具体用于:
[0147] 基于异常像素点的灰度值以及预设相邻像素点的灰度值,计算异常像素点的阴影灰度跳变指数,其中,预设相邻像素点为异常像素点的8个方向的相邻像素点中、位于靠近光源方向的像素点。
[0148] 请参阅图6,根据本申请的实施例,毛刺覆盖率计算部件540包括角点亮度计算组件610、角点渲染规则度计算组件620和第一计算组件630,其中:
[0149] 角点亮度计算组件610,用于确定各个微区域的角点,并基于各角点以及角点相邻像素点的灰度值计算角点区域的亮度;
[0150] 角点渲染规则度计算组件620,用于基于各个角点区域的亮度计算角点渲染规则度;
[0151] 第一计算组件630,用于基于异常像素点的阴影灰度跳变指数、角点渲染规则度以及微区域的平均灰度值计算邻域的毛刺覆盖率。
[0152] 在其中一些实施例中,第一计算组件630包括平均灰度计算模块632、灰度变化特征值计算模块634和覆盖率计算模块636,其中:
[0153] 平均灰度计算模块632,用于分别计算各微区域的平均灰度值;
[0154] 灰度变化特征值计算模块634,用于基于异常像素点两侧的两个微区域平均灰度值和角点渲染规则度,来计算各个异常像素点两侧的两个微区域的灰度变化特征值;
[0155] 覆盖率计算模块636,用于基于各个异常像素点两侧的两个微区域的灰度变化特征值和异常像素点的阴影灰度跳变指数来计算邻域的毛刺覆盖率。
[0156] 请参阅图7,根据本申请的实施例,毛刺特征值计算部件550包括邻域计算组件710、均值计算组件720和特征值计算组件730,其中:
[0157] 邻域计算组件710,用于基于所有像素点分别计算出以该像素点作为邻域中心点时,邻域的毛刺覆盖率,得到像素点所对应邻域的毛刺覆盖率;
[0158] 均值计算组件720,用于基于邻域内所有像素点所对应邻域的毛刺覆盖率,计算邻域内所有像素点的毛刺覆盖率均值;
[0159] 特征值计算组件730,用于基于邻域中心像素点对应邻域的毛刺覆盖率和邻域内所有像素点的毛刺覆盖率均值计算邻域中心像素点的毛刺特征值。
[0160] 根据本申请的实施例,毛刺特征阈值确定部件560具体用于:首先对像素点对应的邻域内,各像素点的毛刺特征值进行回归,得到回归值;然后基于回归值确定预设k值;在按照sauvola算法的毛刺特征阈值计算公式分别计算各像素点对应的毛刺特征阈值。
[0161] 本申请一实施例还提供一种机器可读存储介质,其上存储有计算机程序,其中所述计算机程序在由处理器执行时实现上述任一实施例所述的方法。
[0162] 所述系统/计算机装置集成的部件/模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施方式方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,所述计算机程序在被处理器执行时,可实现上述各个方法实施方式的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读存储介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0163] 本申请还提供一种计算机设备,包括:处理器;存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行上述任一实施例所述的方法。
[0164] 在本申请所提供的几个具体实施方式中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施方式仅仅是示意性的,例如,所述部件的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
[0165] 另外,在本申请各个实施例中的各功能模块/部件可以集成在相同处理模块/部件中,也可以是各个模块/部件单独物理存在,也可以两个或两个以上模块/部件集成在相同模块/部件中。上述集成的模块/部件既可以采用硬件的形式实现,也可以采用硬件加软件功能模块/部件的形式实现。
[0166] 对于本领域技术人员而言,显然本申请实施例不限于上述示范性实施例的细节,而且在不背离本申请实施例的精神或基本特征的情况下,能够以其他的具体形式实现本申请实施例。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请实施例的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请实施例内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统、装置或终端权利要求中陈述的多个单元、模块或装置也可以由同一个单元、模块或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
[0167] 以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。