滤波在工业视觉领域的应用及代码分析

摘要: 本文详细阐述了滤波在工业视觉领域的应用。首先介绍了工业视觉系统的基本构成与工作原理,以及滤波在其中的重要性。接着深入探讨了多种常见滤波方法,包括均值滤波、中值滤波、高斯滤波等在图像预处理中的应用,如去除噪声、平滑图像等,分析了它们的原理、算法实现及优缺点。随后论述了滤波在图像特征提取与目标识别方面的作用,以及在工业视觉系统的质量检测、尺寸测量、机器人视觉导航等具体应用场景中的应用实例与效果。最后对滤波在工业视觉领域的未来发展趋势进行了展望,旨在为工业视觉技术相关的研究人员、工程师等提供全面深入的滤波应用知识参考,促进工业视觉技术的进一步发展与创新。

一、引言

工业视觉系统作为现代工业自动化生产中的关键技术之一,能够模拟人类视觉功能,对工业生产过程中的产品、设备、环境等进行非接触式的检测、测量、识别与控制。在工业视觉系统中,图像数据的质量直接影响到后续的分析与决策结果。然而,由于工业生产环境的复杂性,如光照变化、机械振动、电磁干扰等因素,获取的图像往往会受到噪声污染,图像质量下降。滤波技术作为一种有效的图像处理手段,能够去除噪声、平滑图像、增强图像特征等,从而提高工业视觉系统的可靠性与准确性,在工业视觉领域有着极为广泛的应用。

二、工业视觉系统概述

(一)工业视觉系统的构成
工业视觉系统一般由图像采集设备(如工业相机、镜头、光源等)、图像处理单元(如计算机或专用图像处理芯片)以及执行机构(如机械臂、分拣装置等)组成。图像采集设备负责获取目标物体的图像信息,图像处理单元对采集到的图像进行分析处理,提取有用的信息并做出决策,执行机构根据图像处理单元的指令完成相应的动作,如产品的分拣、装配、检测结果的标记等。

(二)工业视觉系统的工作原理
其工作过程通常包括图像采集、图像预处理、特征提取、目标识别与决策控制等步骤。图像采集是通过相机在特定的光照条件下对目标物体进行拍摄,获取数字图像。图像预处理阶段主要是对采集到的图像进行滤波、灰度变换、图像增强等操作,以改善图像质量,便于后续处理。特征提取是从预处理后的图像中提取出能够表征目标物体的特征信息,如边缘、纹理、形状等。目标识别则是根据提取的特征信息,利用模式识别算法对目标物体进行分类与识别。最后,根据识别结果,决策控制模块控制执行机构完成相应的任务。

(三)滤波在工业视觉系统中的重要性
在工业视觉系统中,噪声会严重干扰图像的清晰度与准确性,导致特征提取困难、目标识别错误等问题。滤波能够有效地去除图像中的噪声,提高图像的信噪比,使图像更加清晰、平滑,从而为后续的特征提取、目标识别等操作提供良好的基础。同时,合适的滤波方法还可以在一定程度上保留图像的边缘和细节信息,避免过度平滑而丢失重要信息,对于提高工业视觉系统的整体性能具有至关重要的作用。

三、常见滤波方法及其在图像预处理中的应用

(一)均值滤波

  1. 原理
    均值滤波是一种简单的线性滤波方法,它通过计算图像中每个像素邻域内像素值的平均值来代替该像素的值。设图像中某像素点(x,y),其邻域大小为m\times n,则滤波后的像素值g(x,y)=\frac{1}{mn}\sum_{(i,j)\in S}f(i,j),其中S为的邻域,(x,y)为邻域内像素点的原始值。
  2. 算法实现
    在编程实现中,可以使用嵌套循环遍历图像的每个像素点,对于每个像素点确定其邻域范围,计算邻域内像素值的总和并求平均,然后将平均后的像素值赋给当前像素点。
  3. 优缺点
    优点是算法简单,计算速度快,对于椒盐噪声等具有一定的平滑效果。缺点是会使图像变得模糊,尤其是在图像边缘部分,容易丢失边缘细节信息。在工业视觉中,适用于对图像细节要求不高且噪声分布较为均匀的情况,如一些大面积背景区域的平滑处理。

