07- OpenCV:模糊图像

目录

一、模糊原理

二、模糊的相关处理方法:

1、均值滤波(归一化盒子滤波)

2、高斯滤波(正态分布的形状)

3、中值模糊

4、双边模糊算法(美容软件)

5、相关代码:

6、几种模糊算法的比较:


一、模糊原理

(1)Smooth/Blur 是图像处理中最简单和常用的操作之一

(2)使用该操作的原因之一就为了给图像预处理时候减低噪声(消除数字噪声)

指图像中不该出现的外来像素,通常由电子干扰产生。看起来就像图像被弄脏了,布满一些细小的糙点。

(3)使用Smooth/Blur操作其背后是数学的卷积计算

(4)通常这些卷积算子计算都是线性操作,所以又叫线性滤波

假设有6x6的图像像素点矩阵。(均值滤波的过程)

卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像个像素点值之和取平均值赋给中心红色像素作为它卷积处理之后新的像素值。每次移动一个像素格。

二、模糊的相关处理方法:

1、均值滤波(归一化盒子滤波)

(1)公式:卷积和系数都是1

对应的图形大概是:没有高的也没有低的

(2)相关API:

 blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));

Filter2D也可以做模糊,自己定义一个kenel赋值进去。

(3)一般模糊用3*3模糊就行,主要控制x、y的值,要是x方向的模糊多一些,就加大数值,好像一个鬼影一样。

2、高斯滤波(正态分布的形状)

(1)公式:权重不一样

对应的图形大概是:

(2)相关API:

- GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay);

其中Size(x, y), x, y 必须是正数而且是奇数

(3)效果:

看着高斯模糊比均值还要清晰一些。

高斯基于权重模糊,均值滤波基于均值模糊;

3、中值模糊

(1)中值滤波:统计排序滤器

(2)中值滤波对椒盐噪声有很好的抑制作用

(3)相关API:

medianBlur(Mat src, Mat dest, ksize)

备注:中值模糊的ksize大小必须是大于1而且必须是奇数。

(4)功效:比如一张图片有点点,人脸有斑点,就可以很好去掉这些斑点。(椒盐噪声)

4、双边模糊算法(美容软件)

(1)基于高斯双边模糊;

(2)相关API:

bilateralFilter(src, dest, d=15, 150, 3);

备注:

 1)15 –计算的半径,半径之内的像数都会被纳入计算,如果提供-1 则根据sigma space参数取值

 2)150 – sigma color 决定多少差值之内的像素会被计算

 3)3 – sigma space 如果d的值大于0则声明无效,否则根据它来计算d值

(3)功效:

双边模糊:边缘信息更多保留,轮廓更加明显,相当于加了滤镜、磨皮;

高斯模糊:整个图片都模糊了;

与filter2D比较,效果更加好,有美颜的效果;

5、相关代码:

(1)均值滤波、高斯模糊的接口例子

#include <opencv2/opencv.hpp> 
#include <iostream> 
using namespace cv;

int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("D:/vcprojects/images/test.png");
	if (!src.data) {
		printf("could not load image...\n");
		return -1;
	}
	char input_title[] = "input image";
	char output_title[] = "blur image";
	namedWindow(input_title, CV_WINDOW_AUTOSIZE);
	namedWindow(output_title, CV_WINDOW_AUTOSIZE);
	imshow(input_title, src);

	blur(src, dst, Size(11, 11), Point(-1, -1));
	imshow(output_title, dst);

	Mat gblur;
	GaussianBlur(src, gblur, Size(11, 11), 11, 11);
	imshow("gaussian blur", gblur);

	waitKey(0);
	return 0;
}

(2)中值滤波、双边模糊、高斯模糊、filter2D几个接口的应用。

#include <opencv2/opencv.hpp> 
#include <iostream> 
using namespace cv;

int main(int argc, char** argv) {
	Mat src, dst;
	src = imread("D:/vcprojects/images/cvtest.png");
	if (!src.data) {
		printf("could not load image...\n");
		return -1;
	}
	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	//medianBlur(src, dst, 3);
	bilateralFilter(src, dst, 15, 100, 5);
	namedWindow("BiBlur Filter Result", CV_WINDOW_AUTOSIZE);
	imshow("BiBlur Filter Result", dst);

	Mat resultImg;
	Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
	filter2D(dst, resultImg, -1, kernel, Point(-1, -1), 0);
	imshow("Final Result", resultImg);

	waitKey(0);
	return 0;

}
6、几种模糊算法的比较:

