当前位置: 首页 > news >正文

opencv#30 线性滤波

均值滤波原理

均值滤波步骤

Step1:求和。

Step2:计算平均值。

     所谓均值滤波,就是求平均值的意思。我们假设在一个3*3的范围内有一个图像,其中这个图像每一个像素可能含有噪声,也可能不含噪声,我们是不知道的,因此通过均值滤波的方式,对图像中所有像素进行求和,并除以像素个数,得到的结果就是滤波后的结果,将3*3区域的中心位置更改为滤波后的平均值,这样的过程就是均值滤波。

     均值滤波和图像的卷积操作相类似,它们都是在原图像中将每一个像素分别覆盖滤波模板,也可称为滤波器,覆盖原图像后求取平均值,放入中心区域作为滤波结果,然后移动滤波器,使滤波器能够覆盖图像的每一个位置。对于上图3*3的矩阵来说,其中每一个位置都乘了1,也就是说它进行卷积的模板是一个3*3的矩阵,此矩阵中的值都为1,之后又除以了和,因此它的卷积模板(滤波器)就是一个1/9乘全为1的矩阵(3*3)。

均值滤波函数

blur()

void cv::blur(InuputArray   src,OutputArray   dst,Size          ksize,Point         anchor = Point(-1,-1),int           borderType = BORDER_DEFAULT)

·src:待均值滤波的图像,图像数据类型必须是CV_8U,CV_16U,CV_16S,CV_32F和CV_64F这五种数据类型之一。均值滤波输出的结果的数据类型与输入图像的数据类型保持一致。

·dst:均值滤波后的图像,与输入图像具有相同的尺寸和数据类型。

·ksize:卷积核尺寸(滤波器尺寸:常用的是奇数正方形)。因为均值滤波中,滤波器中的每一位参数值是恒定的,因此这里面我们只需给出其尺寸即可。

·anchor:内核的基准点(锚点),其默认值为(-1,-1)代表内核基准点位于kernel的中心位置。·borderType:像素外推法选择标志。

方框滤波函数

boxFilter()

void cv::boxFilter(InputArray   src,OutputArray  dst,int          ddepth,Size         ksize,Point        anchor = Point(-1,-1),bool         normalize = true,int          borderType = BORDER_DEFAULT)

     方框滤波函数与均值滤波其实是等价的,只不过方框滤波运行滤波器不进行归一化,但是在均值滤波中是强制进行归一化的。 由于方框滤波是一个求和的参数,可能会出现255+255+255+....很多个255相加,最终超出255范围的情况,因此第三个参数运行用户设定输出图像的数据类型,也就是输出图像的数据类型可以与输入图像不同,但是尺寸和通道数是一致的。

·src:输入图像。

·dst:输出图像,与输入图像具有相同的尺寸和通道数。

·ddepth:输出图像的数据类型(深度),根据输入图像的数据类型不同拥有不同的取值范围。

·ksize:卷积核尺寸。

·anchor:内核的基准点(锚点),其默认值为(-1,-1)代表内核基准点位于kernel的中心位置。

·normalize:是否将卷积核进行归一化的标志,默认参数为true,表示进行归一化(在矩阵前面乘所有数值之和)。

·borderType:像素外推法选择标志。

高斯滤波原理

     高斯滤波也就是滤波器是一个高斯分布的形式,如上图所示,滤波器中中间的像素值较大,而四周像素值较小的情况,是一个中心对称的滤波器。若以这样的滤波器作为卷积核与原图像进行卷积操作的时候,得到的就是一个高斯滤波之后的结果 。

高斯滤波函数

GaussianBlur()

void cv::GaussianBlur(InputArray    src,OutputArray   dst,Size          xsize,double        sigmaX,double        sigmaY = 0,int           borderType = BORDER_DEFAULT)

·src:待高斯滤波图像,数据类型必须为CV_8U,CV_16U,CV_16S,CV_32F或CV_64F。