(二)中值滤波

  1. 原理
    中值滤波是一种非线性滤波方法,它将图像中每个像素点的邻域像素值进行排序,然后取其中值作为该像素点的滤波后的值。对于像素点(x,y)及其邻域S,先将邻域内的像素值从小到大排序,然后取中间位置的像素值作为g(x,y)。
  2. 算法实现
    实现时同样需要遍历图像像素点,确定邻域后对邻域内像素值排序,选择中值。可以采用快速排序等高效的排序算法来提高计算效率。
  3. 优缺点
    中值滤波的优点是对椒盐噪声有非常好的抑制效果,能够在去除噪声的同时较好地保留图像边缘细节。缺点是对于一些复杂的噪声模型效果可能不理想,且计算量相对均值滤波较大。在工业视觉中,常用于处理含有椒盐噪声且边缘信息较为重要的图像,如电子元件表面缺陷检测中的图像预处理。

(三)高斯滤波

  1. 原理
    高斯滤波基于二维高斯函数G(x,y)=\frac{1}{2\pi\sigma^{2}}e^{-\frac{x^{2}+y^{2}}{2\sigma^{2}}},其中\sigma为标准差。它通过对图像与高斯函数进行卷积运算来实现滤波。对于图像中的每个像素点,将其邻域内的像素值与高斯函数加权求和得到滤波后的像素值,权重由高斯函数确定,离中心像素越远的像素权重越小。
  2. 算法实现
    首先生成与图像大小和滤波核大小相匹配的高斯卷积核,然后将卷积核与图像进行卷积操作。卷积操作可以通过双重循环实现,对于图像中的每个像素点,将其与卷积核对应元素相乘并求和。
  3. 优缺点
    高斯滤波的优点是能够有效地平滑图像,对高斯噪声有较好的抑制效果,并且可以通过调整标准差\sigma来控制平滑程度,在平滑图像的同时能够较好地保留图像的整体轮廓和细节。缺点是计算量较大,尤其是对于大尺寸图像和大尺寸滤波核。在工业视觉中,广泛应用于各种需要平滑图像且对图像质量要求较高的场景,如精密零件的表面检测、印刷品质量检测等。

(四)双边滤波

  1. 原理
    双边滤波是一种非线性的滤波方法,它不仅考虑了像素间的空间距离,还考虑了像素间的灰度相似性。对于像素点(x,y),其滤波后的像素值g(x,y)=\frac{\sum_{(i,j)\in S}w_{s}(i,j)w_{r}(i,j)f(i,j)}{\sum_{(i,j)\in S}w_{s}(i,j)w_{r}(i,j)},其中w_{s}(i,j)是空间域权重,与像素点(i,j)到(x,y)的距离有关,w_{r}(i,j)是灰度域权重,与像素点(i,j)和(x,y)的灰度差值有关。
  2. 算法实现
    在实现过程中,需要计算空间域和灰度域的权重矩阵,然后根据上述公式进行像素值的加权求和计算。计算权重矩阵时需要遍历图像像素点并计算距离和灰度差值相关的权重值。
  3. 优缺点
    双边滤波的优点是在平滑图像的同时能够很好地保留图像边缘信息,对于边缘和纹理丰富的图像有较好的处理效果。缺点是计算复杂度较高,计算时间较长。在工业视觉中,适用于对图像边缘和纹理要求较高的应用,如纹理表面的缺陷检测、艺术品表面检测等。

四、滤波在图像特征提取与目标识别中的作用

(一)边缘提取
在图像特征提取中,边缘是一种重要的特征信息。滤波可以在边缘提取前对图像进行预处理,去除噪声干扰,使边缘更加清晰、准确。例如,高斯滤波可以平滑图像,减少噪声对边缘检测算子(如 Sobel 算子、Canny 算子等)的影响,从而提高边缘检测的精度。中值滤波可以在保留边缘的同时去除椒盐噪声,使得边缘提取结果更加可靠。通过合适的滤波处理,能够突出图像的边缘轮廓,为后续的形状分析、目标定位等提供有力支持。

(二)纹理分析
对于纹理丰富的图像,滤波有助于增强纹理特征。双边滤波等方法在平滑图像的同时保留了纹理细节,使得纹理特征更加明显。在纹理分类与识别中,滤波后的图像可以通过计算纹理特征参数(如灰度共生矩阵特征值等)来进行纹理分析,从而实现对不同纹理的目标物体的识别。例如,在纺织品质量检测中,通过滤波处理后的图像进行纹理分析,可以检测出纺织品的纹理缺陷、编织均匀性等问题。