(1)均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重

(2)高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同

(3)高斯双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变(美颜相机的算法)

这个图讲解:输入一个图,输出一个图,中间的是卷积核,分为:空域核和值域核;

                空域核指的是:在空间来说,3*3、5*5都有自己的权重;

                值域核:指像素集来说,对于像素集在一定的范围内,就模糊输出,2个图的差异,边缘还在保留的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网页设计达人的首选!这6款顶级工具助你设计完美网页!

即时设计 即时设计是国内为当地设计师量身定制的完全免费的网页设计工具。是集成原型、设计、交互、交付等所有网页设计需求的一站式设计平台。内部集成了大量优秀的插件&#xff0c;包括组件、图标、字体、色板、填充等功能&#xff0c;基本涵盖了网页设计师常用的大部分工具…

Redis常见命令

我们可以通过Redis的中文文档&#xff1a;Redis命令中心&#xff08;Redis commands&#xff09; -- Redis中国用户组&#xff08;CRUG&#xff09;&#xff0c;来学习各种命令。 也可以通过菜鸟教程官网来学习&#xff1a;Redis 键(key) | 菜鸟教程 一、Redis数据结构介绍 Red…

Elasticsearch--Master选举

角色 主节点&#xff08;active master&#xff09;&#xff1a;一般指的是活跃的主节点&#xff0c;避免负载任务&#xff0c;主节点主要用来管理集群&#xff0c;专用master节点仍将充当协调节点 候选节点&#xff08;master-eligible nodes&#xff09;&#xff1a;默认具备…

堆叠线:实现高效连接和数据传输的利器

堆叠线是一种常见的网络连接解决方案&#xff0c;主要应用于数据中心和企业网络等领域。本文将介绍堆叠线的定义、分类、作用以及与光纤线的区别&#xff0c;同时提供详细的堆叠线接法和相关问题的解答。 第一部分&#xff1a;堆叠线是什么 堆叠线是一种用于连接网络设备的高…

一行代码给Button添加一个光标焦点动画:得着焦点按钮放大,失去焦点按钮恢复

当光标进入Button的时候&#xff0c;也就是Button得着焦点时&#xff0c;Button出现放大效果&#xff0c;失去焦点的时候&#xff0c;恢复原来的尺寸。 本例仅供学习交流之用 一、效果 按钮得着焦点&#xff0c;放大 按钮失去焦点&#xff0c;恢复 二、给按钮添加动效 得着…

vbs读取数据库值前端FlexGrid前导0出不来的原因

vbs读取数据库值前端FlexGrid前导0出不来的原因 原因 系统设置问题 解决 修改系统默认数值显示&#xff1a; 1&#xff09;控制面板找到“区域”&#xff0c;点击“更改日期、时间和数字模式”&#xff0c;在弹出窗口点击“其他设置” 2&#xff09;在数字一栏中的“显示前…

Java的helloworld、IDEA一些快捷键、导入模块

一、Java的helloworld IDEA管理Java程序的结构 1.project&#xff08;项目、工程&#xff09; 2.moudule&#xff08;模块&#xff09; 3.package&#xff08;包&#xff09; 4.class&#xff08;类&#xff09; 上级包含多个下级&#xff0c;开发程序也是创建工程再创建…

【Web】CTFSHOW PHP文件包含刷题记录(全)

温故知新。 目录 web78 web79 web80 web81 web82 web83 web84 web85 web86 web87 web88 web78 伪协议base64编码直接读出文件内容就行 ?filephp://filter/convert.base64-encode/resourceflag.php web79 一眼data伪协议包含php脚本 ?filedata://text/plain,<…

2020年认证杯SPSSPRO杯数学建模C题(第二阶段)抗击疫情,我们能做什么全过程文档及程序

2020年认证杯SPSSPRO杯数学建模 C题 抗击疫情&#xff0c;我们能做什么 原题再现&#xff1a; 2020 年 3 月 12 日&#xff0c;世界卫生组织&#xff08;WHO&#xff09;宣布&#xff0c;席卷全球的冠状病毒引发的病毒性肺炎&#xff08;COVID-19&#xff09;是一种大流行病。…

JAVA微信营销平台源码带使用文档

