首页 > 其他分享 >OpenCV 之图像平滑处理

OpenCV 之图像平滑处理

时间:2024-09-04 21:50:45浏览次数:14  
标签:噪声 noise 滤波 平滑 cv2 方框 OpenCV 图像

引言

图像平滑处理(也称为“模糊处理”)是计算机视觉中一项非常基础的技术,常用于减少图像噪声或失真,提高图像质量。平滑处理可以通过各种滤波器实现,常见的滤波器包括均值滤波、方框滤波、高斯滤波和中值滤波。本文将详细介绍这些滤波器的原理及其在 OpenCV 中的具体实现。

基础概念

图像平滑处理的基本思想是通过卷积操作来替换每个像素值,使其变为邻域内像素值的某种形式的加权平均值。这样可以有效地抑制高频噪声,使图像更加平滑。但是,过度的平滑也会导致图像细节的丢失,因此需要根据具体需求选择合适的滤波器和参数。

代码实现与演示
  1. 导入库和定义椒盐噪声函数

    1import cv2
    2import numpy as np
    3
    4def add_peppersalt_noise(img, n=10000):
    5    '''这个函数 add_peppersalt_noise 的目的是向给定的图像中添加椒盐噪声(Pepper & Salt Noise)。'''
    6    result = img.copy()
    7    h, w = img.shape[:2]
    8    for i in range(n):
    9        x = np.random.randint(1, h)
    10        y = np.random.randint(1, w)
    11        if np.random.randint(0, 2) == 0:
    12            result[x, y] = 0
    13        else:
    14            result[x, y] = 255
    15    return result

    解释:

    • 定义一个函数 add_peppersalt_noise 用于向图像中添加椒盐噪声。
    • 通过随机选择图像中的像素点,并将其设置为全黑(0)或全白(255),来模拟椒盐噪声。
  2. 读取图像并添加噪声

    1image = cv2.imread('picture_video/zl.png')
    2cv2.imshow('原图', image)
    3cv2.waitKey(0)
    4noise = add_peppersalt_noise(image)
    5cv2.imshow('噪声图', noise)
    6cv2.waitKey(0)

    解释:

    • 使用 cv2.imread 函数读取图像文件 zl.png
    • 显示原始图像,并等待用户按键继续。
    • 使用 add_peppersalt_noise 函数向图像中添加椒盐噪声,并显示噪声图像。
  3. 均值滤波

    1# 均值滤波
    2blur_1 = cv2.blur(noise, (3, 3))
    3cv2.imshow('均值滤波 (3, 3)', blur_1)
    4cv2.waitKey(0)
    5
    6blur_2 = cv2.blur(noise, (5, 5))
    7cv2.imshow('均值滤波 (5, 5)', blur_2)
    8cv2.waitKey(0)

    解释:

    • 使用 cv2.blur 函数进行均值滤波。
    • ksize=(3, 3) 表示使用 3x3 的卷积核,ksize=(5, 5) 表示使用 5x5 的卷积核。
    • 显示均值滤波后的图像,并等待用户按键继续。
  4. 方框滤波

    1# 方框滤波
    2boxFilter_1 = cv2.boxFilter(noise, -1, (3, 3), normalize=True)
    3cv2.imshow('方框滤波 (3, 3) 归一化', boxFilter_1)
    4cv2.waitKey(0)
    5
    6boxFilter_2 = cv2.boxFilter(noise, -1, (3, 3), normalize=False)
    7cv2.imshow('方框滤波 (3, 3) 不归一化', boxFilter_2)
    8cv2.waitKey(0)

    解释:

    • 使用 cv2.boxFilter 函数进行方框滤波。
    • ddepth=-1 表示输出图像的深度与输入图像相同。
    • normalize=True 表示归一化处理,normalize=False 表示不归一化处理。
    • 显示方框滤波后的图像,并等待用户按键继续。
  5. 高斯滤波

    1# 高斯滤波
    2GaussianB = cv2.GaussianBlur(noise, (3, 3), 1)
    3cv2.imshow('高斯滤波 (3, 3) 标准差=1', GaussianB)
    4cv2.waitKey(0)

    解释:

    • 使用 cv2.GaussianBlur 函数进行高斯滤波。
    • ksize=(3, 3) 表示使用 3x3 的高斯核,sigmaX=1 表示 X 方向的标准差为 1。
    • 显示高斯滤波后的图像,并等待用户按键继续。       
  6. 中值滤波

    1# 中值滤波
    2medianB = cv2.medianBlur(noise, 5)
    3cv2.imshow('中值滤波 (5)', medianB)
    4cv2.waitKey(0)
    5cv2.destroyAllWindows()

    解释:

    • 使用 cv2.medianBlur 函数进行中值滤波。
    • ksize=5 表示使用 5x5 的滤波核。
    • 显示中值滤波后的图像,并等待用户按键继续。        
总结