(三)目标识别
在目标识别过程中,滤波后的高质量图像能够提高识别准确率。例如,在工业零件识别中,经过滤波去除噪声和增强特征后的图像,利用基于形状特征、颜色特征或深度学习的目标识别方法,可以更准确地识别出不同类型的零件。高斯滤波后的图像在基于深度学习的目标识别网络中,可以减少噪声对网络训练和识别的干扰,提高网络的泛化能力和识别精度。

五、滤波在工业视觉系统具体应用场景中的应用实例

(一)质量检测
在产品表面质量检测中,如汽车车身表面喷漆质量检测。工业相机采集到的车身图像可能存在噪声,采用高斯滤波对图像进行平滑处理,去除噪声后,再利用边缘检测算法提取车身表面的轮廓边缘,通过分析边缘的连续性、平整度等特征,可以检测出喷漆表面是否存在划痕、凹凸不平等缺陷。对于一些电子芯片表面质量检测,中值滤波可以有效去除芯片图像中的椒盐噪声,然后通过特征提取和对比,检测芯片表面是否有裂纹、杂质等缺陷。

(二)尺寸测量
在工业零部件的尺寸测量中,滤波也起着重要作用。例如,在机械零件的高精度尺寸测量中,图像采集过程中可能会引入噪声,使用双边滤波对图像进行处理,在平滑图像的同时保留零件的边缘细节。然后通过边缘提取和几何计算,可以精确地测量零件的长度、直径、孔径等尺寸参数。对于一些微小零件的测量,滤波后的图像能够提高测量的准确性和可靠性,避免因噪声导致的测量误差。

(三)机器人视觉导航
在机器人视觉导航系统中,机器人需要通过视觉传感器获取周围环境的图像信息来进行路径规划和避障。图像可能会受到光照变化、环境噪声等因素影响。高斯滤波可以对环境图像进行平滑处理,减少噪声干扰,然后通过特征提取和目标识别,机器人可以识别出道路标志、障碍物等目标物体,从而实现准确的导航和避障操作。例如,在仓储物流机器人的视觉导航中,滤波后的图像有助于机器人识别货架、货物等目标,规划合理的搬运路径。

六、滤波在工业视觉领域的未来发展趋势

(一)与深度学习的融合
随着深度学习在工业视觉领域的广泛应用,滤波技术与深度学习的融合将成为未来的一个重要发展方向。例如,开发基于深度学习的自适应滤波算法,能够根据图像的特征和噪声类型自动调整滤波参数,提高滤波效果。或者在深度学习网络的预处理阶段,采用合适的滤波方法来提高网络的输入图像质量,从而提升网络的训练效率和识别准确率。

(二)实时性与高效性的提升
工业生产对视觉系统的实时性要求越来越高,未来滤波算法将朝着更快速、高效的方向发展。研究人员将致力于开发新的滤波算法结构和优化算法实现,减少计算复杂度,提高滤波处理速度。例如,利用并行计算技术、专用硬件加速(如 FPGA、GPU 等)来加速滤波运算,以满足工业生产线上高速、实时的图像处理需求。

(三)多模态滤波技术的发展
为了适应更加复杂的工业视觉应用场景,多模态滤波技术将逐渐兴起。结合多种滤波方法的优势,如将空间域滤波和频率域滤波相结合,或者将不同类型的非线性滤波方法融合,能够更全面、有效地处理图像中的噪声和复杂特征。例如,在处理含有多种类型噪声和丰富纹理的图像时,多模态滤波可以在不同的图像特征层面上进行针对性的滤波处理,提高图像质量和后续分析的准确性。

综上所述,滤波在工业视觉领域有着不可替代的重要作用,从图像预处理到特征提取、目标识别以及各种具体应用场景,滤波技术的不断发展与创新将推动工业视觉技术朝着更加智能化、高效化、精确化的方向发展,为工业自动化生产带来更高的质量和效率保障。

七、不同滤波方法的组合应用策略

