【计算机视觉(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;这里我…

【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;几乎回…

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

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

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

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

【ArcGISProSDK】OpenItemDialog打开文件对话框

打开单个文件 效果 代码 public async void OpenFunction() {// 获取默认数据库var gdbPath Project.Current.DefaultGeodatabasePath;OpenItemDialog openItemDialog new OpenItemDialog() { Title "打开要素文件",InitialLocation gdbPath,Filter ItemFilte…

花卉识别-python-pytorch-CNN深度学习含数据集+pyqt界面

代码下载地址&#xff1a; https://download.csdn.net/download/qq_34904125/89383063 本代码是基于python pytorch环境安装的。 下载本代码后&#xff0c;有个requirement.txt文本&#xff0c;里面介绍了如何安装环境&#xff0c;环境需要自行配置。 或可直接参考下面博文…

Stable Diffusion【应用篇】【艺术写真】:粘土风之后陶瓷风登场,来看看如何整合AI艺术写真吧

在国外的APP Remini引爆了粘土滤镜后&#xff0c;接着Remini又推出了瓷娃娃滤镜。相当粘土滤镜&#xff0c;个人更喜欢瓷娃娃滤镜&#xff0c;因为陶瓷工艺更符合东方艺术审美。 下面我们就来看看陶瓷特效在AI写真方面的应用。话不多说&#xff0c;我们直接开整。 关于粘土整…

Real3D:利用真实世界图像扩展3D重建模型

原理&#xff1a; 在3D重建领域&#xff0c;单视图重建任务由于其固有的不确定性而充满挑战。为了克服这一难题&#xff0c;研究者们一直在探索如何利用大型数据集训练模型以学习形状和纹理的通用先验知识。然而&#xff0c;现有训练方法依赖于合成数据或多视图捕获&#xff0c…

获取在 Windows 10/11 上编辑 PDF 的 6 大方法(免费)

作为全球最受欢迎的操作系统&#xff0c;Microsoft Windows的每一次升级都引起了公众的关注。其中&#xff0c;Windows 10 和 Windows 11 是最常用的版本。 一些需要在 Windows 11/10 上处理繁琐的 PDF 任务的人可能会问&#xff1a;Microsoft Windows 有 PDF 编辑器吗&#x…

一篇文章教你学会公众号IP写作(新手小白必备)

最近在带大家玩公众号 IP 写作&#xff0c;很多新手小白常问的问题&#xff0c; 1 什么是IP写作&#xff1f; “IP写作&#xff0c;简单来说&#xff0c;就是通过在公众号上持续写出有价值的文章&#xff0c;来建立个人影响力。 让读者了解你、信任你、找你付费。实现高价值、强…