通过上述代码演示,我们展示了 OpenCV 中几种常用的图像平滑处理方法:均值滤波、方框滤波、高斯滤波和中值滤波。这些方法各有特点,适用于不同的应用场景。均值滤波和方框滤波较为简单,适用于一般的噪声抑制;高斯滤波保留更多细节的同时也能有效去除噪声;中值滤波对于椒盐噪声尤其有效。选择合适的滤波器和参数,可以大大提高图像处理的效果。

标签:噪声,noise,滤波,平滑,cv2,方框,OpenCV,图像
From: https://blog.csdn.net/m0_73697499/article/details/141905188

相关文章

  • opencv轮廓近似,模板匹配
    在图像处理领域,轮廓近似和模板匹配是两种非常关键的技术,它们广泛应用于计算机视觉、图像分析和图像识别等多个方面。本文将详细介绍如何使用OpenCV库进行轮廓近似和模板匹配,并给出具体的代码示例。一、轮廓近似(ContourApproximation)轮廓近似是指将图像中的轮廓逼近成由直线......
  • 【全网独家】OpenCV: 影像格式(Mat)
    OpenCV:影像格式(Mat)介绍在OpenCV中,Mat是一个非常重要的数据结构,用于表示二维的图像数据。它能够支持多种类型的数据存储,包括灰度图、彩色图以及多通道图像。特点多维矩阵:支持多维度矩阵操作。高效内存管理:使用引用计数来确保内存资源安全且高效地释放。灵活性:......
  • 【OpenCV】手势识别实现电脑音量控制
            从AdvanceComputerVisionwithPython-ComputerVisionZone 这个网站上找到了一些有关人脸识别和手势识别的示例代码与课程,记录一下学习的过程和结果,Python初学,写得比较基础。            代码基本是流程类的代码,核心功能在导入的库中......
  • 基于CNN卷积神经网络迁移学习的图像识别实现
    基于CNN卷积神经网络迁移学习的图像识别实现基于CNN卷积神经网络迁移学习的图像识别实现写在前面一,原理介绍迁移学习的基本方法1.样本迁移(InstancebasedTL)2.特征迁移(FeaturebasedTL)3.模型迁移(ParameterbasedTL)4.关系迁移(RelationbasedTL)二.准备工作1.依赖库安......
  • 图像边缘检测技术详解:利用OpenCV实现Sobel算子
    图像边缘检测技术详解:利用OpenCV实现Sobel算子前言Sobel算子的原理代码演示结果展示结语前言  在数字图像处理的广阔领域中,边缘检测技术扮演着至关重要的角色。无论是在科学研究、工业自动化,还是在日常生活中的智能设备中,我们都需要从图像中提取有用的信息。边缘,作......
  • 实时图像编辑大革新!Adobe发布TurboEdit:可以通过文本来编辑图像,编辑时间<0.5秒!
    今天给大家介绍Adobe研究院新的研究TurboEdit,可以通过文本来编辑图像,通过一句话就能改变图像中的头发颜色、衣服、帽子、围巾等等。而且编辑飞快,<0.5秒。简直是图像编辑的利器。相关链接项目:betterze.github.io/TurboEdit论文:arxiv.org/abs/2408.08332论文阅读TurboEdit:Instantt......
  • 腾讯&浙大提出定制化视频生成框架CustomCrafter,只需通过少量图像就可以完成高质量视频
    腾讯联合浙大提出了一种定制化视频生成框架-CustomCrafter,它能够基于文本提示和参考图像生成自定义视频,同时保留运动生成和概念组合的能力。通过设计一系列灵活的模块,使得模型实现了无需额外视频,通过少量图像学习,就能生成高质量的个性化视频。上图为CustomCrafter可视化结果。Cus......
  • 媲美Flux pro! Ideogram 发布了 2.0 图像生成模型, 照片级真实感和高质量文本渲染!
    Ideogram发布了2.0模型,图像生成质量大幅提高,产品易用性改善,文字生成能力也提升许多。Ideogram2.0在图像快速对齐、照片级真实感和文本渲染质量方面取得了显著进步。人工评估一致认为Ideogram2.0比FluxPro和DALL·E3有了显著改进。尽管我们在图像质量方面有所改进,但......
  • 视频监控智能图像识别
    视频监控智能图像识别技术实际上是一种,它为建筑工程施工品质和安全工作给予了优秀的方式方法。施工人员的安全隐患因为欠缺高度重视或因为缺少较好的监管方式,导致安全事故的次数较高。视频监控智能图像识别根据在施工工地安装的各种各样不限品牌的监控设备,可以有效的填补传统式监......
  • 智能视频分析ai图像精准智能识别
    智能视频分析ai图像精准智能识别包含图像解决、数字图像处理、行为识别、状态识别、视频帧全自动监控分析,体现了智能视频分析ai图像精准智能识别的工作能力。根据智能视频分析ai图像精准智能识别,智能视频内嵌式识别专用工具可以分析监控视频监管下的图像,并将合理信息内容变换为有......