在实际工业视觉应用中,单一滤波方法往往难以满足复杂的图像处理需求。因此,多种滤波方法的组合应用成为一种有效的策略。例如,在处理含有高斯噪声和椒盐噪声混合的图像时,可以先采用中值滤波去除椒盐噪声,因为中值滤波对椒盐噪声有较好的抑制效果且能保留边缘。然后再使用高斯滤波对图像进行进一步平滑处理,以去除高斯噪声并使图像更加细腻。这种组合方式能够充分发挥两种滤波方法的优势,在去除噪声的同时最大程度地保留图像的有用信息。

另外,在一些对图像边缘要求极高的场景中,如高精度电路板缺陷检测,可以先使用双边滤波初步平滑图像并保留边缘细节,然后再结合一种边缘增强滤波方法,如高提升滤波。双边滤波能够减少噪声对边缘的影响并保持边缘的清晰度,高提升滤波则可以进一步突出边缘,使得微小的缺陷更容易被检测出来。通过这样的组合应用,可以提高工业视觉系统对图像细微特征的捕捉能力,从而提升检测的准确性和可靠性。

八、滤波参数的优化与自适应调整

滤波方法的效果在很大程度上取决于其参数的设置。以高斯滤波为例,标准差 σ 的大小直接影响着平滑程度。较小的 σ 值会使图像平滑效果较弱,但能保留更多细节;较大的 σ 值则会使图像过度平滑,丢失较多细节。在工业视觉应用中,需要根据具体的图像特征和处理要求来优化滤波参数。

一种常见的方法是通过实验和经验来确定合适的参数值。例如,在对某一类特定产品的图像进行处理时,可以先采集一定数量的样本图像,对不同参数设置下的滤波效果进行评估,如通过计算图像的信噪比、边缘保持度等指标,选择出最佳的参数组合。然而,这种方法在面对不同类型图像或不断变化的工业环境时效率较低。

因此,自适应滤波参数调整技术逐渐受到关注。例如,基于图像局部特征的自适应高斯滤波算法,它会根据图像中不同区域的灰度变化情况自动调整标准差 σ。在图像灰度变化较为平缓的区域,适当增大 σ 值以更好地平滑噪声;在灰度变化剧烈的边缘区域,则减小 σ 值以保留边缘细节。这种自适应调整能够使滤波效果更加稳定和优化,提高工业视觉系统在不同工况下的适应性和处理能力。

九、滤波对工业视觉系统鲁棒性的增强

工业生产环境通常较为复杂和恶劣,存在各种干扰因素,这对工业视觉系统的鲁棒性提出了挑战。滤波技术通过去除噪声和稳定图像特征,能够显著增强工业视觉系统的鲁棒性。

在光照不稳定的环境中,例如在户外的工业设备巡检场景,图像可能会出现亮度不均匀、阴影等问题,同时还可能伴有噪声。通过采用合适的滤波方法,如基于 Retinex 理论的滤波算法,可以在一定程度上消除光照变化对图像的影响,同时去除噪声,使得图像中的目标物体特征更加稳定和可识别。这样,工业视觉系统就能够在不同光照条件下准确地检测和识别设备的状态,提高系统对光照变化的鲁棒性。

对于工业生产过程中的机械振动等因素导致的图像模糊和噪声,滤波也能起到很好的改善作用。例如,运动模糊是工业视觉中常见的问题,通过结合去运动模糊算法和滤波算法,可以先对运动模糊进行估计和补偿,然后再使用滤波去除残余噪声,恢复清晰的图像,从而保证工业视觉系统在存在机械振动等干扰的情况下仍能正常工作,增强系统对环境干扰的鲁棒性。

十、结论

滤波在工业视觉领域是一项极为关键的技术,它贯穿于工业视觉系统的各个环节,从图像采集后的预处理到特征提取、目标识别以及在质量检测、尺寸测量、机器人视觉导航等具体应用场景中都发挥着不可或缺的作用。通过对均值滤波、中值滤波、高斯滤波、双边滤波等常见滤波方法的深入研究和应用,以及多种滤波方法的组合策略、滤波参数的优化调整和自适应技术的发展,能够有效提高工业视觉系统处理图像的质量和效率,增强系统的鲁棒性和适应性。随着工业自动化程度的不断提高和工业视觉技术的持续发展,滤波技术也将不断创新和完善,与其他相关技术如深度学习、并行计算等深度融合,为工业生产的智能化、高效化和精准化提供更为强大的技术支撑,推动工业视觉领域不断迈向新的高度,在现代工业制造、智能检测、自动化控制等众多方面发挥更加重要的作用,进一步提升工业生产的整体水平和竞争力。

