07- OpenCV:模糊图像

news2024/11/18 15:37:08

目录

一、模糊原理

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

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个图的差异,边缘还在保留的。

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

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

相关文章

【问题记录】数据处理部分正常部分异常

一&#xff0c;问题现象 正常处理效果为压缩到-12db&#xff0c;一部分压缩效果正确&#xff0c;一部分数据处理效果不正确。准确来说&#xff0c;只有1/4的数据处理正确。 二&#xff0c;问题原因 传入process的size不正确&#xff0c;导致读出来4096个字节&#xff0c;但…

SQLyog软件安装(保姆级别)

SQLyog 安装配置使用 首先下载SQLyog 软件&#xff0c;并解压 选择自己操作系统的版本 双击点击 .exe 文件&#xff0c;进行安装 选择安装语言&#xff0c;默认中文&#xff0c;直接点击【OK】即可 点击【下一步】 先【勾选】同意协议&#xff0c;再点击【下一步】 …

Windows项目部署

目录 一.安装jdk 1.1 安装 1.2 配置 二.安装Tomcat 2.1 安装 2.2 配置防火墙 三. 安装MySQL 3.1 安装 2.2 内部连接 3.3 外部连接 四. 部署项目 4.1 项目部署 4.2 修改mysql的用户密码 一.安装jdk 1.1 安装 选择jdk安装包双击进行傻瓜式安装即可&#xff0c;这里注意记住安…

Gogs - 管理协作者

Gogs - 管理协作者 References 仓库设置 管理协作者 权限设置 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

【目标检测】Anchor-based模型:基于K-means算法获取自制数据集的Anchor(yolo源码)

在Anchor-based目标检测模型中&#xff0c;根据数据集选择合适的Anchor有利于加快模型的收敛速度以及减少模型的边框预测误差。本篇文章首先介绍Anchor在目标检测模型中的作用&#xff1b;然后介绍K-means聚类算法&#xff1b;最后介绍yolo源码中自制数据集的Anchor的获取方法。…

企业如何做到安全又极速的分发传输大文件

在当代企业运营中&#xff0c;文件的传输和分发是至关重要的任务。然而&#xff0c;随着文件体积的增大和信息敏感性的凸显&#xff0c;企业需要找到一种既安全又能够高效传输大文件的方法。本文将深入探讨如何在企业环境中实现安全又高效的大文件传输。 一、分发大文件时需要注…

.NET core 中的Kestrel 服务器

什么是Kestrel&#xff1f; Kestrel 是一个跨平台的Web服务器&#xff0c;会默认在ASP.NET Core 项目模板中对其进行配置。未使用 IIS 托管时&#xff0c;ASP.NET Core 项目模板默认使用 Kestrel。 Kestrel 的功能包括&#xff1a; 跨平台&#xff1a;Kestrel 是可在 Window…

spring boot mybatis-plus dynamic-datasource 配置文件 相关依赖环境配置

spring boot mybatis-plus dynamic-datasource 配置文件 相关依赖环境配置 ##yaml配置 server:port: 8866servlet:context-path: /yymtomcat:max-threads: 300connection-timeout: 57000max-connections: 500connection-timeout: 57000 spring:datasource:dynamic:primary: m…

【纯CSS特效源码】(一)几款漂亮的文字特效

1.渐变文字 使用background: -webkit-linear-gradient(#d8ecec, #2d888b);定义背景渐变色 并使用-webkit-text-fill-color: transparent;指定了文本字符的填充颜色 <!DOCTYPE html> <html><style>body {background-color: #111;}#content {position: abso…

如何关闭iPhone 14或14 Pro Max,这里有详细步骤

你刚买了新的iphone 14或iphone 14 pro max&#xff0c;迫不及待地想开始使用它。但如果你需要关闭它怎么办&#xff1f;有几种方法可以用来关闭这两种设备。 如何关闭iPhone 14 你可以通过每个人都熟悉的老式侧按钮轻松关闭iPhone 14&#xff0c;也可以通过面部识别关闭它。 …

BitMap源码解析

文章目录 前言数据结构添加与删除操作 JDK中BitSet源码解析重要成员属性初始化添加数据清除数据获取数据size和length方法集合操作&#xff1a;与、或、异或优缺点 前言 为什么称为bitmap&#xff1f; bitmap不仅仅存储介质以及数据结构不同于hashmap&#xff0c;存储的key和v…

【复现】Spider-Flow RCE漏洞(CVE-2024-0195)_16

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 Spider Flow 是一个高度灵活可配置的爬虫平台&#xff0c;用户无需编写代码&#xff0c;以流程图的方式&#xff0c;即可实现爬虫…

乱码问题汇总

写在前面 在工作中经常会碰到各种莫名其妙的乱码问题&#xff0c;但通过之前的学习&#xff1a;字符集&字符编码-CSDN博客 &#xff0c;可以知道乱码的根本原因就是使用和数据源编码不一样的编码解码导致。 如&#xff1a;BIG5解码GB2312编码内容&#xff0c;编解码不一致…

面试算法118:多余的边

题目 树可以看成无环的无向图。在一个包含n个节点&#xff08;节点标号为从1到n&#xff09;的树中添加一条边连接任意两个节点&#xff0c;这棵树就会变成一个有环的图。给定一个在树中添加了一条边的图&#xff0c;请找出这条多余的边&#xff08;用这条边连接的两个节点表示…

Unity中URP下实现深度贴花

文章目录 前言一、场景设置二、实现思路1、通过深度图求出像素所在视图空间的Z值2、通过模型面片的求出像素在观察空间下的坐标值3、结合两者求出 深度图中像素的 XYZ值4、再将此坐标转换到模型的本地空间&#xff0c;把XY作为UV来进行纹理采样 三、URP下实现1、通过深度图求出…

2024年最新软件测试面试题

Part1 1、你的测试职业发展是什么&#xff1f;【文末有面试文档免费领取】 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做…

Spark的内核调度

目录 概述 RDD的依赖 DAG和Stage DAG执行流程图形成和Stage划分 Stage内部流程 Spark Shuffle Spark中shuffle的发展历程 优化前的Hash shuffle 经过优化后的Hash shuffle Sort shuffle Sort shuffle的普通机制 Job调度流程 Spark RDD并行度 概述 Spark内核调度任务: 1…

力扣67. 二进制求和算法

一、【写在前面】 这道题需要&#xff0c;给你两个字符串比如 a "1010", b "1011"答案是&#xff1a;"10101" 然后需要你给出计算结果&#xff0c;那么我们很容易想到两种做法 1. 调库做法&#xff1a;直接转化为整数&#xff0c;然后用内…

python统计分析——小提琴图(sns.violinplot)

参考资料&#xff1a;用python动手学统计学&#xff0c;帮助文档 使用seaborn.violinplot()函数绘制箱线图 sns.violinplot()的做出来的小提琴图比plt.violinplot()更像小提琴。 import numpy as np import pandas as pd from matplotlib import pyplot as plt import seabo…

【自控实验】4. 数字仿真实验

本科课程实验报告&#xff0c;有太多公式和图片了&#xff0c;干脆直接转成图片了 仅分享和记录&#xff0c;不保证全对 使用matlab中的simulink进行仿真 实验内容 线性连续控制系统的数字仿真 根据开环传递函数G(S)的不同&#xff0c;完成两个线性连续控制系统的仿真。 …