【计算机视觉(10)】

基于Python的OpenCV基础入门——图像滤波去噪

  • 图像滤波去噪
    • 均值滤波
    • 中值滤波
    • 高斯滤波
    • 双边滤波
    • 方框滤波
    • 图像滤波去噪代码实现及其效果图

图像滤波去噪

图像滤波去噪是一种图像处理方法,它通过应用滤波器来减少或消除图像中的噪声。噪声是图像中不希望的、无用的、干扰视觉感知的非图像信号。图像可以通过各种因素引入噪声,例如摄像机传感器,图像传输过程中的干扰,或者是图像采集设备的本身限制。

滤波器是一种数学运算,可以对图像的各个像素进行处理,以实现去噪的目的。滤波器通过在图像中移动一个小窗口,对窗口内的像素进行加权平均或其他数学操作。这样可以消除或减少噪声的影响,使图像更清晰、更易于观察。

图像滤波去噪的作用包括:提高图像质量,改善视觉感知,加强图像分析

均值滤波

均值滤波是一种图像平滑处理方法,它通过计算像素点周围邻域内像素值的平均值来替代该像素的值。均值滤波的原理是利用邻域内像素值的平均值来消除图像中的噪声,从而使图像变得更加平滑。
image = cv2.blur(src, kernal_size)
参数:
src:被处理的图像。
kernal_size:滤波核大小,其格式为(高度,宽度),建议使用如(3,3)、(5, 5)、(7, 7)等宽、高相等的奇数边长。滤波核越大,处理之后的图像就越模糊。
返回值说明:
image:经过均值滤波处理之后的图像。

中值滤波

中值滤波是一种非线性图像滤波方法,它通过对像素点周围邻域内的像素值进行排序,然后取排序后的中值作为该像素的值。中值滤波的原理是利用邻域内像素值的中值来替代该像素的值,从而有效地去除图像中的椒盐噪声和其他类型的噪声。
image = cv2.medianBlur(src, ksize)
参数:
src:被处理的图像。
ksize:滤波核的边长,必须是大于1的奇数,如3、5、7等。该方法根据此边长自动创建一个正方形的滤波核。

高斯滤波

高斯滤波是一种线性图像滤波方法,它通过对像素点周围邻域内的像素值进行加权平均来替代该像素的值。高斯滤波的原理是利用高斯函数来对邻域内的像素值进行加权,使得离中心像素更近的像素具有更大的权重,从而使图像变得更加平滑。
image = cv2.GaussianBlur(src, ksize, sigmaX, sigmaY)
参数:
src:被处理的图像。
ksize:滤波核的大小,宽高必须是奇数,如(3,3)、(5,5)等。
sigmaX:卷积核水平方向的标准差。
sigmaY:卷积核垂直方向的标准差。
修改sigmaX或sigmaY的值都可以改变卷积核中的权重比例。如果不知道如何设计这2个参数值,就直接把这2个参数的值写成0,该方法就会根据滤波核的大小自动计算合适的权重比例。

双边滤波

双边滤波是一种非线性图像滤波方法,它通过同时考虑空间相似性和灰度相似性来对像素点周围邻域内的像素值进行加权平均。双边滤波的原理是利用高斯函数来对空间相似性和灰度相似性进行加权,从而保持边缘的清晰度,并且在去除噪声的同时保持图像的细节。
image = cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)
参数:
src:被处理的图像。
d:以当前像素为中心的整个滤波区域的直径。如果d<0,则自动根据sigmaSpace参数计算得到。该值与保留的边缘信息数量成正比,与方法运行效率成反比。
sigmaColor:参与计算的颜色范围,这个值是像素颜色值与周围颜色值的最大差值,只有颜色值之差小于这个值时,周围的像素才进行滤波计算。值为255时,表示所有颜色都参与计算。
sigmaSpace:坐标空间的σ(sigma)值,该值越大,参与计算的像素数量就越多。

方框滤波

方框滤波是一种线性图像滤波方法,它通过对像素点周围邻域内像素值的均值进行加权平均来替代该像素的值。方框滤波的原理是利用方框函数来对邻域内的像素值进行加权,使得离中心像素更近的像素具有更大的权重,从而使图像变得更加平滑。
image = cv2.boxFilter(src, type, kernal, normalize)
参数:
src:待处理的图像。
type:当指定为-1时,需要进行自动计算,得到的结果的颜色通道要和原图像的颜色通道一致。
kernal: 卷积核, 如(3,3)、(5,5)等。
normalize:是否进行归一化。
当指定为True的时方框滤波与均值滤波的作用相同
当指定为False 将所有像素相加可能会产生越界的现象

图像滤波去噪代码实现及其效果图

使用matplotlib合并显示图像经过含有噪点图像,经过均值滤波、中值滤波、高斯滤波、双边滤波、方框滤波normalize参数为1、方框滤波normalize参数为0时处理后的结果,进行对比展示:

import cv2                       #导入OpenCV模块    
import matplotlib.pyplot as plt # 导入matplotlib库    image = cv2.imread("ex\img\zao.jpg") # 导入图片   mean_img = cv2.blur(image, (3, 3))  # 均值滤波 后面的卷积核大小可以自己定义,如(3, 3)  
medianBlur_img = cv2.medianBlur(image, 3) # 中值滤波  
GaussianBlur_img = cv2.GaussianBlur(image, (3,3), 0) # 高斯滤波 第一个参数:原图像;第二个参数:卷积核大小;第三个参数:X方向上的高斯核标准偏差。  
bilateralFilter_img =cv2.bilateralFilter(image, 50, 100, 100) # 双边滤波  
box_img_T = cv2.boxFilter(image, -1, (3, 3), normalize=True) # 方框滤波 使用normalize  
box_img_F = cv2.boxFilter(image, -1, (3, 3), normalize=False) # 方框滤波 不使用normalize  titles = ["mean", "median", "Gaussian", "bilateral", "boxnormalizeTrue", "boxnormalizeFalse"]  
images = [mean_img, medianBlur_img, GaussianBlur_img, bilateralFilter_img, box_img_T, box_img_F]  
for i in range(6):  plt.subplot(2, 3, i + 1), plt.imshow(images[i], "gray")  plt.title(titles[i])  
plt.show()  

效果图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/27545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装sqlserver2022 express

1、下载 SQL Server 下载 | Microsoft 双击sql2022-ssei-expr 2、安装 下载完成以后&#xff0c;将会出现以下对话框 &#xff1a; 点击【全新SQL Server独立安装或向现有安全添加功能】 下一步&#xff0c;下一步&#xff1a; 下一步&#xff1a; 下一步&#xff0c;这里我…

Memcached:内存缓存的强大引擎及其深度解析

Memcached 是一个高性能、分布式内存对象缓存系统,用于减轻数据库负载、提高Web应用的响应速度和性能。它通过将数据存储在内存中,减少了对数据库的频繁访问,从而提高了数据读取的速度和效率。本文将详细介绍Memcached的工作原理、使用场景、安装与配置、性能优化及其与其他…

【LeetCode:2779. 数组的最大美丽值 + 排序 + 二分】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【docker】如何解决artalk的跨域访问问题

今天折腾halo的时候&#xff0c;发现artalk出现跨域访问报错&#xff0c;内容如下。 Access to fetch at https://artk.musnow.top/api/stat from origin https://halo.musnow.top has been blocked by CORS policy: The Access-Control-Allow-Origin header contains multipl…

Kotlin编程实践-【Java如何调用Kotlin中带默认值参数的函数】

问题 如果你有一个带有默认参数值的 Kotlin 函数&#xff0c;如何从 Java 调用它而无须为每个参数显式指定值&#xff1f; 方案 为函数添加注解JvmOverloads。 也就是为Java添加重载方法&#xff0c;这样Java调用Kotlin的方法时就不用传递全部的参数了。 示例 在 Kotlin …

企业环保创A标准

在环保日益受到重视的今天&#xff0c;企业如何有效地进行环保管理&#xff0c;提高自身的环保水平&#xff0c;已成为一个不可忽视的议题。而企业环保创A标准&#xff0c;正是为了评估企业的环保水平和环保管理能力而制定的一项重要评价标准。朗观视觉小编将详细解析企业环保创…

XILINX 7系列XDMA使用_IP核介绍以及工程搭建

文章目录 一、XDMA IP核1.1、接口说明1.2、配置页说明 二、XDMA工程搭建2.1、BD搭建2.2 Linux下XDMA驱动安装2.3 Linux下使用XDMA进行数据传输 一、XDMA IP核 1.1、接口说明 sys_clk&#xff1a;主机给PCIE提供的时钟信号&#xff0c;通过原理图查看 sys_rst_n&#xff1a;主机…

【已解决】引入 element 组件无法使用编译错误 ERROR Failed to compile with 1 error

如果大家使用这个vue 配合 element 框架不熟练&#xff0c;当你顺利按照文档安装好 vue 和 element 的时候想要使用element 的组件时候确无法展示出来&#xff0c;甚至报错。不妨看看是不是这个问题&#xff0c; 1.首先使用element 的时候&#xff0c;前提是把必须要的 elemen…

TCGAbiolinks包学习

TCGAbiolinks 写在前面学习目的GDCquery GDCdownload GDC prepare中间遇到的报错下载蛋白质数据 写在前面 由于别人提醒我TCGA的数据可以利用TCGAbiolinks下载并处理&#xff0c;所以我决定阅读该包手册&#xff0c;主要是该包应该是有更新的&#xff0c;我看手册进行更新了&…