·dst:输出图像,与输入图像src具有相同的尺寸,通道数和数据类型。

·ksize:高斯滤波器的尺寸,滤波器可以不为正方形,但是必须是正奇数。如果尺寸为0,则由标准偏差计算尺寸。高斯滤波器不需要人为的输入,因为高斯滤波器的高斯函数分布形式是固定的,只需给出滤波器尺寸即可。

·sigmaX:X方向的高斯滤波器标准偏差。

·sigmaY:Y方向的高斯滤波器标准偏差。如果输入量为0,则将其设置为等于sigmaX,如果两个轴的标准差均为0,则根据输入的高斯滤波器尺寸计算标准差。

ksize ,sigmaX,sigmaY不允许同时为0,若某个参数为0,可以根据对应关系计算出参数。

·borderType:像素外推法选择标志。

示例
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv; //opencv的命名空间
using namespace std;//主函数
int main()
{Mat lenaGray = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/lenaGray.png");Mat equalLena_Salt = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/equalLena_S.png");Mat equalLena_Gauss = imread("E:/opencv/opencv-4.6.0-vc14_vc15/opencv/equalLena_G.png");if (lenaGray.empty() || equalLena_Salt.empty() || equalLena_Gauss.empty()){cout << "请确认图像名称是否正确" << endl;return -1;}Mat result_3, result_9; //存放不含噪声滤波结果,后面的数字代表滤波器尺寸Mat result_3gauss, result_9gauss; //存放含有高斯噪声滤波结果,后面数字代表滤波器尺寸Mat result_3salt, result_9salt; //存放含有椒盐噪声滤波结果,后面的数字代表滤波器尺寸//调用均值滤波函数blur()进行滤波blur(lenaGray, result_3, Size(3, 3));blur(lenaGray, result_9, Size(9, 9));blur(equalLena_Salt, result_3salt, Size(3, 3));blur(equalLena_Salt, result_9salt, Size(9, 9));blur(equalLena_Gauss, result_3gauss, Size(3, 3));blur(equalLena_Gauss, result_9gauss, Size(9, 9));//显示不含噪声图像imshow("lenaGray", lenaGray);imshow("result_3", result_3);imshow("result_9", result_9);//显示不含噪声图像imshow("equalLena_Salt", equalLena_Salt);imshow("result_3salt", result_3salt);imshow("result_9salt", result_9salt);//显示不含噪声图像imshow("equalLena_Gauss", equalLena_Gauss);imshow("result_3gauss", result_3gauss);imshow("result_9gauss", result_9gauss);cout << "下面是方框滤波" << endl;waitKey(0);//等待函数用于显示图像,按下键盘任意键后退出Mat resultNorm, result;//方框滤波boxFilter()和sqrBoxFilter()boxFilter(lenaGray, resultNorm, -1, Size(3, 3), Point(-1, -1), true); //进行归一化boxFilter(lenaGray, result, -1, Size(3, 3), Point(-1, -1), false); //进行归一化//显示处理结果imshow("resultNorm", resultNorm);imshow("result", result);cout << "下面是高斯滤波" << endl;waitKey(0);//等待函数用于显示图像,按下键盘任意键后退出Mat result_5_G, result_9_G;//存放不含噪声滤结果,后面数字代表滤波器尺寸Mat result_5Gauss_G, result_9Gauss_G;//存放含高斯噪声滤结果,后面数字代表滤波器尺寸Mat result_5Salt_G, result_9Salt_G;//存放含椒盐噪声滤结果,后面数字代表滤波器尺寸GaussianBlur(lenaGray, result_5_G, Size(5, 5), 10, 20);GaussianBlur(lenaGray, result_5_G, Size(5, 5), 10, 20);GaussianBlur(equalLena_Gauss, result_5Gauss_G, Size(5, 5), 10, 20);GaussianBlur(equalLena_Gauss, result_9Gauss_G, Size(9, 9), 10, 20);GaussianBlur(equalLena_Salt, result_5Salt_G, Size(5, 5), 10, 20);GaussianBlur(equalLena_Salt, result_9Salt_G, Size(9, 9), 10, 20);//显示不含噪声图像imshow("lenaGray", lenaGray);imshow("result_5_G", result_5_G);imshow("result_9_G", result_9_G);//显示不含噪声图像imshow("equalLena_Salt", equalLena_Salt);imshow("result_5Gauss_G", result_5Gauss_G);imshow("result_9Gauss_G", result_9Gauss_G);//显示不含噪声图像imshow("equalLena_Gauss", equalLena_Gauss);imshow("result_5Salt_G", result_5Salt_G);imshow("result_9Salt_G", result_9Salt_G);waitKey(0);//等待函数用于显示图像,按下键盘任意键后退出return 0;}