JAVA微信营销平台源码带使用文档 开发环境&#xff1a; Eclipse版本&#xff1a;Eclipse Java EE IDE for Web Developers. JDK版本&#xff1a;jdk7 Tomcat版本&#xff1a;tomcat7 Mysql&#xff1a;mysql5.0以上

Redis 为什么要分16个库

目录 一. 前言 二. 16 个数据库的由来 三. 正解 Redis 数据库概念 四. 集群环境下的 Redis 实例 五. 总结 一. 前言 在实际的项目中&#xff0c;Redis 常被用作缓存、分布式锁、消息队列等的解决方案。但是在搭建好Redis 服务后&#xff0c;Redis 默认创建了16个数据库&am…

虹科新闻丨LIBERO医药冷链PDF温度计完成2024年航空安全鉴定,可安全空运!

来源&#xff1a;虹科环境监测技术 虹科新闻丨LIBERO医药冷链PDF温度计完成2024年航空安全鉴定&#xff0c;可安全空运&#xff01; 原文链接&#xff1a;https://mp.weixin.qq.com/s/XHT4kU27opeKJneYO0WqrA 欢迎关注虹科&#xff0c;为您提供最新资讯&#xff01; 虹科LIBE…

php内置函数-文件包含的函数

目录 1.include 2.require 3.include_once 4. require_once 1.include 可以将别的文件直接引用过来&#xff08;被引用的文件含有打印代码的话&#xff0c;会直接打印&#xff09;&#xff0c;如果失败了&#xff0c;会返回一条警告&#xff0c;文件会继续执行下去&#…

超越5大最先进的文本到视频系统!MagicVideo-V2:多阶段高保真视频生成框架(字节)

本项工作介绍了MagicVideo-V2&#xff0c;将文本到图像模型、视频运动生成器、参考图像embedding模块和帧内插模块集成到端到端的视频生成流程中。由于这些架构设计的好处&#xff0c;MagicVideo-V2能够生成具有极高保真度和流畅度的美观高分辨率视频。通过大规模用户评估&…

Python办公自动化 – 自动化文本翻译和Oracle数据库操作

Python办公自动化 – 自动化文本翻译和Oracle数据库操作 以下是往期的文章目录&#xff0c;需要可以查看哦。 Python办公自动化 – Excel和Word的操作运用 Python办公自动化 – Python发送电子邮件和Outlook的集成 Python办公自动化 – 对PDF文档和PPT文档的处理 Python办公自…

11.3、信赖域策略优化算法TRPO强化学习-运用实践

基于LunarLander登陆器的TRPO强化学习&#xff08;含PYTHON工程&#xff09; TRPO强化学习算法主要分为3个部分&#xff0c;分别介绍其理论、细节、实现 本文主要介绍TRPO的理论和代码的对应、实践 TRPO系列&#xff08;TRPO是真的复杂&#xff0c;全部理解花费了我半个月的…

C++算法学习心得五.二叉树(3)

1.合并二叉树&#xff08;617题&#xff09; 题目要求&#xff1a; 给定两个二叉树&#xff0c;想象当你将它们中的一个覆盖到另一个上时&#xff0c;两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠&#xff0c;那么将他们…

红日靶场5

目录 前言 外网渗透 信息收集 1、arp探测 2、nmap 3、nikto 4、whatweb 5、gobuster 6、dirsearch 漏洞探测 ThinKPHP漏洞 漏洞利用 get shell 内网渗透 信息收集 CS 启动&#xff01; CS连接 CS信息收集 1、hashdump 2、猕猴桃 3、端口扫描 MSF启动&…

解决“百度网盘启动缓慢”问题

最近在使用百度网盘&#xff0c;双击桌面的《百度网盘》图标&#xff0c;发现有等好几分钟&#xff0c;软件才会启动。百度网盘启动太慢了&#xff0c;后面发现百度网盘&#xff0c;使用dll注入技术&#xff0c;附加到很多不相干的进程里&#xff0c;比如附加explorer进程、附加…

构建基于RHEL8系列(CentOS8,AlmaLinux8,RockyLinux8等)的支持63个常见模块的PHP8.1.20的RPM包

本文适用&#xff1a;rhel8系列&#xff0c;或同类系统(CentOS8,AlmaLinux8,RockyLinux8等) 文档形成时期&#xff1a;2023年 因系统版本不同&#xff0c;构建部署应略有差异&#xff0c;但本文未做细分&#xff0c;对稍有经验者应不存在明显障碍。 因软件世界之复杂和个人能力…