图像滤波

滤波是一类图像处理算法。该类算法通过特定函数对输入图像进行预处理,去除图像中的噪声,进而突出或抑制图像中的特定特征。在不少场景下,图像滤波是图像预处理中不可或缺的操作,其处理效果的好坏将直接影响后续图像处理/图像分析的有效性和可靠性。

说明:

图像处理中的噪声指图像采集或传输过程中所受的随机信号干扰。具体表现为图像信息或者像素亮度的随机变化。

本节内容包含:

模块原理

图像滤波模块提供的图像滤波算法包括:

高斯滤波

滤波时为各像素点逐个生成检测窗口(即下图中的橙框),目标像素点位于窗口中心(即下图中的灰色像素点)。滤波后目标像素点的灰度值,通过对窗口内各像素点的灰度值加权计算得出。

下文参数配置中提及的高斯滤波核可定义上述窗口的尺寸。

图 1 滤波窗口(即滤波核)

加权计算的具体权重根据下图所示的高斯滤波曲线定义。算法会根据窗口尺寸自动调整曲线的高度和坡度,得到窗口内每个像素点权重σ。由图中的高斯滤波曲线可知,距离窗口中心的像素点越近,曲线越高,权重越大。

图 2 高斯滤波曲线

目标像素点的灰度值计算公式如下。该公式中graypixel表示目标像素点的灰度值,σi表示窗口中每个像素点的权重,grayi表示窗口中每个像素点的灰度值。

图 3 高斯滤波计算公式
中值滤波

滤波时为各像素点逐个生成检测窗口(即上文滤波窗口图中的橙框),目标像素点位于窗口中心(即上文滤波窗口图中的灰色像素点)。滤波后目标像素点的灰度值为窗口内像素点灰度值的中值。

下文参数配置中提及的滤波核宽度滤波核高度可定义上述检测窗口的尺寸。

均值滤波

滤波时为各像素点逐个生成检测窗口(即上文滤波窗口图中的橙框),目标像素点位于窗口中心(即上文滤波窗口图中的灰色像素点)。滤波后目标像素点的灰度值为窗口内像素点的灰度均值。

下文参数配置中提及的滤波核宽度滤波核高度可定义上述检测窗口的尺寸。

取反滤波

对每个像素点进行颜色取反,如对灰度范围0~255内的像素值10取反,取反后像素值为245。从视觉上看,原黑色的像素取反后变为白色,白色像素变为黑色。该滤波方式常用于切换图像的背景和目标。

边缘提取

边缘提取的算法工作流如下:

图 4 边缘提取算法工作流
  1. 计算X和Y方向的梯度图像。

    相邻像素点发生灰度跳变的点为边缘。假设滤波窗口如下图所示,窗口内左右像素相减,差值越大说明边缘越明显。滤波窗口和图像卷积运算可得到X方向的梯度图;同理,可得到Y方向梯度图。

    图 5 梯度图计算卷积核
  2. 合成梯度幅值图像。

    梯度幅值图像由梯度X和Y图像合成,表示图像梯度边缘强度。该图中各像素点灰度值的计算公式如下。

    图 6 梯度幅值图计算公式
    该公式中:
    • Grad(i,j)表示合成图像中i行j列像素点的灰度值。

    • dx(i,j) 表示X方向梯度图像i行j列像素点的灰度值。

    • dy(i,j) 表示Y方向梯度图像i行j列像素点的灰度值。

    该步骤得到的梯度幅值图的边缘不是单像素边缘且包含较多对比度较弱的边缘,需要后续计算将边缘转换为单像素边缘且仅保留强对比度边缘。

  3. 对梯度幅值图像进行非极大值抑制,保证边缘为单像素点。

    非极大值抑制的目的是获取梯度方向上幅值最大的边缘点。若边缘点不是梯度方向上最大值,则删除该边缘点。

  4. 进行双滞后阈值计算,筛选真正的边缘点,对应的灰度值为255。

    具体筛选规则为:如果像素点梯度幅值大于预设的高阈值,则为强边缘,即一定是边缘点;如果在低阈值和高阈值之间则为弱边缘,即可能为边缘点;当弱边缘的8邻域存在强边缘,则将弱边缘变为强边缘,该操作可有效保证边缘的连续性。

    该计算过程涉及的高低阈值,可通过下文参数配置中提及的边缘阈值范围定义。

使用方法

以下对该模块的使用方法分为前后序模块、主要配置步骤和应用示例这三个方面进行介绍。

前后序模块

在流程中的,图像滤波模块对前后序模块无特定要求。

主要配置步骤

在流程中调用图像滤波模块后,该模块的主要配置步骤如下:

  1. 执行一次流程,使图像滤波模块获取图像源模块采集的图像。

  2. 运行参数页签选择合适的图像滤波类型

  3. 基本参数页签设置基本参数

  4. (可选)单击该模块配置窗口下方的执行连续执行,查看滤波效果。如效果不理想,调整参数取值,直至滤波效果满足需求。

图 7 图像滤波配置窗口
应用示例

以下示例通过图像增强图像滤波模块去除图像噪声,使工件边缘更加清晰平滑。后序通过轮廓匹配匹配特征圆环,再将匹配特征传递至圆查找,进行同心圆检测。

图 8 同心圆测量前的图像预处理
图 9 示例中的图像预处理

参数配置

以下仅介绍该模块的运行参数详情。通过配置运行参数,可定义当前模块如何处理输入的数据。

说明:

该模块的运行参数为图像滤波类型,具体选项如下:

高斯滤波

属于低通滤波器。可对图像进行平滑,抑制噪声,尤其是高斯噪声。具体原理参见上文模块原理中提及的高斯滤波

高斯滤波核

即上文模块原理中提及的滤波窗口的大小,取值范围1~101。该值越大,过滤的噪点尺寸越大,丢失的高频信息越多;表现为图像失焦效果越明显,即图像越模糊。

图 10 原图
图 11 高斯滤波核为15*15
中值滤波

属于非线性滤波器。可平滑图像,抑制灰度值明显异于背景的噪声。相比均值滤波和高斯滤波,保边能力更强,但耗时更长。

滤波窗口越大(由滤波核高度和宽度定义),过滤的噪点尺寸越大,丢失的高频信息越多;表现为图像失焦效果越明显,即图像越模糊。

滤波核高度

滤波窗口的高度。

滤波核宽度

滤波窗口的宽度。

图 12 原图
图 13 中值滤波核为15*15
均值滤波

属于低通滤波器。可对图像进行平滑,抑制噪声。具体原理见上文模块原理中提及的均值滤波

滤波窗口越大(由滤波核高度和宽度定义),过滤的噪点尺寸越大,丢失的高频信息越多;表现为图像失焦效果越明显,即图像越模糊。

滤波核高度

滤波窗口的高度。

滤波核宽度

滤波窗口的宽度。

图 14 原图
图 15 均值滤波核为15*15
取反

该参数详情参见上文模块原理中提及的取反滤波

图 16 原图
图 17 取反滤波效果
边缘提取

将图像边缘点的灰度值转换为255,非边缘点灰度值转换为0(即背景)。该算法可提取边缘阈值范围内的单像素点边缘。

边缘阈值范围

仅提取边缘梯度阈值大于该值的边缘点。取值范围0~255。

数值越大,抗噪能力越强,得到的边缘数量越少,甚至导致目标边缘点被筛除。

图 18 原图
图 19 阈值范围60~125

模块结果

该模块输出结果中各项参数详情,请参见图像滤波模块的输出结果