滤波完成后:

在均值滤波中:对于椒盐噪声和高斯噪声的滤波结果,尺寸越大的滤波器,对于图像来说,滤波后的结果也越模糊,噪声产生的影响变小。如果想最大程度的去除噪声,采用均值滤波的形式的话,那么需要一个很大的尺寸,同时对图像的整体质量有较大的影响。

对椒盐噪声,由于我们的均值滤波是每一个像素值都贡献了相同作用,所以对于椒盐噪声来说,仍然可以看出图像中含有椒盐噪声,只不过椒盐噪声的颗粒没有那么亮,没有那么明显,但是椒盐噪声的颗粒变得更粗了。

在方框滤波中:方框滤波中如果进行归一化操作,所得到的结果与均值滤波的结果一致,若不进行归一化操作,那么有可能出现图像中数值远远大于255,但是在opencv中,会强制为255,所以导致整个图像中,较大的区域都为白色,而有纹理的恰恰是原图像中较暗的区域。

在高斯滤波中:顾名思义对高斯噪声的滤波更为理想。结果也会变得模糊,但是处理结果也较好。若图像中含有椒盐噪声,采用线性滤波的方式得到的结果不太理想。

相关文章:

opencv#30 线性滤波

均值滤波原理 均值滤波步骤 Step1:求和。 Step2:计算平均值。 所谓均值滤波&#xff0c;就是求平均值的意思。我们假设在一个3*3的范围内有一个图像&#xff0c;其中这个图像每一个像素可能含有噪声&#xff0c;也可能不含噪声&#xff0c;我们是不知道的&#xff0c;因此通…...

如何使用iPhone或iPad上的二维码共享Wi-Fi密码?这里有详细步骤

你有没有想过在不泄露网络密码的情况下与客人共享你的家庭或工作Wi-Fi?你肯定不是第一个这样想的人,我们很高兴地通知你,多亏了以下这个的变通方法,你现在可以使用iPhone或iPad做到这一点。 通常,如果你想让其他人访问网络,你需要共享你的Wi-Fi密码。苹果通过引入与任何…...

在游戏里开公司!基于ERNIE SDK的多智能体游戏应用

在虚拟世界有一座神奇的办公室&#xff0c;当你输入你的创业方向&#xff0c;办公室的智慧打工人们将团结合作&#xff0c;为你的项目勤劳奔走&#xff0c;并在过程中&#xff0c;把日报周报都写好&#xff0c;让你随时掌握项目进度和最终成果&#xff01;该项目基于ERNIE SDK开…...

【SpringCloud Nacos】 微服务治理介绍及Nacos引入初体验

文章目录 前言服务治理介绍什么是服务治理1、服务发现2、服务配置3、服务健康检测 常见的注册中心ZookeeperEurekaConsulNacos Nacos 简介Nacos 实战入门搭建nacos环境1、安装nacos2、配置nacos3、访问nacos 将商品微服务注册到 nacos1、在 pom. xml 中添加 nacos 的依赖2、在主…...

JavaEE进阶(6)SpringBoot 配置文件(作用、格式、properties配置文件说明、yml配置文件说明、验证码案例)