法国恐脱欧、陷金融危机!股指本周跌6.2%,创三年多最大跌幅

内容提要 法国财政部长警告称&#xff0c;左翼政党联盟若上台可能导致法国脱欧&#xff0c;而且无论极右翼还是左翼上台&#xff0c;都可能导致法国爆发金融危机。由于政坛风险高企&#xff0c;法国股市周五延续跌势&#xff0c;本周已经抹掉2100亿美元市值&#xff0c;几乎回…

[C++] 小游戏 斗破苍穹 2.11.6 版本 zty出品

大家好&#xff0c;今天zty带来的是斗破苍穹的 2.11.6 版本&#xff0c;这个版本主要更新了&#xff1a;1、背包 2、将退出游戏改到了设置里面 3、如果不逃跑不会停止战斗。废话不多说&#xff0c; 先赞后看 养成习惯 code #include<stdio.h> #include<iostrea…

MySQL学习——创建MySQL Workbench中的Connections

在MySQL Workbench中&#xff0c;Connections&#xff08;连接&#xff09;是用户与MySQL数据库进行交互的桥梁。 本文将添加一个新连接&#xff0c;该连接可以是初始连接&#xff0c;也可以是附加连接。在开始之前&#xff0c;必须安装、启动MySQL服务器的实例&#xff0c;并…

Web前端开发UL:探索与解构列表的奥秘

Web前端开发UL&#xff1a;探索与解构列表的奥秘 在Web前端开发的广阔领域中&#xff0c;UL&#xff08;Unordered List&#xff0c;无序列表&#xff09;元素扮演着至关重要的角色。它不仅是页面布局的基础构件&#xff0c;更是提升用户体验和增强信息可读性的关键所在。今天…

LLM时代中的AI推理

问题与挑战 毫无疑问&#xff0c;AI是当下最热的话题之一&#xff0c;而大模型又是当前AI的主角。几年前&#xff0c;正当深度学习进入瓶颈时&#xff0c;以GPT为首的LLM的横空出世让之似乎又找到了“第二增长曲线”。当模型规模大到一定程度时&#xff0c;它所表现出来的涌现…

【单片机毕业设计选题24007】-基于STM32和阿里云的家庭健康数据监测系统

系统功能: 本课题设计是基于STM32单片机作为控制主体&#xff0c;通过HX711称重模块&#xff0c;HC-SR04超声波测距模块&#xff0c;红外测温&#xff0c;心率传感器等模块通过I2C或SPI接口与STM32进行通信&#xff0c;并读取传感器输出的身高&#xff0c;体重&#xff0c;心率…

KaTex在博客中显示数学公式

使用KaTeX在博客中显示数学公式 KaTeX 是一个快速的数学排版库&#xff0c;它允许你在网页上美观且高效地展示数学公式。本文将介绍如何在博客中使用 KaTeX&#xff0c;并提供一些代码示例&#xff0c;帮助你快速上手。 什么是KaTeX&#xff1f; KaTeX 是由 Khan Academy 开…

29、matlab向量和矩阵算数运算汇总2:加、减、乘、除、幂、四舍五入

1、前言 矩阵向量的算数运算通常指的是矩阵和向量之间的加法、减法、标量乘法、矩阵乘以向量等操作。下面对矩阵向量的算术运算进行总结&#xff1a; 加法&#xff1a;矩阵和向量的加法是将矩阵的每一行分别与向量对应位置的元素进行相加&#xff0c;生成一个新的向量。 例如…

matlab-2-simulink-小白教程-如何绘制电路图进行电路仿真

以上述电路图为例&#xff1a;包含D触发器&#xff0c;时钟CLK,与非门 一、启动simulink的三种方式 方式1 在MATLAB的命令行窗口输入“Simulink”命令。 方式2 在MATLAB主窗口的“主页”选项卡中&#xff0c;单击“SIMULINK”命令组中的Simulink命令按钮。 方式3 从MATLAB…

FreeRTOS简单内核实现4 临界段

文章目录 0、思考与回答0.1、思考一0.2、思考二0.3、思考三 1、关中断1.1、带返回值1.2、不带返回值 2、开中断3、临界段4、应用 0、思考与回答 0.1、思考一 为什么需要临界段&#xff1f; 有时候我们需要部分代码一旦这开始执行&#xff0c;则不允许任何中断打断&#xff0…

『大模型笔记』Anthropic团队:什么是大模型的可解释性!

Anthropic团队:什么是大模型的可解释性! 文章目录 一. Anthropic团队:什么是大模型的可解释性!二. 参考文献我的小红书中英文双语视频:Anthropic团队:什么是大模型的可解释性!一. Anthropic团队:什么是大模型的可解释性! 我在Anthropic的可解释性团队工作。可解释性是…