十一、示例代码

以下是使用 Python 语言实现几种常见滤波方法的示例代码,在实际工业视觉应用中,这些代码可以基于 OpenCV 等图像处理库进行更便捷高效的运用,这里为了更清晰呈现算法原理,采用纯 Python 代码(部分代码参考了基本的算法逻辑简化实现,实际效率可能不如库函数,但有助于理解)示例如下:

均值滤波示例代码

import numpy as np


def mean_filter(image, kernel_size):
    """
    实现均值滤波
    :param image: 输入的灰度图像,二维numpy数组表示
    :param kernel_size: 滤波核大小,如(3, 3)表示3x3的滤波核
    :return: 滤波后的图像
    """
    height, width = image.shape
    k_height, k_width = kernel_size
    pad_height = k_height // 2
    pad_width = k_width // 2
    # 对图像进行边缘填充,方便处理边界像素
    padded_image = np.pad(image, ((pad_height, pad_height), (pad_width, pad_width)), 'constant')
    result = np.zeros_like(image)
    for y in range(height):
        for x in range(width):
            sum_value = 0
            # 遍历滤波核覆盖的区域
            for ky in range(k_height):
                for kx in range(k_width):
                    sum_value += padded_image[y + ky][x + kx]
            result[y][x] = sum_value // (k_height * k_width)
    return result

你可以使用以下方式调用这个函数:

# 示例用法
# 生成一个简单的含噪声的测试图像(这里用随机矩阵模拟)
test_image = np.random.randint(0, 255, (100, 100))
filtered_image = mean_filter(test_image, (3, 3))

中值滤波示例代码

import numpy as np