接上次博客&#xff1a;JavaEE进阶&#xff08;5&#xff09;Spring IoC&DI&#xff1a;入门、IoC介绍、IoC详解&#xff08;两种主要IoC容器实现、IoC和DI对对象的管理、Bean存储、方法注解 Bean)、DI详解&#xff1a;注入方式、总结-CSDN博客 目录 配置文件作用 Sprin…...

面包屑是什么

面包屑是网站导航中的一种可视化路径提示&#xff0c;通常以层次结构显示用户当前页面的位置&#xff0c;帮助用户了解他们在网站上的位置和浏览历史。这个术语来源于童话故事《汉赛尔与格莱特》中的面包屑小径&#xff0c;代表着一种追踪轨迹的方法。 假设你在一个电子商务网站…...

C++ 设计模式之责任链模式

【声明】本题目来源于卡码网&#xff08;卡码网KamaCoder&#xff09; 【提示&#xff1a;如果不想看文字介绍&#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 --什么是责任链模式&#xff08;第21种设计模式&#xff09; 责任链模式是⼀种行为型设计模式&am…...

HTML5与App封装技术将网站一键打包成App

HTML5&#xff1a;跨平台的利器HTML5作为一种先进的网页标记语言&#xff0c;其最大的优势在于跨平台性。开发者仅需编写一次代码&#xff0c;即可在各种操作系统和设备上运行&#xff0c;无需为每个平台单独开发App。这种“编写一次&#xff0c;运行处处”的模式&#xff0c;大…...

openssl3.2/test/certs - 060 - any.bad.com is excluded by CA2.

文章目录 openssl3.2/test/certs - 060 - any.bad.com is excluded by CA2.概述笔记END openssl3.2/test/certs - 060 - any.bad.com is excluded by CA2. 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 /*! * \file D:\my_dev\my_local_git_prj\study\openSSL\test…...

SpringBoot整理-数据库操作

在 Spring Boot 中进行数据库操作是一项常见的任务。Spring Boot 提供了多种方式来集成和操作数据库,使得与数据库的交互更为简便和高效。以下是在 Spring Boot 中进行数据库操作的几种主要方式: 1. Spring Data JPA 介绍: Spring Data JPA 是 Spring Data 的一部分,它简化了…...

IP被封怎么办?访问网站时IP被阻止?解决IP禁令全方法

相信很多人遇到过IP禁令&#xff1a;比如你在访问社交媒体、搜索引擎或电子商务网站时会被限制访问&#xff0c;又或者你的的账号莫名被封&#xff0c;这些由于网络上的种种限制我们经常会遭遇IP被封的情况&#xff0c;导致无法使用继续进行网络行动。在本文中&#xff0c;我们…...

利用aiohttp异步爬虫实现网站数据高效抓取

前言 大数据时代&#xff0c;网站数据的高效抓取对于众多应用程序和服务来说至关重要。传统的同步爬虫技术在面对大规模数据抓取时往往效率低下&#xff0c;而异步爬虫技术的出现为解决这一问题提供了新的思路。本文将介绍如何利用aiohttp异步爬虫技术实现网站数据抓取&#x…...

navicat连接postgresql、人大金仓等数据库报错

navicat连接postgresql、人大金仓数据库报错问题是一个偶现的问题&#xff0c;需要我们特别关注&#xff1a; 1、客户端连接人大金仓数据库 这里注意&#xff1a;navicat连接postgresql、人大金仓数据库时均选择postgresql类型&#xff0c;因为人大金仓数据库底层和psql数据库…...

AUTOSAR看门狗篇 -看门狗驱动(Wdg)

文章目录 功能介绍通用设计规则外部看门狗驱动内部看门狗驱动支持窗口看门狗的触发概念模块API介绍类型定义Wdg_ConfigType函数定义Wdg_InitWdg_SetModeWdg_SetTriggerConditionWdg_GetVersionInfo时序图看门狗初始化、设置触发条件...

数字图像处理:图像内插

图像内插 内插通常在图像放大、缩小旋转和几何校正等任务中使用。内插是用已知数据来估计未知位置的值的过程下面用—个简单的例子开始这—主题的探讨。假设大小为500500像素的—幅图像要放大1.5倍即放大到750750像素。一种简单的放大方法是&#xff0c;创建—个大小为750750像…...

Cantor表(刷题)(C语言)

个人博客主页&#xff1a;https://blog.csdn.net/2301_79293429?typeblog 专栏&#xff1a;https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。他是用下面这一张表来证明这一命题的&…...

linux install nvm

官网地址&#xff1a;https://github.com/nvm-sh/nvm 1、wget https://codeload.github.com/nvm-sh/nvm/tar.gz/refs/tags/v0.39.7 tar -zxvf v0.39.7 2、vim ~/.bashrc $HOMEroot export NVM_DIR"$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \…...

HTML 炫酷进度条

下面是代码 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>Light Loader - CodePen</title><style> html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr…...

Windows10上使Git Bash支持rsync命令操作步骤

rsync命令是linux上常用的工具之一&#xff0c;用于远程以及本地系统中拷贝/同步文件和文件夹。 Windows Git Bash默认并不支持rsync&#xff0c;如下图所示&#xff1a; 使Git Bash支持rsync命令操作步骤&#xff1a; 1.从https://repo.msys2.org/msys/x86_64/ 下…...

rust for循环里的所有权 - into_iter / iter / iter_mut

文章目录 1 遍历对象实质为 .into_iter() 生成的迭代器2 避免转移 .iter() / .iter_mut()3 for循环里自变量为什么不用加mut // for循环语法糖 for loop_variable in iterator {code() } // 解糖 {let result match IntoIterator::into_iter(iterator) {mut iter > loop {m…...

GitHub README-Template.md - README.md 模板

GitHub README-Template.md - README.md 模板 1. README-Template.md 预览模式2. README-Template.md 编辑模式References A template to make good README.md. https://gist.github.com/PurpleBooth/109311bb0361f32d87a2 1. README-Template.md 预览模式 2. README-Templat…...

【文本到上下文 #6】Word2Vec、GloVe 和 FastText

一、说明 欢迎来到“文本到上下文”博客的第 6 个系列。到目前为止&#xff0c;我们已经探索了自然语言处理的基础知识、应用和挑战。我们深入研究了标记化、文本清理、停用词、词干提取、词形还原、词性标记和命名实体识别。我们的探索包括文本表示技术&#xff0c;如词袋、TF…...

yolov5 opencv dnn部署自己的模型

yolov5 opencv dnn部署自己的模型 github开源代码地址使用github源码结合自己导出的onnx模型推理自己的视频推理条件c部署c 推理结果 github开源代码地址 yolov5官网还提供的dnn、tensorrt推理链接本人使用的opencv c github代码,代码作者非本人&#xff0c;也是上面作者推荐的…...

Cortex-M4处理器 电源管理

Cortex-M4处理器的休眠模式可以降低功耗。 模式可以是以下一种或两种&#xff1a; 休眠模式停止处理器时钟深度睡眠模式停止系统时钟&#xff0c;关闭锁相环和闪存。 如果设备实现了两种提供不同级别省电的睡眠模式&#xff0c;那么SCR的SLEEPDEEP位将选择使用哪种睡眠模式。…...

Linux 驱动开发基础知识——编写LED驱动程序(三)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…...

YOLOv8 视频识别

YOLOv8 是一种目标检测算法&#xff0c;用于识别视频中的物体。要控制视频识别中的帧&#xff0c;可以通过以下方式来实现&#xff1a; 设置帧率&#xff1a;可以通过设置视频的帧率来控制视频的播放速度&#xff0c;从而影响视频识别的速度。 跳帧处理&#xff1a;可以通过跳…...

elementplus Dialog 对话框设置距离页面顶部的距离

默认为 15vh&#xff0c;当弹窗过于高的时候&#xff0c;这个距离其实是不合适的 <el-dialogv-model"dialogVisible"title"Tips"width"30%":before-close"handleClose"top"6vh"><span>This is a message</s…...

便捷接口调测:API 开发工具大比拼 | 开源专题 No.62

hoppscotch/hoppscotch Stars: 56.1k License: MIT Hoppscotch 是一个开源的 API 开发生态系统&#xff0c;主要功能包括发送请求和获取实时响应。该项目具有以下核心优势&#xff1a; 轻量级&#xff1a;采用简约的 UI 设计。快速&#xff1a;实时发送请求并获得响应。支持多…...

openssl3.2/test/certs - 008 - root-nonca trust variants: +serverAuth +anyEKU

文章目录 openssl3.2/test/certs - 008 - root-nonca trust variants: serverAuth anyEKU概述笔记END openssl3.2/test/certs - 008 - root-nonca trust variants: serverAuth anyEKU 概述 openssl3.2 - 官方demo学习 - test - certs 笔记 // \file my_openssl_win_log_doc…...

cg插画设计行业怎么样,如何学习插画设计

插画设计行业是一个充满创意和艺术性的行业&#xff0c;随着数字化时代的不断发展&#xff0c;cg插画的应用范围越来越广泛&#xff0c;市场需求也在逐年增长。以下是一些关于acg插画设计行业的现状和发展趋势&#xff1a; 市场需求不断增长&#xff1a;随着广告、媒体、影视、…...

wordpress 清除插件/seo综合查询站长工具关键词

首先下载Eclipse&#xff0c;我选择的是 Eclipse IDE for Java Developers64位版本&#xff0c;下载下来之后解压缩到喜欢的位置然后双击Eclipse.exe启动 然后开始新建项目&#xff0c;File -> New Java Project&#xff0c;项目名随便写&#xff0c;如下图 右键src文件夹&a…...

做设备租赁的网站/百度识图在线

现在不少框架都效仿ROR的ActiveRecord&#xff0c;将model直接作为数据库交互层。而许多业务大都不止针对一张表&#xff0c;有的还包含数据库之外的逻辑&#xff0c;那么我只好把这些业务逻辑放在控制器里处理。这是不是违背了控制器的原意---连接模型和视图的桥梁应不应该在数…...

做电影网站怎么赚钱/莆田百度seo公司

继承&#xff1a;extends. 继承的优点&#xff1a;代码的可重用性。子类可以扩展父类的属性和方法。父类的属性和方法可用于子类。 使用“is&#xff0c;a”关系判断继承。 父类&#xff1a; public class Pet{private String name; //名字private int health; //健康值private…...

小红书推广文案/外贸网站推广优化

Example028 原文链接&#xff1a;Example028 题目 线性表 [a1, a2, a3, ..., an] 中的元素递增有序且按顺序存储于计算机内。要求设计一个算法&#xff0c;完成用最少时间在表中查找数值为 x 的元素&#xff0c;若找到&#xff0c;则将其与后继元素位置相交换&#xff0c;若找…...

商城版网站制作/万能软文模板

D3DSURFACE_DESC D3DSURFACE_DESC Desc; tex->GetLevelDesc( 0, &Desc ); Width Desc.Width; Height Desc.Height; 转载于:https://www.cnblogs.com/lancidie/archive/2011/03/16/1985788.html...

纸业公司网站模板源文件/网上的推广

7月18日&#xff0c;资阳市政府和华为公司签约&#xff0c;双方将联手打造资阳天府云计算中心。项目包括资阳大数据平台、智能制造平台、互联网创客平台&#xff0c;项目将立足资阳&#xff0c;服务周边地区&#xff0c;助推资阳建成西南地区重要数据中心和云计算产业发展基地。…...