def median_filter(image, kernel_size):
    """
    实现中值滤波
    :param image: 输入的灰度图像,二维numpy数组表示
    :param kernel_size: 滤波核大小,如(3, 3)表示3x3的滤波核
    :return: 滤波后的图像
    """
    height, width = image.shape
    k_height, k_width = kernel_size
    pad_height = k_height // 2
    pad_width = k_width // 2
    padded_image = np.pad(image, ((pad_height, pad_height), (pad_width, pad_width)), 'constant')
    result = np.zeros_like(image)
    for y in range(height):
        for x in range(width):
            neighborhood = []
            for ky in range(k_height):
                for kx in range(k_width):
                    neighborhood.append(padded_image[y + ky][x + kx])
            neighborhood.sort()
            result[y][x] = neighborhood[len(neighborhood) // 2]
    return result
# 示例用法
test_image = np.random.randint(0, 255, (100, 100))
filtered_image = median_filter(test_image, (3, 3))

高斯滤波示例代码

import numpy as np
import math


def gaussian_kernel(kernel_size, sigma):
    """
    生成高斯滤波核
    :param kernel_size: 滤波核大小,如(3, 3)
    :param sigma: 高斯函数的标准差
    :return: 高斯滤波核
    """
    k_height, k_width = kernel_size
    center_y = k_height // 2
    center_x = k_width // 2
    kernel = np.zeros((k_height, k_width))
    sum_value = 0
    for y in range(k_height):
        for x in range(k_width):
            # 根据二维高斯函数公式计算滤波核元素值
            diff_y = y - center_y
            diff_x = x - center_x
            kernel[y][x] = (1 / (2 * math.pi * sigma ** 2)) * np.exp(-(diff_y ** 2 + diff_x ** 2) / (2 * sigma ** 2))
            sum_value += kernel[y][x]
    # 归一化滤波核
    kernel /= sum_value
    return kernel


def gaussian_filter(image, kernel_size, sigma):
    """
    实现高斯滤波
    :param image: 输入的灰度图像,二维numpy数组表示
    :param kernel_size: 滤波核大小,如(3, 3)
    :param sigma: 高斯函数的标准差
    :return: 滤波后的图像
    """
    kernel = gaussian_kernel(kernel_size, sigma)
    height, width = image.shape
    k_height, k_width = kernel_size
    pad_height = k_height // 2
    pad_width = k_width // 2
    padded_image = np.pad(image, ((pad_height, pad_height), (pad_width, pad_width)), 'constant')
    result = np.zeros_like(image)
    for y in range(height):
        for x in range(width):
            sum_value = 0
            for ky in range(k_height):
                for kx in range(k_width):
                    sum_value += padded_image[y + ky][x + kx] * kernel[ky][kx]
            result[y][x] = sum_value
    return result

调用示例:

# 示例用法
test_image = np.random.randint(0, 255, (100, 100))
filtered_image = gaussian_filter(test_image, (3, 3), 1)

双边滤波示例代码

import numpy as np


def bilateral_filter(image, kernel_size, sigma_space, sigma_color):
    """
    实现双边滤波
    :param image: 输入的灰度图像,二维numpy数组表示
    :param kernel_size: 滤波核大小,如(3, 3)
    :param sigma_space: 空间域标准差
    :param sigma_color: 灰度域标准差
    :return: 滤波后的图像
    """
    height, width = image.shape
    k_height, k_width = kernel_size
    pad_height = k_height // 2
    pad_width = k_width // 2
    padded_image = np.pad(image, ((pad_height, pad_height), (pad_width, pad_width)), 'constant')
    result = np.zeros_like(image)
    for y in range(height):
        for x in range(width):
            numerator = 0
            denominator = 0
            for ky in range(k_height):
                for kx in range(k_width):
                    neighbor_y = y + ky
                    neighbor_x = x + kx
                    spatial_distance = ((ky - pad_height) ** 2 + (kx - pad_width) ** 2) ** 0.5
                    color_distance = abs(padded_image[neighbor_y][neighbor_x] - padded_image[y][x])
                    # 计算空间域权重
                    weight_space = np.exp(-(spatial_distance ** 2) / (2 * sigma_space ** 2))
                    # 计算灰度域权重
                    weight_color = np.exp(-(color_distance ** 2) / (2 * sigma_color ** 2))
                    combined_weight = weight_space * weight_color
                    numerator += combined_weight * padded_image[neighbor_y][neighbor_x]
                    denominator += combined_weight
            result[y][x] = numerator / denominator
    return result

调用示例:

# 示例用法
test_image = np.random.randint(0, 255, (100, 100))
filtered_image = bilateral_filter(test_image, (3, 3), 1, 1)

请注意,以上代码只是简单的原理性示例实现,在实际工业视觉项目中,通常会使用专业的图像处理库(如 OpenCV 等)来实现这些滤波方法,以获得更高效、更准确且功能更丰富的滤波效果。例如在 OpenCV 中,均值滤波可以通过 cv2.blur() 函数实现,中值滤波用 cv2.medianBlur() ,高斯滤波用 cv2.GaussianBlur() ,双边滤波用 cv2.bilateralFilter() 等,下面以 OpenCV 实现上述滤波方法示例:

OpenCV 实现均值滤波

import cv2
import numpy as np

# 读取图像(这里以灰度图像为例,实际可根据需求读取彩色图像并转换为灰度等操作)
image = cv2.imread('test_image.jpg', 0)
# 使用OpenCV的均值滤波函数,参数2表示滤波核大小(这里是3x3)
filtered_image = cv2.blur(image, (3, 3))
cv2.imshow('Mean Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV 实现中值滤波

import cv2
import numpy as np

image = cv2.imread('test_image.jpg', 0)
# 使用OpenCV的中值滤波函数,参数3表示滤波核大小(这里是3x3)
filtered_image = cv2.medianBlur(image, 3)
cv2.imshow('Median Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV 实现高斯滤波

import cv2
import numpy as np

image = cv2.imread('test_image.jpg', 0)
# 使用OpenCV的高斯滤波函数,参数2和3分别表示滤波核大小(这里是3x3)和标准差
filtered_image = cv2.GaussianBlur(image, (3, 3), 1)
cv2.imshow('Gaussian Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

OpenCV 实现双边滤波

import cv2
import numpy as np

image = cv2.imread('test_image.jpg', 0)
# 使用OpenCV的双边滤波函数,参数2、3、4分别表示滤波核大小(这里是3x3)、空间域标准差、灰度域标准差
filtered_image = cv2.bilateralFilter(image, 3, 1, 1)
cv2.imshow('Bilateral Filtered Image', filtered_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值